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. Onder de details eigenschap toevoegen een roleDefinitionIds eigenschap.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

Een beheerde identiteit maken tijdens de toewijzing van het beleid, locatie moet worden gedefinieerd en AssignIdentity gebruikt.To create a managed identity during the assignment of the policy, Location must be defined and AssignIdentity used. Het volgende voorbeeld wordt de definitie van het ingebouwde beleid transparent data encryption voor SQL DB implementeren, de doelresourcegroep die is ingesteld en vervolgens de toewijzing maakt.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 waarden die zijn geretourneerd bij het maken van een beleidstoewijzing.The $assignment variable now contains the principal ID of the managed identity along with the standard values returned when creating a policy assignment. Dit 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 toegang te verlenen beheerde identiteit van een toewijzing van de gedefinieerde rollen met behulp van de portal, met behulp van toegangsbeheer (IAM) of door te klikken en de toewijzing van een beleid of initiatief bewerken 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 toewijzings-ID eigenschap 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 gedeelte van de toewijzing van resource-ID, die is 2802056bfc094dfb95d4d7a5 in dit voorbeeld.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 toegangsbeheer (IAM) op de pagina resources koppelen en klik op + roltoewijzing toevoegen aan de bovenkant van de pagina voor het beheer van toegang.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 beleidsdefinitie.Select the appropriate role that matches a roleDefinitionIds from the policy definition. Laat toegang toewijzen aan ingesteld op de standaardwaarde van 'Azure AD gebruiker, groep of toepassing'.Leave Assign access to set to the default of 'Azure AD user, group, or application'. In de Selecteer vak, plakt of typt u het gedeelte van de resource-ID van toewijzing zich eerder hebt.In the Select box, paste or type the portion of the assignment resource ID located earlier. Wanneer de zoekopdracht is voltooid, klikt u op het object met dezelfde naam-ID selecteren en 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, de details zijn opgegeven op de herstel pagina.When non-compliant resources are found, the details are provided on the Remediation page. Samen met de lijst met beleidsregels die u niet-compatibele resources hebt is de optie voor het activeren van een herstel taak.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.

Maakt een herstel taak, als volgt te werk: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 herstel aan de linkerkant van de Azure Policy-pagina.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 nieuwe herstel taak pagina wordt geopend.The New remediation task page opens.

    Notitie

    Een alternatieve manier om te openen de herstel taak pagina is om te zoeken en klik op het beleid op basis van de naleving pagina en klik vervolgens op de herstel-taak maken knop.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. Op de nieuwe herstel taak pagina, filteren de resources voor het herstellen met behulp van de bereik weglatingstekens om op te halen van de onderliggende resources van waaraan het beleid is toegewezen (inclusief omlaag naar 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). Bovendien gebruiken de locaties vervolgkeuzelijst als filter de resources.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. De herstel-taak starten wanneer de resources zijn gefilterd door te klikken op herstellen.Begin the remediation task once the resources have been filtered by clicking Remediate. De pagina van de naleving van het beleid wordt geopend aan de herstel taken tabblad om de status van de voortgang van de taken weer te geven.The policy compliance page will open to the Remediation tasks tab to show the state of the tasks progress.

    Herstellen-voortgang van herstel taken

  6. Klik op de herstel taak van de pagina voor de naleving van beleid voor meer informatie over de voortgang.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. Uit de herstel taak pagina, met de rechtermuisknop op een resource om de implementatie van de herstel-taak weer te geven of de resource.From the remediation task page, right-click on a resource to view either the remediation task's deployment or the resource. Aan het einde van de rij, klikt u op gerelateerde gebeurtenissen om details, zoals een foutbericht te bekijken.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 worden geïmplementeerd via een herstel taak worden toegevoegd aan de geïmplementeerd Resources tabblad op de pagina voor 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