Correggere le risorse non conformi con Criteri di Azure
Articolo
Le risorse non conformi ai criteri con deployIfNotExists o modify effetti possono essere inserite in uno stato conforme tramite correzione. La correzione viene eseguita tramite attività di correzione che distribuiscono il deployIfNotExists modello o le modify operazioni dei criteri assegnati per le risorse e le sottoscrizioni esistenti, indipendentemente dal fatto che l'assegnazione si tratti di un gruppo di gestione, una sottoscrizione, un gruppo di risorse o una singola risorsa. Questo articolo illustra i passaggi necessari per comprendere ed eseguire il processo di correzione con i Criteri di Azure.
Funzionamento del controllo di accesso per la correzione
Quando Criteri di Azure avvia una distribuzione di modelli durante la valutazione dei deployIfNotExists criteri o modifica una risorsa durante la valutazione dei modify criteri, usa un'identità gestita associata all'assegnazione dei criteri. Le assegnazioni di criteri usano identità gestite per l'autorizzazione delle risorse di Azure. È possibile usare un'identità gestita assegnata dal sistema creata dal servizio criteri o da un'identità assegnata dall'utente fornita dall'utente. All'identità gestita deve essere assegnato il ruolo minimo di controllo degli accessi in base al ruolo di Azure necessario per correggere le risorse. Se all'identità gestita non sono assegnati ruoli, viene visualizzato un errore nel portale durante l'assegnazione dei criteri o un'iniziativa. Quando si usa il portale, Criteri di Azure concede automaticamente all'identità gestita i ruoli elencati dopo l'avvio dell'assegnazione. Quando si usa un SDK (Software Development Kit) di Azure, i ruoli devono essere concessi manualmente all'identità gestita. La posizione dell'identità gestita non influisce sull'operazione con Criteri di Azure.
Nota
La modifica di una definizione di criteri non aggiorna automaticamente l'assegnazione o l'identità gestita associata.
La sicurezza della correzione può essere configurata tramite la procedura seguente:
Come prerequisito, la definizione dei criteri deve definire i ruoli che deployIfNotExists e modify devono distribuire correttamente il contenuto del modello incluso. Non è necessaria alcuna azione per una definizione di criteri predefinita perché questi ruoli sono prepopolati. Per una definizione di criteri personalizzata, nella details proprietà aggiungere una roleDefinitionIds proprietà . Questa proprietà è una matrice di stringhe che corrispondono ai ruoli nell'ambiente in uso. Per un esempio completo, vedere deployIfNotExists o modify.
La roleDefinitionIds proprietà usa l'identificatore completo della risorsa e non accetta il breve roleName ruolo. Per ottenere l'ID per il ruolo Collaboratore nell'ambiente, usare il codice dell'interfaccia della riga di comando di Azure seguente:
Interfaccia della riga di comando di Azure
az role definition list --name"Contributor"
Importante
Le autorizzazioni devono essere limitate al set più piccolo possibile quando si definisce roleDefinitionIds all'interno di una definizione di criteri o si assegnano manualmente le autorizzazioni a un'identità gestita. Per altre procedure consigliate, vedere Suggerimenti sulle procedure consigliate per le identità gestite.
Configurare l'identità gestita
Ogni assegnazione Criteri di Azure può essere associata a una sola identità gestita. Tuttavia, l'identità gestita può essere assegnata a più ruoli. La configurazione viene eseguita in due passaggi: creare prima un'identità gestita assegnata dal sistema o assegnata dall'utente, quindi concedere i ruoli necessari.
Nota
Quando si crea un'identità gestita tramite il portale, i ruoli verranno concessi automaticamente all'identità gestita. Se roleDefinitionIds successivamente vengono modificate nella definizione dei criteri, le nuove autorizzazioni devono essere concesse manualmente, anche nel portale.
Quando si crea un'assegnazione usando il portale, Criteri di Azure può generare un'identità gestita assegnata dal sistema e concedergli i ruoli definiti nella definizione dei roleDefinitionIdscriteri. In alternativa, è possibile specificare un'identità gestita assegnata dall'utente che riceve la stessa assegnazione di ruolo.
Per impostare un'identità gestita assegnata dal sistema nel portale:
Nella scheda Correzione della visualizzazione assegnazione di creazione/modifica, in Tipi di identità gestita verificare che sia selezionata l'identità gestita assegnata dal sistema.
Specificare il percorso in cui si trova l'identità gestita.
Non assegnare un ambito per l'identità gestita assegnata dal sistema perché l'ambito viene ereditato dall'ambito di assegnazione.
Per impostare un'identità gestita assegnata dall'utente nel portale:
Nella scheda Correzione della visualizzazione assegnazione di creazione/modifica, in Tipi di identità gestita verificare che l'identità gestita assegnata dall'utente sia selezionata.
Specificare l'ambito in cui è ospitata l'identità gestita. L'ambito dell'identità gestita non deve corrispondere all'ambito dell'assegnazione, ma deve trovarsi nello stesso tenant.
In Identità assegnate dall'utente esistenti selezionare l'identità gestita.
Per creare un'identità durante l'assegnazione dei criteri, è necessario definire location e usare Identity .
L'esempio seguente ottiene la definizione dei criteri predefiniti Deploy SQL DB Transparent Data Encryption, imposta il gruppo di risorse di destinazione e quindi crea l'assegnazione usando un'identità gestita assegnata dal sistema.
Azure PowerShell
# 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 -Identity properties$assignment = New-AzPolicyAssignment -Name'sqlDbTDE' -DisplayName'Deploy SQL DB transparent data encryption' -Scope$resourceGroup.ResourceId -PolicyDefinition$policyDef -Location'westus' -IdentityType"SystemAssigned"
L'esempio seguente ottiene la definizione dei criteri predefiniti Deploy SQL DB Transparent Data Encryption, imposta il gruppo di risorse di destinazione e quindi crea l'assegnazione usando un'identità gestita assegnata dall'utente .
Azure PowerShell
# 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'# Get the existing user assigned managed identity ID$userassignedidentity = Get-AzUserAssignedIdentity -ResourceGroupName$rgname -Name$userassignedidentityname$userassignedidentityid = $userassignedidentity.Id
# Create the assignment using the -Location and -Identity properties$assignment = New-AzPolicyAssignment -Name'sqlDbTDE' -DisplayName'Deploy SQL DB transparent data encryption' -Scope$resourceGroup.ResourceId -PolicyDefinition$policyDef -Location'westus' -IdentityType"UserAssigned" -IdentityId$userassignedidentityid
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. È possibile accedervi tramite $assignment.Identity.PrincipalId per le identità gestite assegnate dal sistema e $assignment.Identity.UserAssignedIdentities[$userassignedidentityid].PrincipalId per le identità gestite assegnate dall'utente.
Per creare un'identità durante l'assegnazione dei criteri, usare i comandi az policy assignment create con i --locationparametri , --mi-system-assigned, --mi-user-assignede --identity-scope a seconda che l'identità gestita debba essere assegnata dal sistema o assegnata dall'utente.
Per aggiungere un'identità assegnata dal sistema o un'identità assegnata dall'utente a un'assegnazione di criteri, seguire l'esempio az policy assignment identity assign comandi.
Concedere autorizzazioni all'identità gestita tramite ruoli definiti
Importante
Se l'identità gestita non dispone delle autorizzazioni necessarie per eseguire l'attività di correzione richiesta, le autorizzazioni verranno concesse automaticamente solo tramite il portale. È possibile ignorare questo passaggio se si crea un'identità gestita tramite il portale.
Per tutti gli altri metodi, l'identità gestita dell'assegnazione deve essere concessa manualmente tramite l'aggiunta di ruoli. In caso contrario, la distribuzione della correzione avrà esito negativo.
Scenari di esempio che richiedono autorizzazioni manuali:
Se l'assegnazione viene creata tramite un Sdk (Software Development Kit) di Azure
Se una risorsa modificata da deployIfNotExists o modify non rientra nell'ambito dell'assegnazione dei criteri
Se il modello accede alle proprietà sulle risorse all'esterno dell'ambito dell'assegnazione dei criteri
Esistono due modi per concedere all'identità gestita di un'assegnazione i ruoli definiti tramite il portale: usando controllo di accesso (IAM) o modificando i criteri o l'assegnazione dell'iniziativa e selezionando Salva.
Per aggiungere un ruolo all'identità gestita dell'assegnazione, seguire questa procedura:
Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.
Selezionare Assegnazioni sul lato sinistro della pagina Criteri di Azure.
Individuare l'assegnazione con un'identità gestita e selezionare il nome.
Individuare la proprietà ID assegnazione nella pagina di modifica. L'ID assegnazione è simile all'esempio seguente:
Il nome dell'identità gestita è l'ultima parte dell'ID di risorsa dell'assegnazione, in questo esempio 2802056bfc094dfb95d4d7a5. Copiare questa parte dell'ID di risorsa di assegnazione.
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.
Selezionare il collegamento Controllo di accesso (IAM) nella pagina delle risorse e quindi selezionare + Aggiungi assegnazione di ruolo nella parte superiore della pagina di controllo di accesso.
Selezionare il ruolo appropriato che corrisponde a un roleDefinitionIds oggetto dalla definizione dei criteri. Lasciare Assegna accesso per impostare l'impostazione predefinita "utente, gruppo o applicazione". Nella casella Seleziona incollare o digitare la parte dell'ID di risorsa di assegnazione individuata precedentemente. Al termine della ricerca, selezionare l'oggetto con lo stesso nome per selezionare ID e selezionare Salva.
La nuova identità gestita deve completare la replica tramite Microsoft Entra ID prima di poter concedere i ruoli necessari. Al termine della replica, gli esempi seguenti enumerare la definizione dei criteri in $policyDef per e usano New-AzRoleAssignment per concedere alla nuova identità gestita roleDefinitionIds i ruoli.
In particolare, il primo esempio illustra come concedere ruoli nell'ambito dei criteri. Il secondo esempio illustra come concedere ruoli nell'ambito dell'iniziativa (set di criteri).
Azure PowerShell
#################################################### Grant roles to managed identity at policy scope ##################################################### Use the $policyDef to get to the roleDefinitionIds array$roleDefinitionIds = $policyDef.Properties.policyRule.then.details.roleDefinitionIds
if ($roleDefinitionIds.Count -gt0)
{
$roleDefinitionIds | ForEach-Object {
$roleDefId = $_.Split("/") | Select-Object -Last1New-AzRoleAssignment -Scope$resourceGroup.ResourceId -ObjectId$assignment.Identity.PrincipalId
-RoleDefinitionId$roleDefId
}
}
######################################################## Grant roles to managed identity at initiative scope #########################################################If the policy had no managed identity in its logic, then no impact. If there is a managed identity
used for enforcement, replicate it on the new assignment.
$getNewInitiativeAssignment = Get-AzPolicyAssignment -Name$newInitiativeDefinition.Name
#Create an array to store role definition's IDs used by policies inside the initiative.$InitiativeRoleDefinitionIds = @();
#Loop through the policy definitions inside the initiative and gather their role definition IDsforeach ($policyDefinitionIdInsideInitiativein$InitiativeDefinition.Properties.PolicyDefinitions.policyDefinitionId) {
$policyDef = Get-AzPolicyDefinition -Id$policyDefinitionIdInsideInitiative$roleDefinitionIds = $policyDef.Properties.PolicyRule.then.details.roleDefinitionIds
$InitiativeRoleDefinitionIds += $roleDefinitionIds
}
#Create the role assignments used by the initiative assignment at the subscription scope.if ($InitiativeRoleDefinitionIds.Count -gt0) {
$InitiativeRoleDefinitionIds | Sort-Object -Unique | ForEach-Object {
$roleDefId = $_.Split("/") | Select-Object -Last1New-AzRoleAssignment -Scope"/subscriptions/$($subscription)" -ObjectId$getNewInitiativeAssignment.Identity.PrincipalId
-RoleDefinitionId$roleDefId
}
}
La nuova identità gestita deve completare la replica tramite Microsoft Entra ID prima di poter concedere i ruoli necessari. Al termine della replica, i ruoli specificati nella definizione dei roleDefinitionIds criteri devono essere concessi all'identità gestita.
Avviare il servizio Criteri di Azure nel portale di Azure facendo clic su Tutti i servizi e quindi cercando e selezionando Criteri.
Passaggio 1: Avviare la creazione dell'attività di correzione
Esistono tre modi per creare un'attività di correzione tramite il portale.
Opzione 1: Creare un'attività di correzione dalla pagina Correzione
Nella parte sinistra della pagina di Criteri di Azure selezionare Correzione.
Tutte le deployIfNotExists assegnazioni di criteri e modify vengono visualizzate nella scheda Criteri da correggere . Selezionare una con le risorse non conformi per aprire la pagina Attività Nuova correzione .
Seguire i passaggi per specificare i dettagli delle attività di correzione.
Opzione 2: Creare un'attività di correzione da un'assegnazione di criteri non conforme
Selezionare Conformità sul lato sinistro della pagina Criteri di Azure.
Selezionare un criterio o un'assegnazione di iniziativa non conforme contenente deployIfNotExists o modify effetti.
Selezionare il pulsante Crea attività di correzione nella parte superiore della pagina per aprire la pagina Nuova attività di correzione.
Seguire i passaggi per specificare i dettagli delle attività di correzione.
Opzione 3: Creare un'attività di correzione durante l'assegnazione dei criteri
Se la definizione di criteri o iniziative da assegnare ha un effetto o modify , la scheda Correzione della procedura guidata offre un'opzione Crea un'attività di correzione, che crea un'attività di correzione contemporaneamente all'assegnazione dei deployIfNotExists criteri.
Nota
Si tratta dell'approccio più semplificato per la creazione di un'attività di correzione ed è supportato per i criteri assegnati in una sottoscrizione. Per i criteri assegnati in un gruppo di gestione, le attività di correzione devono essere create usando l'opzione 1 o l'opzione 2 dopo che la valutazione ha determinato la conformità delle risorse.
Dalla procedura guidata di assegnazione nel portale passare alla scheda Correzione . Selezionare la casella di controllo Crea un'attività di correzione.
Se l'attività di correzione viene avviata da un'assegnazione di iniziativa, selezionare i criteri da correggere nell'elenco a discesa.
Configurare l'identità gestita e compilare il resto della procedura guidata. L'attività di correzione viene creata quando viene creata l'assegnazione.
Passaggio 2: Specificare i dettagli delle attività di correzione
Questo passaggio è applicabile solo quando si usa l'opzione 1 o l'opzione 2 per avviare la creazione di attività di correzione.
Se l'attività di correzione viene avviata da un'assegnazione di iniziativa, selezionare i criteri da correggere nell'elenco a discesa. Uno o modify i deployIfNotExists criteri possono essere corretti tramite una singola attività di correzione alla volta.
Facoltativamente, modificare le impostazioni di correzione nella pagina. Per informazioni sui controlli delle impostazioni, vedere Struttura delle attività di correzione.
Nella stessa pagina filtrare le risorse da correggere usando i puntini di sospensione ambito per selezionare le risorse figlio da cui vengono assegnati i criteri (inclusi i singoli oggetti risorsa). Usare inoltre l'elenco a discesa Percorsi per filtrare ulteriormente le risorse.
Avviare l'attività di correzione dopo che le risorse vengono filtrate selezionando Correggi. Si apre la scheda Attività di correzione della pagina di conformità dei criteri per mostrare lo stato di avanzamento delle attività. Le distribuzioni create dall'attività di correzione iniziano immediatamente.
Passaggio 3: Tenere traccia dello stato dell'attività di correzione
Passare alla scheda Attività di correzione nella pagina Correzione . Selezionare un'attività di correzione per visualizzare i dettagli sul filtro usato, sullo stato corrente e un elenco di risorse da correggere.
Nella pagina Dettagli 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. Alla fine della riga selezionare Eventi correlati per visualizzare i dettagli, ad esempio un messaggio di errore.
Le risorse distribuite tramite un'attività di correzione vengono aggiunte alla scheda Risorse distribuite nella pagina dei dettagli dell'assegnazione dei criteri.
Per creare un'attività di correzione con Azure PowerShell, usare i comandi Start-AzPolicyRemediation. Sostituire {subscriptionId} con l'ID sottoscrizione e {myAssignmentId} con l'ID deployIfNotExists assegnazione di criteri o modify .
Azure PowerShell
# Login first with Connect-AzAccount if not using Cloud Shell# Create a remediation for a specific assignmentStart-AzPolicyRemediation -Name'myRemediation' -PolicyAssignmentId'/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'
È anche possibile scegliere di modificare le impostazioni di correzione tramite questi parametri facoltativi:
-FailureThreshold - Consente di specificare se l'attività di correzione deve avere esito negativo se la percentuale di errori supera la soglia specificata. Specificato come numero compreso tra 0 e 100. Per impostazione predefinita, la soglia di errore è 100%.
-ResourceCount - Determina il numero di risorse non conformi da correggere in una determinata attività di correzione. Il valore predefinito è 500 (limite precedente). Il numero massimo è 50.000 risorse.
-ParallelDeploymentCount - Determina il numero di risorse da correggere contemporaneamente. I valori consentiti sono da 1 a 30 risorse alla volta. Il valore predefinito è 10.
Per creare un'attività di correzione con l'interfaccia della riga di comando di Azure, usare i comandi az policy remediation. Sostituire {subscriptionId} con l'ID sottoscrizione e {myAssignmentId} con l'ID deployIfNotExists assegnazione di criteri o modify .
Interfaccia della riga di comando di Azure
# Login first with az login if not using Cloud Shell# Create a remediation for a specific assignmentaz policy remediation create --name myRemediation --policy-assignment'/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'