Niet-compatibele resources herstellen met Azure PolicyRemediate non-compliant resources with Azure Policy

Resources die niet compatibel zijn met een deployIfNotExists -of Modify -beleid kunnen worden opgeslagen in een compatibele status via herbemiddeling.Resources that are non-compliant to a deployIfNotExists or modify policy can be put into a compliant state through Remediation. Herstel wordt uitgevoerd door Azure Policy het effect van de deployIfNotExists of de wijzigings bewerkingen van het toegewezen beleid voor uw bestaande resources en abonnementen uit te voeren, ongeacht of de toewijzing aan een beheer groep, een abonnement, een resource groep of een afzonderlijke resource gaat.Remediation is accomplished by instructing Azure Policy to run the deployIfNotExists effect or the modify operations of the assigned policy on your existing resources and subscriptions, whether that assignment is to a management group, a subscription, a resource group, or an individual resource. In dit artikel worden de stappen beschreven die nodig zijn om het herstel met Azure Policy te begrijpen en uit te voeren.This article shows the steps needed to understand and accomplish remediation with Azure Policy.

Hoe herstel beveiliging werktHow remediation security works

Als Azure Policy de sjabloon uitvoert in de deployIfNotExists -beleids definitie, wordt een beheerde identiteitgebruikt.When Azure Policy runs the template in the deployIfNotExists policy definition, it does so using a managed identity. Azure Policy maakt een beheerde identiteit voor elke toewijzing, maar moet informatie over de rollen hebben om de beheerde identiteit te verlenen.Azure Policy creates a managed identity for each assignment, but must have details about what roles to grant the managed identity. Als de beheerde identiteit geen rollen bevat, wordt er een fout bericht weer gegeven tijdens de toewijzing van het beleid of een initiatief.If the managed identity is missing roles, an error is displayed during the assignment of the policy or an initiative. Wanneer u de portal gebruikt, wordt de beheerde identiteit door Azure Policy automatisch verleend aan de vermelde rollen zodra de toewijzing is gestart.When using the portal, Azure Policy automatically grants the managed identity the listed roles once assignment starts. Wanneer u SDK gebruikt, moeten de rollen hand matig worden verleend aan de beheerde identiteit.When using SDK, the roles must manually be granted to the managed identity. De locatie van de beheerde identiteit heeft geen invloed op de werking van Azure Policy.The location of the managed identity doesn't impact its operation with Azure Policy.

Scherm opname van een deployIfNotExists-beleid waarvoor een gedefinieerde machtiging voor de beheerde identiteit ontbreekt.

Belangrijk

In de volgende scenario's moet de beheerde identiteit van de toewijzing hand matig worden verleend of kan de herstel implementatie mislukken:In the following scenarios, the assignment's managed identity must be manually granted access or the remediation deployment will fail:

  • Als de toewijzing is gemaakt via SDKIf the assignment is created through SDK
  • Als een resource die is gewijzigd door deployIfNotExists of Modify zich buiten het bereik van de beleids toewijzing bevindtIf a resource modified by deployIfNotExists or modify is outside the scope of the policy assignment
  • Als de sjabloon eigenschappen voor bronnen buiten het bereik van de beleids toewijzing opentIf the template accesses properties on resources outside the scope of the policy assignment

Beleids definitie configurerenConfigure policy definition

De eerste stap is het definiëren van de rollen die in de beleids definitie deployIfNotExists en aanpassen om de inhoud van de opgenomen sjabloon te implementeren.The first step is to define the roles that deployIfNotExists and modify needs in the policy definition to successfully deploy the content of your included template. Voeg onder de eigenschap Details een eigenschap roleDefinitionIds toe.Under the details property, add a roleDefinitionIds property. Deze eigenschap is een matrix met teken reeksen die overeenkomen met rollen in uw omgeving.This property is an array of strings that match roles in your environment. Zie het deployIfNotExists-voor beeld of de Modify-voor beeldenvoor een volledig voor beeld.For a full example, see the deployIfNotExists example or the modify examples.

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

De eigenschap roleDefinitionIds maakt gebruik van de volledige resource-id en de korte rolnaam van de rol.The roleDefinitionIds property uses the full resource identifier and doesn't take the short roleName of the role. Als u de ID voor de rol Inzender in uw omgeving wilt ophalen, gebruikt u de volgende code:To get the ID for the 'Contributor' role in your environment, use the following code:

az role definition list --name 'Contributor'

De beheerde identiteit hand matig configurerenManually configure the managed identity

Wanneer u een toewijzing maakt met behulp van de portal, worden de beheerde identiteit door Azure Policy gegenereerd en wordt de rollen verleend die zijn gedefinieerd in roleDefinitionIds.When creating an assignment using the portal, Azure Policy both generates the managed identity and grants it the roles defined in roleDefinitionIds. In de volgende situaties moeten de stappen voor het maken van de beheerde identiteit hand matig worden uitgevoerd:In the following conditions, steps to create the managed identity and assign it permissions must be done manually:

  • Tijdens het gebruik van de SDK (zoals Azure PowerShell)While using the SDK (such as Azure PowerShell)
  • Wanneer een resource buiten het toewijzings bereik wordt gewijzigd door de sjabloonWhen a resource outside the assignment scope is modified by the template
  • Wanneer een resource buiten het toewijzings bereik wordt gelezen door de sjabloonWhen a resource outside the assignment scope is read by the template

Beheerde identiteit maken met Power shellCreate managed identity with PowerShell

Als u een beheerde identiteit tijdens de toewijzing van het beleid wilt maken, moet u de locatie definiëren en AssignIdentity gebruiken.To create a managed identity during the assignment of the policy, Location must be defined and AssignIdentity used. In het volgende voor beeld wordt de definitie van het ingebouwde beleid SQL DB transparent Data Encryption geïmplementeerd, wordt de doel resource groep ingesteld en wordt de toewijzing gemaakt.The following example gets the definition of the built-in policy Deploy SQL DB transparent data encryption, sets the target resource group, and then creates the assignment.

# 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

De $assignment variabele bevat nu de principal-id van de beheerde identiteit, samen met de standaard waarden die worden geretourneerd bij het maken van een beleids toewijzing.The $assignment variable now contains the principal ID of the managed identity along with the standard values returned when creating a policy assignment. Deze kan worden geopend via $assignment.Identity.PrincipalId .It can be accessed through $assignment.Identity.PrincipalId.

Gedefinieerde rollen toekennen met Power shellGrant defined roles with PowerShell

De nieuwe beheerde identiteit moet de replicatie via Azure Active Directory volt ooien voordat de benodigde rollen kunnen worden toegewezen.The new managed identity must complete replication through Azure Active Directory before it can be granted the needed roles. Zodra de replicatie is voltooid, wordt in het volgende voor beeld de beleids definitie in $policyDef voor de roleDefinitionIds herhaald en wordt New-AzRoleAssignment gebruikt om de nieuwe beheerde identiteit toe te kennen aan de rollen.Once replication is complete, the following example iterates the policy definition in $policyDef for the roleDefinitionIds and uses New-AzRoleAssignment to grant the new managed identity the roles.

# 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
    }
}

Gedefinieerde rollen toekennen via de portalGrant defined roles through portal

Er zijn twee manieren om de beheerde identiteit van een toewijzing toe te kennen aan de gedefinieerde rollen met behulp van de portal, met behulp van toegangs beheer (IAM) of door het beleid of initiatief toewijzing te bewerken en Opslaan te selecteren.There are two ways to grant an assignment's managed identity the defined roles using the portal, by using Access control (IAM) or by editing the policy or initiative assignment and selecting Save.

Voer de volgende stappen uit om een rol toe te voegen aan de beheerde identiteit van de toewijzing:To add a role to the assignment's managed identity, follow these steps:

  1. Start de Azure Policy-service in Azure Portal door Alle services te selecteren en dan Beleid te zoeken en te selecteren.Launch the Azure Policy service in the Azure portal by selecting All services, then searching for and selecting Policy.

  2. Selecteer Toewijzingen in het linkerdeelvenster van de Azure Policy-pagina.Select Assignments on the left side of the Azure Policy page.

  3. Zoek de toewijzing met een beheerde identiteit en selecteer de naam.Locate the assignment that has a managed identity and select the name.

  4. Zoek de eigenschap van de toewijzings-id op de pagina bewerken.Find the Assignment ID property on the edit page. De toewijzings-ID zal er ongeveer als volgt uitzien:The assignment ID will be something like:

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

    De naam van de beheerde identiteit is het laatste deel van de resource-ID van de toewijzing, 2802056bfc094dfb95d4d7a5 in dit voor beeld.The name of the managed identity is the last portion of the assignment resource ID, which is 2802056bfc094dfb95d4d7a5 in this example. Kopieer dit gedeelte van de resource-ID van de toewijzing.Copy this portion of the assignment resource ID.

  5. Ga naar de resource of de bovenliggende container van de resources (resource groep, abonnement, beheer groep) waarvoor de functie definitie hand matig moet worden toegevoegd.Navigate to the resource or the resources parent container (resource group, subscription, management group) that needs the role definition manually added.

  6. Selecteer de koppeling toegangs beheer (IAM) op de pagina Resources en selecteer vervolgens + roltoewijzing toevoegen boven aan de pagina toegangs beheer.Select the Access control (IAM) link in the resources page and then select + Add role assignment at the top of the access control page.

  7. Selecteer de juiste rol die overeenkomt met een roleDefinitionIds van de beleids definitie.Select the appropriate role that matches a roleDefinitionIds from the policy definition. Zorg ervoor dat de toewijzing van de gebruiker, groep of toepassing van Azure AD is ingesteld op de standaard waarde.Leave Assign access to set to the default of 'Azure AD user, group, or application'. Plak of typ in het vak selecteren het gedeelte van de resource-id voor de toewijzing dat eerder is gevonden.In the Select box, paste or type the portion of the assignment resource ID located earlier. Zodra de zoek opdracht is voltooid, selecteert u het object met dezelfde naam om ID te selecteren en selecteert u Opslaan.Once the search completes, select the object with the same name to select ID and select Save.

Een herstel taak makenCreate a remediation task

Een herstel taak maken via de portalCreate a remediation task through portal

Tijdens de evaluatie bepaalt de beleids toewijzing met deployIfNotExists -of wijzigings effecten of er niet-compatibele resources of abonnementen zijn.During evaluation, the policy assignment with deployIfNotExists or modify effects determines if there are non-compliant resources or subscriptions. Wanneer niet-compatibele resources of abonnementen worden gevonden, worden de details op de pagina herstel vermeld.When non-compliant resources or subscriptions are found, the details are provided on the Remediation page. Naast de lijst met beleids regels met niet-compatibele resources of abonnementen, is de optie om een herstel taak te activeren.Along with the list of policies that have non-compliant resources or subscriptions is the option to trigger a remediation task. Met deze optie maakt u een implementatie vanuit de deployIfNotExists -sjabloon of de wijzigings bewerkingen.This option is what creates a deployment from the deployIfNotExists template or the modify operations.

Voer de volgende stappen uit om een herstel taak te maken:To create a remediation task, follow these steps:

  1. Start de Azure Policy-service in Azure Portal door Alle services te selecteren en dan Beleid te zoeken en te selecteren.Launch the Azure Policy service in the Azure portal by selecting All services, then searching for and selecting Policy.

    Schermopname van het zoeken naar Beleid in Alle services.

  2. Selecteer aan de linkerkant van de Azure Policy pagina herstel .Select Remediation on the left side of the Azure Policy page.

    Scherm afbeelding van het knoop punt voor herstel op de pagina beleid.

  3. Alle deployIfNotExists -en Modify -beleids toewijzingen met niet-compatibele resources zijn opgenomen in het beleid voor het herstellen van het tabblad en de gegevens tabel.All deployIfNotExists and modify policy assignments with non-compliant resources are included on the Policies to remediate tab and data table. Selecteer een beleid met resources die niet compatibel zijn.Select on a policy with resources that are non-compliant. De pagina nieuwe herstel taak wordt geopend.The New remediation task page opens.

    Notitie

    Een andere manier om de herstel taak pagina te openen, is door het beleid te zoeken en te selecteren op de pagina naleving en vervolgens de knop herstel taak maken te selecteren.An alternate way to open the remediation task page is to find and select the policy from the Compliance page, then select the Create Remediation Task button.

  4. Filter op de pagina nieuwe herstel taak de bronnen die u wilt herstellen met behulp van het bereik beletsel tekens om onderliggende resources te kiezen van waar het beleid is toegewezen (inclusief de afzonderlijke resource objecten).On the New remediation task page, filter the resources to remediate by using the Scope ellipses to pick child resources from where the policy is assigned (including down to the individual resource objects). U kunt ook de vervolg keuzelijst locaties gebruiken om de resources verder te filteren.Additionally, use the Locations drop-down to further filter the resources. Alleen de resources die in de tabel worden weer gegeven, worden hersteld.Only resources listed in the table will be remediated.

    Scherm afbeelding van het knoop punt herstellen en het raster van de resources om het probleem te verhelpen.

  5. Start de herstel taak zodra de resources zijn gefilterd door herstellen te selecteren.Begin the remediation task once the resources have been filtered by selecting Remediate. De pagina beleids naleving wordt geopend op het tabblad herstel taken om de status van de voortgang van de taken weer te geven.The policy compliance page opens to the Remediation tasks tab to show the state of the tasks progress. Implementaties die zijn gemaakt door de herstel taak worden meteen gestart.Deployments created by the remediation task begin right away.

    Scherm afbeelding van het tabblad herstel taken en de voortgang van bestaande herstel taken.

  6. Selecteer op de pagina herstel op basis van de beleids naleving om meer informatie over de voortgang weer te geven.Select on the remediation task from the policy compliance page to get details about the progress. Het filter dat wordt gebruikt voor de taak wordt weer gegeven samen met een lijst met de resources die worden hersteld.The filtering used for the task is shown along with a list of the resources being remediated.

  7. Klik op de pagina herstel taak met de rechter muisknop op een resource om de implementatie van de herstel taak of de resource weer te geven.From the Remediation task page, right-click on a resource to view either the remediation task's deployment or the resource. Klik aan het einde van de rij op gerelateerde gebeurtenissen om details, zoals een fout bericht, weer te geven.At the end of the row, select on Related events to see details such as an error message.

    Scherm afbeelding van het context menu voor een resource op het tabblad herstel taak.

Resources die worden geïmplementeerd via een herstel taak , worden toegevoegd aan het tabblad geïmplementeerde resources op de pagina naleving van beleid.Resources deployed through a remediation task are added to the Deployed Resources tab on the policy compliance page.

Een herstel taak maken via Azure CLICreate a remediation task through Azure CLI

Gebruik de opdrachten om een herstel taak te maken met Azure cli az policy remediation .To create a remediation task with Azure CLI, use the az policy remediation commands. Vervang door {subscriptionId} uw abonnements-id en {myAssignmentId} met uw deployIfNotExists of Wijzig de toewijzings-id van het beleid.Replace {subscriptionId} with your subscription ID and {myAssignmentId} with your deployIfNotExists or modify policy assignment ID.

# 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}'

Zie voor andere herstel opdrachten en voor beelden AZ Policy remediing commands.For other remediation commands and examples, see the az policy remediation commands.

Een herstel taak maken via Azure PowerShellCreate a remediation task through Azure PowerShell

Als u een herstel taak met Azure PowerShell wilt maken, gebruikt u de Start-AzPolicyRemediation opdrachten.To create a remediation task with Azure PowerShell, use the Start-AzPolicyRemediation commands. Vervang door {subscriptionId} uw abonnements-id en {myAssignmentId} met uw deployIfNotExists of Wijzig de toewijzings-id van het beleid.Replace {subscriptionId} with your subscription ID and {myAssignmentId} with your deployIfNotExists or modify policy assignment ID.

# 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}'

Zie de module AZ. PolicyInsights voor andere cmdlets en voor beelden voor herstel.For other remediation cmdlets and examples, see the Az.PolicyInsights module.

Een herstel taak maken tijdens beleids toewijzing in de Azure PortalCreate a remediation task during policy assignment in the Azure portal

Een gestroomlijnde manier om een herstel taak te maken, is door de Azure Portal tijdens het toewijzen van beleid.A streamlined way of creating a remediation task is to do so from the Azure portal during policy assignment. Als de beleids definitie die moet worden toegewezen, een deployIfNotExists of een wijzigings effect is, biedt de wizard op het tabblad herstel een optie voor het maken van een herstel taak .If the policy definition to assign is a deployIfNotExists or a Modify effect, the wizard on the Remediation tab offers a Create a remediation task option. Als deze optie is geselecteerd, wordt een herstel taak gemaakt op hetzelfde moment als de beleids toewijzing.If this option is selected, a remediation task is created at the same time as the policy assignment.

Volgende stappenNext steps