Herstellen van niet-compatibele resources 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 label bewerkingen van het toegewezen beleid voor uw bestaande resources uit te voeren.Remediation is accomplished by instructing Azure Policy to run the deployIfNotExists effect or the tag operations of the assigned policy on your existing resources. 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 rollen ontbreekt, wordt deze fout weergegeven tijdens de toewijzing van het beleid of een initiatief.If the managed identity is missing roles, this 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 will automatically grant the managed identity the listed roles once assignment is started.

Beheerde identiteit - ontbrekende functie

Belangrijk

Als een resource die is gewijzigd door deployIfNotExists of Modify zich buiten het bereik van de beleids toewijzing bevindt of als de sjabloon eigenschappen voor bronnen buiten het bereik van de beleids toewijzing heeft geopend, moet de beheerde identiteit van de toewijzing hand matig worden verleend voor toegang of kan de herstel implementatie niet worden uitgevoerd.If a resource modified by deployIfNotExists or modify is outside the scope of the policy assignment or the template accesses properties on resources outside the scope of the policy assignment, the assignment's managed identity must be manually granted access or the remediation deployment will fail.

Beleidsdefinitie 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 tekenreeksen die overeenkomen met de 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, 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'

Handmatig configureren van de beheerde identiteitManually 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. Stappen voor het maken van de beheerde identiteit en machtigingen toewijzen moeten handmatig worden gedaan in de volgende voorwaarden: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 bereik van de roltoewijzing is gewijzigd door de sjabloonWhen a resource outside the assignment scope is modified by the template
  • Wanneer een resource buiten het bereik van de roltoewijzing wordt gelezen door de sjabloonWhen a resource outside the assignment scope is read by the template

Notitie

Azure PowerShell en .NET zijn de enige SDK's die momenteel ondersteuning voor deze mogelijkheid.Azure PowerShell and .NET are the only SDKs that currently support this capability.

Beheerde identiteit maken met PowerShellCreate 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 variabele $assignment 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.

Verleen gedefinieerd rollen met PowerShellGrant defined roles with PowerShell

De nieuwe beheerde identiteit moet replicatie via Azure Active Directory voltooien voordat deze de vereiste rollen kan worden verleend.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
    }
}

Verleen rollen via portal gedefinieerdGrant 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 de toewijzing van beleid of initiatief te bewerken en te klikken op Opslaan.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 clicking Save.

Een rol toevoegen aan de beheerde identiteit van de toewijzing, de volgende stappen uit: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 clicking 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 die een beheerde identiteit heeft en klik op de naam.Locate the assignment that has a managed identity and click on 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 is ongeveer als volgt: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, die 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 toewijzing van resource-ID.Copy this portion of the assignment resource ID.

  5. Navigeer naar de resource of de resources bovenliggende container (resourcegroep, abonnement, beheergroep) waarvoor de roldefinitie die handmatig zijn toegevoegd.Navigate to the resource or the resources parent container (resource group, subscription, management group) that needs the role definition manually added.

  6. Klik op de koppeling toegangs beheer (IAM) op de pagina Resources en klik op + roltoewijzing toevoegen boven aan de pagina toegangs beheer.Click the Access control (IAM) link in the resources page and click + 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, klikt u op het object met dezelfde naam om ID te selecteren en klikt u op Opslaan.Once the search completes, click the object with the same name to select ID and click 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 resources zijn die niet compatibel zijn.During evaluation, the policy assignment with deployIfNotExists or modify effects determines if there are non-compliant resources. Als niet-compatibele resources worden gevonden, worden de details op de pagina herstel vermeld.When non-compliant resources are found, the details are provided on the Remediation page. Naast de lijst met beleids regels met niet-compatibele resources is de optie om een herstel taakte activeren.Along with the list of policies that have non-compliant resources 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 taakte 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 clicking All services, then searching for and selecting Policy.

    Beleid zoeken 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.

    Herstel selecteren 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. Klik op een beleid met de resources die niet compatibel zijn.Click 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 te zoeken en te klikken op het beleid op de pagina naleving en vervolgens op de knop herstel taak maken te klikken.An alternate way to open the remediation task page is to find and click on the policy from the Compliance page, then click 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 worden vermeld in de tabel worden hersteld.Only resources listed in the table will be remediated.

    Herstellen: Selecteer welke resources moeten worden hersteld

  5. Start de herstel taak zodra de resources zijn gefilterd door op herstellente klikken.Begin the remediation task once the resources have been filtered by clicking 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.

    Herstellen-voortgang van herstel taken

  6. Klik op de herstel taak op de pagina beleids naleving om meer informatie over de voortgang weer te geven.Click on the remediation task from the policy compliance page to get details about the progress. De filters die wordt gebruikt voor de taak wordt weergegeven, samen met een lijst van 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, click on Related events to see details such as an error message.

    Herstellen - contextmenu van de resource-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

Als u een herstel taak met Azure cli wilt maken, gebruikt u de az policy remediation-opdrachten.To create a remediation task with Azure CLI, use the az policy remediation commands. Vervang {subscriptionId} door uw abonnements-ID en {myAssignmentId} door de 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 {subscriptionId} door uw abonnements-ID en {myAssignmentId} door de 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.

Volgende stappenNext steps