Correggere le risorse non conformi con Criteri di AzureRemediate non-compliant resources with Azure Policy

Le risorse non conformi a un criterio di deployIfNotExists o di modifica possono essere inserite in uno stato conforme tramite correzione.Resources that are non-compliant to a deployIfNotExists or modify policy can be put into a compliant state through Remediation. La correzione viene eseguita indicando a criteri di Azure di eseguire l'effetto deployIfNotExists o le operazioni di tag del criterio assegnato nelle risorse esistenti.Remediation is accomplished by instructing Azure Policy to run the deployIfNotExists effect or the tag operations of the assigned policy on your existing resources. Questo articolo illustra i passaggi necessari per comprendere ed eseguire la correzione con criteri di Azure.This article shows the steps needed to understand and accomplish remediation with Azure Policy.

Funzionamento della sicurezza della correzioneHow remediation security works

Quando i criteri di Azure eseguono il modello nella definizione dei criteri deployIfNotExists , viene usata un' identità gestita.When Azure Policy runs the template in the deployIfNotExists policy definition, it does so using a managed identity. Criteri di Azure crea un'identità gestita per ogni assegnazione, ma deve avere informazioni dettagliate sui ruoli da concedere all'identità gestita.Azure Policy creates a managed identity for each assignment, but must have details about what roles to grant the managed identity. Se all'identità gestita non sono assegnati ruoli, viene visualizzato questo errore durante l'assegnazione dei criteri o un'iniziativa.If the managed identity is missing roles, this error is displayed during the assignment of the policy or an initiative. Quando si usa il portale, i criteri di Azure concedono automaticamente all'identità gestita i ruoli elencati dopo l'avvio dell'assegnazione.When using the portal, Azure Policy will automatically grant the managed identity the listed roles once assignment is started.

Entità gestita - ruolo mancante

Importante

Se una risorsa modificata da deployIfNotExists o Modify esula dall'ambito dell'assegnazione di criteri oppure il modello accede alle proprietà delle risorse al di fuori dell'ambito dell'assegnazione dei criteri, l'identità gestita dell'assegnazione deve essere l'accesso è stato concesso manualmente o la distribuzione di monitoraggio e aggiornamento avrà esito negativo.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.

Configurare la definizione dei criteriConfigure policy definition

Il primo passaggio consiste nel definire i ruoli che deployIfNotExists e modificare le esigenze nella definizione dei criteri per distribuire correttamente il contenuto del modello incluso.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. Nella proprietà details aggiungere una proprietà roleDefinitionIds.Under the details property, add a roleDefinitionIds property. Questa proprietà è una matrice di stringhe che corrispondono ai ruoli nell'ambiente in uso.This property is an array of strings that match roles in your environment. Per un esempio completo, vedere l' esempio deployIfNotExists o gli esempi di modifica.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}"
    ]
}

La proprietà roleDefinitionIds usa l'identificatore di risorsa completo e non accetta il ruolo ShortName del ruolo.The roleDefinitionIds property uses the full resource identifier and doesn't take the short roleName of the role. Per ottenere l'ID per il ruolo 'Collaboratore' nell'ambiente in uso, usare il codice seguente:To get the ID for the 'Contributor' role in your environment, use the following code:

az role definition list --name 'Contributor'

Configurare manualmente l'identità gestitaManually configure the managed identity

Quando si crea un'assegnazione usando il portale, i criteri di Azure generano l'identità gestita e le assegnano i ruoli definiti in roleDefinitionIds.When creating an assignment using the portal, Azure Policy both generates the managed identity and grants it the roles defined in roleDefinitionIds. Nelle condizioni seguenti è necessario eseguire manualmente i passaggi per creare l'identità gestita e assegnarle le autorizzazioni:In the following conditions, steps to create the managed identity and assign it permissions must be done manually:

  • Quando si usa l'SDK (ad esempio, Azure PowerShell)While using the SDK (such as Azure PowerShell)
  • Quando una risorsa esterna all'ambito di assegnazione viene modificata dal modelloWhen a resource outside the assignment scope is modified by the template
  • Quando una risorsa esterna all'ambito di assegnazione viene letta dal modelloWhen a resource outside the assignment scope is read by the template

Nota

Azure PowerShell e .NET sono gli unici SDK che attualmente supportano questa funzionalità.Azure PowerShell and .NET are the only SDKs that currently support this capability.

Creare un'identità gestita con PowerShellCreate managed identity with PowerShell

Per creare un'identità gestita durante l'assegnazione dei criteri, è necessario definire Location e usare AssignIdentity.To create a managed identity during the assignment of the policy, Location must be defined and AssignIdentity used. L'esempio seguente ottiene la definizione dei criteri predefiniti Distribuisci Transparent Data Encryption nel database SQL, imposta il gruppo di risorse di destinazione e quindi crea l'assegnazione.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

La variabile $assignment contiene ora l'ID dell'entità di sicurezza dell'identità gestita insieme ai valori standard restituiti durante la creazione di un'assegnazione di criteri.The $assignment variable now contains the principal ID of the managed identity along with the standard values returned when creating a policy assignment. È possibile accedervi tramite $assignment.Identity.PrincipalId.It can be accessed through $assignment.Identity.PrincipalId.

Concedere ruoli definiti con PowerShellGrant defined roles with PowerShell

La nuova identità gestita deve completare la replica tramite Azure Active Directory prima di poter ottenere i ruoli necessari.The new managed identity must complete replication through Azure Active Directory before it can be granted the needed roles. Al termine della replica, l'esempio seguente esegue l'iterazione della definizione dei criteri in $policyDef per la proprietà roleDefinitionIds e usa New-AzRoleAssignment per concedere i ruoli alla nuova identità gestita.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
    }
}

Concedere ruoli definiti tramite il portaleGrant defined roles through portal

Esistono due modi per concedere a un'identità gestita di un'assegnazione i ruoli definiti tramite il portale: usando il collegamento Controllo di accesso (IAM) o modificando l'assegnazione dei criteri o dell'iniziativa e facendo clic su Salva.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.

Per aggiungere un ruolo all'identità gestita dell'assegnazione, seguire questa procedura:To add a role to the assignment's managed identity, follow these steps:

  1. Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.Launch the Azure Policy service in the Azure portal by clicking All services, then searching for and selecting Policy.

  2. Selezionare Assegnazioni a sinistra nella pagina Criteri di Azure.Select Assignments on the left side of the Azure Policy page.

  3. Individuare l'assegnazione con un'identità gestita e fare clic sul nome.Locate the assignment that has a managed identity and click on the name.

  4. Individuare la proprietà ID assegnazione nella pagina di modifica.Find the Assignment ID property on the edit page. L'ID assegnazione sarà simile al seguente:The assignment ID will be something like:

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

    Il nome dell'identità gestita è l'ultima parte dell'ID di risorsa dell'assegnazione, in questo esempio 2802056bfc094dfb95d4d7a5.The name of the managed identity is the last portion of the assignment resource ID, which is 2802056bfc094dfb95d4d7a5 in this example. Copiare questa parte dell'ID di risorsa di assegnazione.Copy this portion of the assignment resource ID.

  5. Passare alla risorsa o al contenitore padre delle risorse (gruppo di risorse, sottoscrizione, gruppo di gestione) per il quale è necessario aggiungere la definizione di ruolo manualmente.Navigate to the resource or the resources parent container (resource group, subscription, management group) that needs the role definition manually added.

  6. Fare clic sul collegamento Controllo di accesso (IAM) nella pagina delle risorse e quindi su + Aggiungi assegnazione di ruolo nella parte superiore della pagina del controllo di accesso.Click the Access control (IAM) link in the resources page and click + Add role assignment at the top of the access control page.

  7. Nella definizione dei criteri selezionare il ruolo appropriato che corrisponde a un roleDefinitionIds.Select the appropriate role that matches a roleDefinitionIds from the policy definition. Lasciare Assegna accesso a impostato sul valore predefinito di 'utente, gruppo o applicazione di Azure AD'.Leave Assign access to set to the default of 'Azure AD user, group, or application'. Nella casella Seleziona incollare o digitare la parte dell'ID di risorsa di assegnazione individuata precedentemente.In the Select box, paste or type the portion of the assignment resource ID located earlier. Al termine della ricerca fare clic sull'oggetto con lo stesso nome per selezionare l'ID e fare clic su Salva.Once the search completes, click the object with the same name to select ID and click Save.

Creare un'attività di correzioneCreate a remediation task

Creare un'attività di correzione tramite il portaleCreate a remediation task through portal

Durante la valutazione, l'assegnazione dei criteri con deployIfNotExists o modifica effetti determina se sono presenti risorse non conformi.During evaluation, the policy assignment with deployIfNotExists or modify effects determines if there are non-compliant resources. Quando vengono rilevate risorse non conformi, vengono visualizzati i dettagli nella pagina Correzione.When non-compliant resources are found, the details are provided on the Remediation page. Insieme all'elenco di criteri con risorse non conformi è disponibile l'opzione per attivare un'attività di correzione.Along with the list of policies that have non-compliant resources is the option to trigger a remediation task. Questa opzione consente di creare una distribuzione dal modello deployIfNotExists o dalle operazioni di modifica .This option is what creates a deployment from the deployIfNotExists template or the modify operations.

Per creare un'attività di correzione, seguire questa procedura:To create a remediation task, follow these steps:

  1. Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.Launch the Azure Policy service in the Azure portal by clicking All services, then searching for and selecting Policy.

    Cercare Criteri di Azure in Tutti i servizi

  2. Nella parte sinistra della pagina di Criteri di Azure selezionare Correzione.Select Remediation on the left side of the Azure Policy page.

    Seleziona monitoraggio e aggiornamento nella pagina Criteri

  3. Tutti i deployIfNotExists e le assegnazioni di criteri con risorse non conformi sono inclusi nei criteri per correggere la scheda e la tabella dati.All deployIfNotExists and modify policy assignments with non-compliant resources are included on the Policies to remediate tab and data table. Fare clic sui criteri con risorse non conformi.Click on a policy with resources that are non-compliant. Verrà visualizzata la pagina Nuova attività di correzione.The New remediation task page opens.

    Nota

    Un modo alternativo per aprire la pagina dell'attività di correzione consiste nell'individuare e selezionare i criteri nella pagina Conformità e quindi fare clic sul pulsante Crea attività di correzione.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. Nella pagina Nuova attività di correzione filtrare le risorse da correggere facendo clic sui puntini di sospensione di Ambito per selezionare le risorse figlio da cui sono stati assegnati i criteri (fino ai singoli oggetti risorsa).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). Usare inoltre il menu a discesa Percorsi per filtrare ulteriormente le risorse.Additionally, use the Locations drop-down to further filter the resources. Verranno corrette solo le risorse elencate nella tabella.Only resources listed in the table will be remediated.

    Correzione: selezionare le risorse da correggere

  5. Avviare l'attività di correzione dopo che le risorse sono state filtrate facendo clic su Correggi.Begin the remediation task once the resources have been filtered by clicking Remediate. Verrà aperta la scheda Attività di correzione della pagina di conformità dei criteri per mostrare lo stato di avanzamento delle attività.The policy compliance page will open to the Remediation tasks tab to show the state of the tasks progress.

    Correzione-stato delle attività di correzione

  6. Fare clic sull'attività di correzione nella pagina di conformità dei criteri per visualizzare i dettagli sull'avanzamento.Click on the remediation task from the policy compliance page to get details about the progress. Il filtro usato per l'attività viene visualizzato insieme a un elenco delle risorse da correggere.The filtering used for the task is shown along with a list of the resources being remediated.

  7. Nella pagina dell'attività di correzione fare clic con il pulsante destro del mouse su una risorsa per visualizzare la distribuzione dell'attività di correzione o la risorsa.From the remediation task page, right-click on a resource to view either the remediation task's deployment or the resource. Alla fine della riga fare clic su Eventi correlati per visualizzare i dettagli, ad esempio un messaggio di errore.At the end of the row, click on Related events to see details such as an error message.

    Correggere - menu di scelta rapida delle attività della risorsa

Le risorse distribuite tramite un'attività di correzione vengono aggiunte nella scheda Risorse distribuite della pagina di conformità dei criteri.Resources deployed through a remediation task are added to the Deployed Resources tab on the policy compliance page.

Creare un'attività di correzione tramite l'interfaccia della riga di comando di AzureCreate a remediation task through Azure CLI

Per creare un' attività di correzione con l'interfaccia della riga di comando di Azure, usare i comandi az policy remediation.To create a remediation task with Azure CLI, use the az policy remediation commands. Sostituire {subscriptionId} con l'ID sottoscrizione e {myAssignmentId} con il deployIfNotExists o modificare l'ID di assegnazione dei criteri.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}'

Per altri comandi ed esempi di monitoraggio e aggiornamento, vedere i comandi AZ Policy correttive .For other remediation commands and examples, see the az policy remediation commands.

Creare un'attività di correzione tramite Azure PowerShellCreate a remediation task through Azure PowerShell

Per creare un' attività di correzione con Azure PowerShell, usare i comandi Start-AzPolicyRemediation.To create a remediation task with Azure PowerShell, use the Start-AzPolicyRemediation commands. Sostituire {subscriptionId} con l'ID sottoscrizione e {myAssignmentId} con il deployIfNotExists o modificare l'ID di assegnazione dei criteri.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}'

Per altri cmdlet ed esempi di monitoraggio e aggiornamento, vedere il modulo AZ. PolicyInsights .For other remediation cmdlets and examples, see the Az.PolicyInsights module.

Passaggi successiviNext steps