Napravit nekompatibilní prostředky pomocí Azure Policy

Prostředky, které nejsou kompatibilní se zásadami deployIfNotExists nebo Modify , je možné do stavu, který je v souladu s nápravou, předávat do odpovídajícího stavu. Nápravu je možné provést tím, že se dá pokyn Azure Policy spustit efekt deployIfNotExists nebo upravit operace přiřazené zásady u stávajících prostředků a předplatných, ať už jde o skupinu pro správu, předplatné, skupinu prostředků nebo jednotlivý prostředek. Tento článek popisuje kroky potřebné k pochopení a provedení nápravy Azure Policy.

Jak funguje Oprava zabezpečení

Když Azure Policy spustí šablonu v definici zásady deployIfNotExists , použije spravovanou identitu. Azure Policy vytvoří spravovanou identitu pro každé přiřazení, ale musí obsahovat podrobnosti o rolích, které mají udělit spravovanou identitu. Pokud ve spravované identitě chybí role, zobrazí se při přiřazování zásady nebo iniciativy chyba. Při použití portálu Azure Policy automaticky uděluje spravované identitě uvedené role po spuštění přiřazení. Při použití sady SDK musí být role uděleny manuálně spravované identitě. Umístění spravované identity nemá vliv na jeho operaci s Azure Policy.

Snímek obrazovky zásad deployIfNotExists, ve které chybí definované oprávnění ke spravované identitě

Důležité

V následujících scénářích musí mít spravovaná identita přiřazení manuálně udělený přístup nebo dojde k chybě nasazení nápravy:

  • Pokud je přiřazení vytvořeno prostřednictvím sady SDK
  • Pokud se prostředek upravený pomocí deployIfNotExists nebo Upravit nachází mimo obor přiřazení zásady.
  • Pokud šablona přistupuje k vlastnostem v prostředcích mimo obor přiřazení zásady

Konfigurace definice zásad

Prvním krokem je definování rolí, které deployIfNotExists a mění v definici zásady, aby se úspěšně nasadil obsah šablony, která je k dispozici. Ve vlastnosti Details přidejte vlastnost roleDefinitionIds . Tato vlastnost je pole řetězců, které se shodují s rolemi ve vašem prostředí. Úplný příklad najdete v příkladech deployIfNotExists nebo v příkladech pro Úpravy.

"details": {
    ...
    "roleDefinitionIds": [
        "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
        "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
    ]
}

Vlastnost roleDefinitionIds používá úplný identifikátor prostředku a nebere v úvahu krátký roleName role. K získání ID pro roli Přispěvatel ve vašem prostředí použijte následující kód:

az role definition list --name 'Contributor'

Ruční konfigurace spravované identity

Při vytváření přiřazení pomocí portálu Azure Policy generuje spravovanou identitu a udělí jí role definované v roleDefinitionIds. V následujících podmínkách je nutné provést kroky pro vytvoření spravované identity a přiřazení oprávnění k tomuto účelu ručně:

  • Při použití sady SDK (například Azure PowerShell)
  • Když šablona upraví prostředek mimo obor přiřazení
  • Když šablona čte prostředek mimo obor přiřazení

Vytvoření spravované identity pomocí PowerShellu

Aby bylo možné vytvořit spravovanou identitu během přiřazování zásady, umístění musí být definováno a AssignIdentity použito. následující příklad získá definici předdefinované zásady nasazení SQL DB transparentní šifrování dat, nastaví cílovou skupinu prostředků a pak vytvoří přiřazení.

# Login first with Connect-AzAccount if not using Cloud Shell

# Get the built-in "Deploy SQL DB transparent data encryption" policy definition
$policyDef = Get-AzPolicyDefinition -Id '/providers/Microsoft.Authorization/policyDefinitions/86a912f6-9a06-4e26-b447-11b16ba8659f'

# Get the reference to the resource group
$resourceGroup = Get-AzResourceGroup -Name 'MyResourceGroup'

# Create the assignment using the -Location and -AssignIdentity properties
$assignment = New-AzPolicyAssignment -Name 'sqlDbTDE' -DisplayName 'Deploy SQL DB transparent data encryption' -Scope $resourceGroup.ResourceId -PolicyDefinition $policyDef -Location 'westus' -AssignIdentity

$assignmentProměnná nyní obsahuje ID objektu zabezpečení spravované identity společně se standardními hodnotami vrácenými při vytváření přiřazení zásady. Dá se k němu dostat prostřednictvím $assignment.Identity.PrincipalId .

Udělení definovaných rolí pomocí PowerShellu

nová spravovaná identita musí dokončit replikaci prostřednictvím Azure Active Directory před tím, než bude možné udělit potřebné role. Po dokončení replikace následující příklad provede iteraci definice zásady v $policyDef pro roleDefinitionIds a pomocí New-AzRoleAssignment udělí nové spravované identitě role.

# Use the $policyDef to get to the roleDefinitionIds array
$roleDefinitionIds = $policyDef.Properties.policyRule.then.details.roleDefinitionIds

if ($roleDefinitionIds.Count -gt 0)
{
    $roleDefinitionIds | ForEach-Object {
        $roleDefId = $_.Split("/") | Select-Object -Last 1
        New-AzRoleAssignment -Scope $resourceGroup.ResourceId -ObjectId $assignment.Identity.PrincipalId -RoleDefinitionId $roleDefId
    }
}

Udělení definovaných rolí prostřednictvím portálu

Existují dva způsoby, jak udělit spravované identitě přiřazení definované role pomocí portálu, pomocí řízení přístupu (IAM) nebo úpravou přiřazení zásad nebo iniciativ a výběrem možnosti Uložit.

Chcete-li přidat roli ke spravované identitě přiřazení, postupujte podle následujících kroků:

  1. Spusťte službu Azure Policy v Azure Portal tak, že vyberete všechny služby a pak vyhledáte a vyberete zásadu.

  2. Na levé straně stránky služby Azure Policy vyberte Přiřazení.

  3. Vyhledejte přiřazení, které má spravovanou identitu, a vyberte název.

  4. Na stránce pro úpravy vyhledejte vlastnost ID přiřazení . ID přiřazení bude vypadat nějak takto:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    Název spravované identity je poslední částí ID prostředku přiřazení, která je 2802056bfc094dfb95d4d7a5 v tomto příkladu. Zkopírujte tuto část ID prostředku přiřazení.

  5. Přejděte do prostředku nebo do nadřazeného kontejneru prostředky (skupina prostředků, předplatné, skupina pro správu), která potřebuje ruční přidání definice role.

  6. Na stránce prostředky vyberte odkaz řízení přístupu (IAM) a pak v horní části stránky řízení přístupu vyberte + Přidat přiřazení role .

  7. Vyberte odpovídající roli, která odpovídá roleDefinitionIds z definice zásady. Ponechte možnost přiřadit přístup k nastavení na výchozí hodnotu uživatel, skupina nebo aplikace služby Azure AD. Do pole Vybrat vložte nebo zadejte část ID prostředku přiřazení, která se nachází dříve. Po dokončení hledání vyberte objekt se stejným názvem pro výběr ID a vyberte Uložit.

Vytvoření úlohy nápravy

Vytvoření úlohy nápravy prostřednictvím portálu

Během hodnocení určuje přiřazení zásad s deployIfNotExists nebo úpravou efektů, jestli existují nekompatibilní prostředky nebo odběry. Pokud se najde nekompatibilní prostředky nebo odběry, podrobnosti najdete na stránce o nápravě . Společně se seznamem zásad, které mají nekompatibilní prostředky nebo odběry, je možnost aktivovat úlohu nápravy. Tato možnost vytvoří nasazení ze šablony deployIfNotExists nebo operace Úpravy .

Chcete-li vytvořit úlohu nápravy, postupujte podle následujících kroků:

  1. Spusťte službu Azure Policy v Azure Portal tak, že vyberete všechny služby a pak vyhledáte a vyberete zásadu.

    Snímek obrazovky s vyhledáváním zásad ve všech službách

  2. Na levé straně stránky Azure Policy vyberte náprava .

    Snímek obrazovky s uzlem pro nápravu na stránce zásad

  3. Všechna přiřazení zásad deployIfNotExists a Upravit s nekompatibilními prostředky jsou obsažená v zásadách, které se mají opravit na kartě a v tabulce dat. Vyberte zásady s prostředky, které nedodržují předpisy. Otevře se stránka Nová úloha nápravy .

    Poznámka

    Alternativní způsob, jak otevřít stránku nápravné úlohy , je najít a vybrat zásadu na stránce dodržování předpisů a pak vybrat tlačítko pro Vytvoření úlohy nápravy .

  4. Na stránce Nová úloha nápravy vyfiltrujte prostředky, které se mají opravit, pomocí teček oboru a vyberte podřízené prostředky, ze kterých je zásada přiřazena (včetně směrem k jednotlivým objektům prostředku). Kromě toho použijte rozevírací seznam umístění k dalšímu filtrování prostředků. Budou opraveny pouze prostředky uvedené v tabulce.

    Snímek obrazovky uzlu opravit problém a mřížku prostředků, které se mají opravit

  5. Spusťte úlohu nápravy, jakmile se prostředky vyfiltrují výběrem možnosti opravit. Na kartě úlohy opravy se otevře stránka kompatibilita zásad, ve které se zobrazí stav průběhu úkolů. Nasazení vytvořená úlohou nápravy začínají hned.

    Snímek obrazovky s kartou nápravné úlohy a průběh stávajících úloh nápravy

  6. Kliknutím na úlohu nápravy ze stránky dodržování zásad získáte podrobnosti o průběhu. Filtrování použité pro úlohu se zobrazí spolu se seznamem prostředků, které jsou opraveny.

  7. Na stránce úloha nápravy vyberte a podržte (nebo klikněte pravým tlačítkem) u prostředku, abyste zobrazili nasazení nápravné úlohy nebo prostředku. Na konci řádku výběrem možnosti související události zobrazíte podrobnosti, jako je například chybová zpráva.

    Snímek obrazovky kontextové nabídky prostředku na kartě Úloha napravit

Prostředky nasazené prostřednictvím nápravné úlohy se přidají na kartě nasazené prostředky na stránce dodržování zásad.

Vytvoření úlohy nápravy pomocí Azure CLI

Pokud chcete vytvořit úlohu nápravy pomocí Azure CLI, použijte az policy remediation příkazy. Nahraďte {subscriptionId} ID předplatného a {myAssignmentId} DEPLOYIFNOTEXISTS nebo upravte ID přiřazení zásad.

# Login first with az login if not using Cloud Shell

# Create a remediation for a specific assignment
az policy remediation create --name myRemediation --policy-assignment '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'

Další příkazy a příklady pro nápravu najdete v tématu AZ Policy reoprava .

Vytvoření úlohy nápravy pomocí Azure PowerShell

chcete-li vytvořit úlohu nápravy pomocí Azure PowerShell, použijte Start-AzPolicyRemediation příkazy. Nahraďte {subscriptionId} ID předplatného a {myAssignmentId} DEPLOYIFNOTEXISTS nebo upravte ID přiřazení zásad.

# Login first with Connect-AzAccount if not using Cloud Shell

# Create a remediation for a specific assignment
Start-AzPolicyRemediation -Name 'myRemedation' -PolicyAssignmentId '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'

Další rutiny a příklady pro nápravu najdete v tématu AZ. PolicyInsights Module.

Vytvoření úlohy nápravy během přiřazování zásad v Azure Portal

Jednodušší způsob, jak vytvořit úlohu nápravy, je provést z Azure Portal během přiřazování zásad. Pokud je definice zásady, která má být přiřazena, deployIfNotExists nebo modifikací , průvodce na kartě náprava nabízí možnost vytvořit úlohu nápravy . Pokud je vybraná tato možnost, vytvoří se úloha nápravy ve stejnou dobu jako přiřazení zásady.

Další kroky