Informazioni sugli effetti di Criteri di AzureUnderstand Azure Policy effects

Ogni definizione di criteri in Criteri di Azure ha un effetto.Each policy definition in Azure Policy has a single effect. Questo effetto determina cosa accade quando viene valutata la corrispondenza della regola dei criteri.That effect determines what happens when the policy rule is evaluated to match. Il comportamento degli effetti varia a seconda che riguardino una nuova risorsa, una risorsa aggiornata o una risorsa esistente.The effects behave differently if they are for a new resource, an updated resource, or an existing resource.

Attualmente questi effetti sono supportati in una definizione dei criteri:These effects are currently supported in a policy definition:

Gli effetti seguenti sono deprecati:The following effects are deprecated:

Importante

Al posto degli effetti EnforceOPAConstraint o EnforceRegoPolicy , usare Audit e Deny con la modalità provider di risorse Microsoft.Kubernetes.Data .In place of the EnforceOPAConstraint or EnforceRegoPolicy effects, use audit and deny with Resource Provider mode Microsoft.Kubernetes.Data. Le definizioni dei criteri predefinite sono state aggiornate.The built-in policy definitions have been updated. Quando vengono modificate le assegnazioni di criteri predefinite di queste definizioni di criteri predefinite, è necessario modificare il parametro Effect in un valore nell'elenco allowedValues aggiornato.When existing policy assignments of these built-in policy definitions are modified, the effect parameter must be changed to a value in the updated allowedValues list.

Ordine di valutazioneOrder of evaluation

Le richieste di creazione o aggiornamento di una risorsa vengono valutate prima in base ai criteri di Azure.Requests to create or update a resource are evaluated by Azure Policy first. Criteri di Azure crea un elenco di tutte le assegnazioni che si applicano alla risorsa e valuta quindi la risorsa rispetto a ogni definizione.Azure Policy creates a list of all assignments that apply to the resource and then evaluates the resource against each definition. Per una modalità gestione risorse, i criteri di Azure elaborano diversi effetti prima di passare la richiesta al provider di risorse appropriato.For a Resource Manager mode, Azure Policy processes several of the effects before handing the request to the appropriate Resource Provider. Questo ordine impedisce l'elaborazione non necessaria da parte di un provider di risorse quando una risorsa non soddisfa i controlli di governance progettati di criteri di Azure.This order prevents unnecessary processing by a Resource Provider when a resource doesn't meet the designed governance controls of Azure Policy. Con una modalità del provider di risorse, il provider di risorse gestisce la valutazione e il risultato e segnala i risultati ai criteri di Azure.With a Resource Provider mode, the Resource Provider manages the evaluation and outcome and reports the results back to Azure Policy.

  • Disabled viene verificato per primo, per determinare se valutare la regola dei criteri.Disabled is checked first to determine if the policy rule should be evaluated.
  • Vengono quindi valutati Append e Modify.Append and Modify are then evaluated. Dal momento che entrambi possono modificare la richiesta, una modifica apportata potrebbe impedire l'attivazione di un effetto Audit o Deny.Since either could alter the request, a change made may prevent an audit or deny effect from triggering. Questi effetti sono disponibili solo con una modalità Gestione risorse.These effects are only available with a Resource Manager mode.
  • Successivamente viene valutato Deny.Deny is then evaluated. La valutazione di Deny prima di Audit impedisce la doppia registrazione di una risorsa non desiderata.By evaluating deny before audit, double logging of an undesired resource is prevented.
  • Il controllo viene valutato per ultimo.Audit is evaluated last.

Quando il provider di risorse restituisce un codice di esito positivo in una richiesta in modalità Gestione risorse, AuditIfNotExists e DeployIfNotExists valutano per determinare se è necessaria una registrazione o un'azione di conformità aggiuntiva.After the Resource Provider returns a success code on a Resource Manager mode request, AuditIfNotExists and DeployIfNotExists evaluate to determine if additional compliance logging or action is required.

Inoltre, PATCH le richieste che modificano solo i tags campi correlati limitano la valutazione dei criteri ai criteri che contengono condizioni che controllano i tags campi correlati.Additionally, PATCH requests that only modify tags related fields restricts policy evaluation to policies containing conditions that inspect tags related fields.

AccodaAppend

Append viene usato per aggiungere altri campi alla risorsa richiesta durante la creazione o l'aggiornamento.Append is used to add additional fields to the requested resource during creation or update. Un esempio comune è la specifica di indirizzi IP consentiti per una risorsa di archiviazione.A common example is specifying allowed IPs for a storage resource.

Importante

Append è destinato all'uso con proprietà di non tag.Append is intended for use with non-tag properties. Sebbene Append possa aggiungere tag a una risorsa durante una richiesta di creazione o aggiornamento, è consigliabile usare l'effetto Modify per i tag.While Append can add tags to a resource during a create or update request, it's recommended to use the Modify effect for tags instead.

Valutazione di AppendAppend evaluation

Append viene valutato prima che la richiesta venga elaborata da un provider di risorse durante la creazione o l'aggiornamento di una risorsa.Append evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Append aggiunge campi alla risorsa quando viene soddisfatta la condizione if della regola dei criteri.Append adds fields to the resource when the if condition of the policy rule is met. Se l'effetto Append sostituisce un valore nella richiesta originale con un valore diverso, agisce come effetto Deny e rifiuta la richiesta.If the append effect would override a value in the original request with a different value, then it acts as a deny effect and rejects the request. Per accodare un nuovo valore a una matrice esistente, usare la versione [*] dell'alias.To append a new value to an existing array, use the [*] version of the alias.

Quando una definizione dei criteri che usa l'effetto Append viene eseguita come parte di un ciclo di valutazione, non apporta modifiche alle risorse già esistenti.When a policy definition using the append effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Al contrario, contrassegna qualsiasi risorsa che soddisfi la condizione if come non conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Proprietà di AppendAppend properties

Un effetto Append ha solo una matrice details obbligatoria.An append effect only has a details array, which is required. Essendo una matrice, details può richiedere una coppia campo/valore singola o coppie multiple.As details is an array, it can take either a single field/value pair or multiples. Fare riferimento alla struttura di definizione per l'elenco dei campi accettabili.Refer to definition structure for the list of acceptable fields.

Esempi di AppendAppend examples

Esempio 1: coppia campo/valore singola che usa un alias diverso da [*] con un valore di matrice per impostare le regole IP in un account di archiviazione.Example 1: Single field/value pair using a non-[*] alias with an array value to set IP rules on a storage account. Quando l'alias diverso da [*] è una matrice, l'effetto accoda il valore come intera matrice.When the non-[*] alias is an array, the effect appends the value as the entire array. Se la matrice esiste già, si verifica un evento Deny per effetto del conflitto.If the array already exists, a deny event occurs from the conflict.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Esempio 2: coppia campo/valore singola che usa un alias [*] con un valore di matrice per impostare le regole IP in un account di archiviazione.Example 2: Single field/value pair using an [*] alias with an array value to set IP rules on a storage account. Usando l'alias [*] , l'effetto accoda il valore a una matrice potenzialmente già esistente.By using the [*] alias, the effect appends the value to a potentially pre-existing array. Se la matrice non esiste ancora, viene creata.If the array doesn't exist yet, it's created.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
        "value": {
            "value": "40.40.40.40",
            "action": "Allow"
        }
    }]
}

AuditAudit

Audit viene usato per creare un evento di avviso nel log attività quando viene valutata una risorsa non conforme, ma non arresta la richiesta.Audit is used to create a warning event in the activity log when evaluating a non-compliant resource, but it doesn't stop the request.

Valutazione di AuditAudit evaluation

Audit è l'ultimo effetto controllato da Criteri di Azure durante la creazione o l'aggiornamento di una risorsa.Audit is the last effect checked by Azure Policy during the creation or update of a resource. Per una modalità Gestione risorse, i criteri di Azure inviano quindi la risorsa al provider di risorse.For a Resource Manager mode, Azure Policy then sends the resource to the Resource Provider. Audit funziona allo stesso modo per una richiesta di risorse e un ciclo di valutazione.Audit works the same for a resource request and an evaluation cycle. Per le risorse nuove e aggiornate, i criteri di Azure aggiungono un' Microsoft.Authorization/policies/audit/action operazione al log attività e contrassegnano la risorsa come non conforme.For new and updated resources, Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant.

Proprietà di AuditAudit properties

Per una modalità Gestione risorse, l'effetto di controllo non dispone di proprietà aggiuntive per l'utilizzo nella condizione then della definizione dei criteri.For a Resource Manager mode, the audit effect doesn't have any additional properties for use in the then condition of the policy definition.

Per una modalità del provider di risorse Microsoft.Kubernetes.Data , l'effetto di controllo presenta le sottoproprietà aggiuntive seguenti dei Dettagli.For a Resource Provider mode of Microsoft.Kubernetes.Data, the audit effect has the following additional subproperties of details.

  • constraintTemplate (obbligatorio)constraintTemplate (required)
    • Il modello Constraint CustomResourceDefinition (CRD) che definisce nuovi vincoli.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Il modello definisce la logica Rego, lo schema Constraint e i parametri Constraint passati tramite valori da Criteri di Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • vincolo (obbligatorio)constraint (required)
    • L'implementazione CRD del modello Constraint.The CRD implementation of the Constraint template. Usa i parametri passati tramite valori come {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. Nell'esempio 2 riportato di seguito questi valori sono {{ .Values.excludedNamespaces }} e {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • valori (facoltativo)values (optional)
    • Definisce tutti i parametri e i valori da passare a Constraint.Defines any parameters and values to pass to the Constraint. Ogni valore deve esistere nel modello Constraint CRD.Each value must exist in the Constraint template CRD.

Esempio di AuditAudit example

Esempio 1: uso dell'effetto di controllo per le modalità di Gestione risorse.Example 1: Using the audit effect for Resource Manager modes.

"then": {
    "effect": "audit"
}

Esempio 2: uso dell'effetto di controllo per una modalità del provider di risorse Microsoft.Kubernetes.Data .Example 2: Using the audit effect for a Resource Provider mode of Microsoft.Kubernetes.Data. Le informazioni aggiuntive in Dettagli definiscono il modello di vincolo e la CRD da usare in Kubernetes per limitare le immagini del contenitore consentito.The additional information in details defines the Constraint template and CRD to use in Kubernetes to limit the allowed container images.

"then": {
    "effect": "audit",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/constraint.yaml",
        "values": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]",
            "excludedNamespaces": "[parameters('excludedNamespaces')]"
        }
    }
}

AuditIfNotExistsAuditIfNotExists

AuditIfNotExists consente il controllo delle risorse correlate alla risorsa che corrisponde alla condizione if , ma non hanno le proprietà specificate nei Dettagli della condizione then .AuditIfNotExists enables auditing of resources related to the resource that matches the if condition, but don't have the properties specified in the details of the then condition.

Valutazione di AuditIfNotExistsAuditIfNotExists evaluation

AuditIfNotExists viene eseguito dopo che un provider di risorse ha gestito una richiesta di creazione o aggiornamento di risorse e ha restituito un codice di stato con esito positivo.AuditIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. L'effetto Audit si verifica se non ci sono risorse correlate o se le risorse definite da ExistenceCondition non restituiscono true.The audit occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Per le risorse nuove e aggiornate, i criteri di Azure aggiungono un' Microsoft.Authorization/policies/audit/action operazione al log attività e contrassegnano la risorsa come non conforme.For new and updated resources, Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant. Quando è attivato, la risorsa che ha soddisfatto la condizione if è la risorsa contrassegnata come non conforme.When triggered, the resource that satisfied the if condition is the resource that is marked as non-compliant.

Proprietà di AuditIfNotExistsAuditIfNotExists properties

La proprietà details degli effetti AuditIfNotExists ha tutte le sottoproprietà che definiscono le risorse correlate a cui corrispondere.The details property of the AuditIfNotExists effects has all the subproperties that define the related resources to match.

  • Tipo (obbligatorio)Type (required)
    • Specifica il tipo della risorsa correlata a cui corrispondere.Specifies the type of the related resource to match.
    • Se details.type è un tipo di risorsa sotto la condizione di risorsa if, il criterio esegue una query per le risorse di questo tipo nell'ambito della risorsa valutata.If details.type is a resource type underneath the if condition resource, the policy queries for resources of this type within the scope of the evaluated resource. In caso contrario, il criterio esegue la query all'interno dello stesso gruppo di risorse della risorsa valutata.Otherwise, policy queries within the same resource group as the evaluated resource.
  • Name (facoltativo)Name (optional)
    • Specifica il nome esatto della risorsa a cui corrispondere e fa sì che il criterio recuperi una risorsa specifica invece di tutte le risorse del tipo specificato.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Quando i valori della condizione per if. Field. Type e then. Details. Type corrispondono, il nome diventa obbligatorio e deve essere [field('name')] o [field('fullName')] per una risorsa figlio.When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')], or [field('fullName')] for a child resource. Tuttavia, deve essere considerato invece un effetto audit.However, an audit effect should be considered instead.
  • ResourceGroupName (facoltativo)ResourceGroupName (optional)
    • Consente che la corrispondenza della risorsa correlata provenga da un gruppo di risorse diverso.Allows the matching of the related resource to come from a different resource group.
    • Non è applicabile se type è una risorsa sottostante la risorsa della condizione if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • L'impostazione predefinita è il gruppo di risorse della risorsa della condizione if.Default is the if condition resource's resource group.
  • ExistenceScope (facoltativo)ExistenceScope (optional)
    • I valori consentiti sono Subscription e ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Imposta l'ambito dove recuperare la risorsa correlata a cui corrispondere.Sets the scope of where to fetch the related resource to match from.
    • Non è applicabile se type è una risorsa sottostante la risorsa della condizione if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Per ResourceGroup, si limita al gruppo di risorse della risorsa della condizione if o al gruppo di risorse specificato in ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Per Subscription, esegue una query nell'intera sottoscrizione per la risorsa correlata.For Subscription, queries the entire subscription for the related resource.
    • L'impostazione predefinita è ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (facoltativo)ExistenceCondition (optional)
    • Se non specificato, qualsiasi risorsa correlata di type soddisfa l'effetto e non attiva il controllo.If not specified, any related resource of type satisfies the effect and doesn't trigger the audit.
    • Usa lo stesso linguaggio della regola dei criteri per la condizione if, ma viene valutato singolarmente rispetto a ogni risorsa correlata.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Se qualsiasi risorsa correlata corrispondente restituisce true, l'effetto è soddisfatto e non attiva il controllo.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the audit.
    • Può usare [field()] per controllare l'equivalenza con i valori nella condizione if.Can use [field()] to check equivalence with values in the if condition.
    • Ad esempio, può essere usato per convalidare che la risorsa padre (nella condizione if) sia nello stesso percorso della risorsa della risorsa correlata corrispondente.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.

Esempio di AuditIfNotExistsAuditIfNotExists example

Esempio: valuta le macchine virtuali per determinare se esiste l'estensione antimalware, quindi consente di controllare quando manca.Example: Evaluates Virtual Machines to determine if the Antimalware extension exists then audits when missing.

{
    "if": {
        "field": "type",
        "equals": "Microsoft.Compute/virtualMachines"
    },
    "then": {
        "effect": "auditIfNotExists",
        "details": {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "existenceCondition": {
                "allOf": [{
                        "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                        "equals": "Microsoft.Azure.Security"
                    },
                    {
                        "field": "Microsoft.Compute/virtualMachines/extensions/type",
                        "equals": "IaaSAntimalware"
                    }
                ]
            }
        }
    }
}

NegaDeny

Deny viene usato per impedire una richiesta di risorse che non corrisponde agli standard definiti tramite una definizione dei criteri e che genera un errore della richiesta.Deny is used to prevent a resource request that doesn't match defined standards through a policy definition and fails the request.

Valutazione di DenyDeny evaluation

Quando si crea o si aggiorna una risorsa corrispondente in una modalità Gestione risorse, Deny impedisce la richiesta prima dell'invio al provider di risorse.When creating or updating a matched resource in a Resource Manager mode, deny prevents the request before being sent to the Resource Provider. La richiesta viene restituita come 403 (Forbidden).The request is returned as a 403 (Forbidden). Nel portale l'accesso negato può essere visualizzato come stato della distribuzione impedita dall'assegnazione dei criteri.In the portal, the Forbidden can be viewed as a status on the deployment that was prevented by the policy assignment. Per una modalità del provider di risorse, il provider di risorse gestisce la valutazione della risorsa.For a Resource Provider mode, the resource provider manages the evaluation of the resource.

Durante la valutazione di risorse esistenti, le risorse che corrispondono a una definizione di criteri Deny vengono contrassegnate come non conformi.During evaluation of existing resources, resources that match a deny policy definition are marked as non-compliant.

Proprietà di DenyDeny properties

Per una modalità Gestione risorse, l'effetto nega non ha proprietà aggiuntive da usare nella condizione then della definizione dei criteri.For a Resource Manager mode, the deny effect doesn't have any additional properties for use in the then condition of the policy definition.

Per la modalità del provider di risorse Microsoft.Kubernetes.Data , l'effetto di negazione presenta le sottoproprietà aggiuntive seguenti dei Dettagli.For a Resource Provider mode of Microsoft.Kubernetes.Data, the deny effect has the following additional subproperties of details.

  • constraintTemplate (obbligatorio)constraintTemplate (required)
    • Il modello Constraint CustomResourceDefinition (CRD) che definisce nuovi vincoli.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Il modello definisce la logica Rego, lo schema Constraint e i parametri Constraint passati tramite valori da Criteri di Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • vincolo (obbligatorio)constraint (required)
    • L'implementazione CRD del modello Constraint.The CRD implementation of the Constraint template. Usa i parametri passati tramite valori come {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. Nell'esempio 2 riportato di seguito questi valori sono {{ .Values.excludedNamespaces }} e {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • valori (facoltativo)values (optional)
    • Definisce tutti i parametri e i valori da passare a Constraint.Defines any parameters and values to pass to the Constraint. Ogni valore deve esistere nel modello Constraint CRD.Each value must exist in the Constraint template CRD.

Esempio di DenyDeny example

Esempio 1: uso dell'effetto Deny per le modalità di Gestione risorse.Example 1: Using the deny effect for Resource Manager modes.

"then": {
    "effect": "deny"
}

Esempio 2: uso dell'effetto Deny per una modalità del provider di risorse Microsoft.Kubernetes.Data .Example 2: Using the deny effect for a Resource Provider mode of Microsoft.Kubernetes.Data. Le informazioni aggiuntive in Dettagli definiscono il modello di vincolo e la CRD da usare in Kubernetes per limitare le immagini del contenitore consentito.The additional information in details defines the Constraint template and CRD to use in Kubernetes to limit the allowed container images.

"then": {
    "effect": "deny",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/constraint.yaml",
        "values": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]",
            "excludedNamespaces": "[parameters('excludedNamespaces')]"
        }
    }
}

DeployIfNotExistsDeployIfNotExists

Analogamente ad AuditIfNotExists, una definizione dei criteri DeployIfNotExists esegue una distribuzione di modelli quando la condizione viene soddisfatta.Similar to AuditIfNotExists, a DeployIfNotExists policy definition executes a template deployment when the condition is met.

Nota

I Modelli nidificati sono supportati con deployIfNotExists ma i Modelli collegati non sono attualmente supportati.Nested templates are supported with deployIfNotExists, but linked templates are currently not supported.

Valutazione di DeployIfNotExistsDeployIfNotExists evaluation

DeployIfNotExists viene eseguito circa 15 minuti dopo che un provider di risorse ha gestito una sottoscrizione di creazione o aggiornamento o una richiesta di risorsa e ha restituito un codice di stato di esito positivo.DeployIfNotExists runs about 15 minutes after a Resource Provider has handled a create or update subscription or resource request and has returned a success status code. Una distribuzione di modello si verifica se non ci sono risorse correlate o se le risorse definite da ExistenceCondition non restituiscono true.A template deployment occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. La durata della distribuzione dipende dalla complessità delle risorse incluse nel modello.The duration of the deployment depends on the complexity of resources included in the template.

Durante un ciclo di valutazione, le definizioni dei criteri con un effetto DeployIfNotExists che corrispondono alle risorse vengono contrassegnate come non conformi, ma non vengono eseguite azioni sulla risorsa stessa.During an evaluation cycle, policy definitions with a DeployIfNotExists effect that match resources are marked as non-compliant, but no action is taken on that resource. È possibile correggere le risorse non conformi esistenti con un'attività di correzione.Existing non-compliant resources can be remediated with a remediation task.

Proprietà di DeployIfNotExistsDeployIfNotExists properties

La proprietà details dell'effetto DeployIfNotExists ha tutte le sottoproprietà che definiscono le risorse correlate a cui corrispondere e la distribuzione di modelli da eseguire.The details property of the DeployIfNotExists effect has all the subproperties that define the related resources to match and the template deployment to execute.

  • Tipo (obbligatorio)Type (required)

    • Specifica il tipo della risorsa correlata a cui corrispondere.Specifies the type of the related resource to match.
    • Inizia cercando di recuperare una risorsa sottostante la risorsa della condizione if, quindi esegue una query all'interno dello stesso gruppo di risorse come risorsa della condizione if.Starts by trying to fetch a resource underneath the if condition resource, then queries within the same resource group as the if condition resource.
  • Name (facoltativo)Name (optional)

    • Specifica il nome esatto della risorsa a cui corrispondere e fa sì che il criterio recuperi una risorsa specifica invece di tutte le risorse del tipo specificato.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Quando i valori della condizione per if. Field. Type e then. Details. Type corrispondono, il nome diventa obbligatorio e deve essere [field('name')] o [field('fullName')] per una risorsa figlio.When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')], or [field('fullName')] for a child resource.
  • ResourceGroupName (facoltativo)ResourceGroupName (optional)

    • Consente che la corrispondenza della risorsa correlata provenga da un gruppo di risorse diverso.Allows the matching of the related resource to come from a different resource group.
    • Non è applicabile se type è una risorsa sottostante la risorsa della condizione if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • L'impostazione predefinita è il gruppo di risorse della risorsa della condizione if.Default is the if condition resource's resource group.
    • Se viene eseguita una distribuzione di modelli, la distribuzione avviene nel gruppo di risorse di questo valore.If a template deployment is executed, it's deployed in the resource group of this value.
  • ExistenceScope (facoltativo)ExistenceScope (optional)

    • I valori consentiti sono Subscription e ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Imposta l'ambito dove recuperare la risorsa correlata a cui corrispondere.Sets the scope of where to fetch the related resource to match from.
    • Non è applicabile se type è una risorsa sottostante la risorsa della condizione if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Per ResourceGroup, si limita al gruppo di risorse della risorsa della condizione if o al gruppo di risorse specificato in ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Per Subscription, esegue una query nell'intera sottoscrizione per la risorsa correlata.For Subscription, queries the entire subscription for the related resource.
    • L'impostazione predefinita è ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (facoltativo)ExistenceCondition (optional)

    • Se non specificato, qualsiasi risorsa correlata di type soddisfa l'effetto e non attiva la distribuzione.If not specified, any related resource of type satisfies the effect and doesn't trigger the deployment.
    • Usa lo stesso linguaggio della regola dei criteri per la condizione if, ma viene valutato singolarmente rispetto a ogni risorsa correlata.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Se qualsiasi risorsa correlata corrispondente restituisce true, l'effetto è soddisfatto e non attiva la distribuzione.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the deployment.
    • Può usare [field()] per controllare l'equivalenza con i valori nella condizione if.Can use [field()] to check equivalence with values in the if condition.
    • Ad esempio, può essere usato per convalidare che la risorsa padre (nella condizione if) sia nello stesso percorso della risorsa della risorsa correlata corrispondente.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.
  • roleDefinitionIds (obbligatorio)roleDefinitionIds (required)

  • DeploymentScope (facoltativo)DeploymentScope (optional)

    • I valori consentiti sono Subscription e ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Imposta il tipo di distribuzione da attivare.Sets the type of deployment to be triggered. Subscription indica una distribuzione a livello di sottoscrizione, ResourceGroup indica una distribuzione a un gruppo di risorse.Subscription indicates a deployment at subscription level, ResourceGroup indicates a deployment to a resource group.
    • Una proprietà location deve essere specificata in Deployment quando si usano distribuzioni a livello di sottoscrizione.A location property must be specified in the Deployment when using subscription level deployments.
    • L'impostazione predefinita è ResourceGroup.Default is ResourceGroup.
  • Distribuzione (obbligatoria)Deployment (required)

    • Questa proprietà deve contenere la distribuzione di modelli completa passata all'API PUT Microsoft.Resources/deployments.This property should include the full template deployment as it would be passed to the Microsoft.Resources/deployments PUT API. Per altre informazioni, vedere l'API REST per le distribuzioni.For more information, see the Deployments REST API.

    Nota

    Tutte le funzioni all'interno della proprietà Deployment vengono valutate come componenti del modello, non del criterio.All functions inside the Deployment property are evaluated as components of the template, not the policy. L'eccezione è costituita dalla proprietà parameters che passa i valori dai criteri al modello.The exception is the parameters property that passes values from the policy to the template. value in questa sezione sotto un nome di parametro del modello viene usato per eseguire il passaggio del valore (vedere fullDbName nell'esempio di DeployIfNotExists).The value in this section under a template parameter name is used to perform this value passing (see fullDbName in the DeployIfNotExists example).

Esempio di DeployIfNotExistsDeployIfNotExists example

Esempio: valuta i database SQL Server per determinare se transparentDataEncryption è abilitato.Example: Evaluates SQL Server databases to determine if transparentDataEncryption is enabled. In caso contrario, viene eseguita una distribuzione per abilitarlo.If not, then a deployment to enable is executed.

"if": {
    "field": "type",
    "equals": "Microsoft.Sql/servers/databases"
},
"then": {
    "effect": "DeployIfNotExists",
    "details": {
        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
        "name": "current",
        "roleDefinitionIds": [
            "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
            "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
        ],
        "existenceCondition": {
            "field": "Microsoft.Sql/transparentDataEncryption.status",
            "equals": "Enabled"
        },
        "deployment": {
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                        "fullDbName": {
                            "type": "string"
                        }
                    },
                    "resources": [{
                        "name": "[concat(parameters('fullDbName'), '/current')]",
                        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
                        "apiVersion": "2014-04-01",
                        "properties": {
                            "status": "Enabled"
                        }
                    }]
                },
                "parameters": {
                    "fullDbName": {
                        "value": "[field('fullName')]"
                    }
                }
            }
        }
    }
}

DisabledDisabled

Questo effetto è utile per gli scenari di test o quando la definizione dei criteri ha parametrizzato l'effetto.This effect is useful for testing situations or for when the policy definition has parameterized the effect. Grazie a questa flessibilità è possibile disabilitare una singola assegnazione invece di disabilitare tutte le assegnazioni di quei criteri.This flexibility makes it possible to disable a single assignment instead of disabling all of that policy's assignments.

Un'alternativa all'effetto disabilitato è enforcementMode, che viene impostato nell'assegnazione dei criteri.An alternative to the Disabled effect is enforcementMode, which is set on the policy assignment. Quando enforcementMode viene disabilitato, le risorse vengono comunque valutate.When enforcementMode is Disabled, resources are still evaluated. La registrazione, ad esempio i log attività, e l'effetto del criterio non si verificano.Logging, such as Activity logs, and the policy effect don't occur. Per altre informazioni, vedere assegnazione di criteri - modalità di imposizione.For more information, see policy assignment - enforcement mode.

EnforceOPAConstraintEnforceOPAConstraint

Questo effetto viene usato con una modalità di definizione di criteri di Microsoft.Kubernetes.Data.This effect is used with a policy definition mode of Microsoft.Kubernetes.Data. Viene usato per passare le regole di controllo dell'ammissione di Gatekeeper v3 definite con OPA Constraint Framework in Open Policy Agent (OPA) per i cluster Kubernetes in Azure.It's used to pass Gatekeeper v3 admission control rules defined with OPA Constraint Framework to Open Policy Agent (OPA) to Kubernetes clusters on Azure.

Importante

Le definizioni dei criteri di anteprima limitati con effetto EnforceOPAConstraint e la categoria del servizio Kubernetes correlata sono deprecate.The limited preview policy definitions with EnforceOPAConstraint effect and the related Kubernetes Service category are deprecated. Usare invece la modalità di controllo degli effetti e di negazione con il provider di risorse Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Valutazione EnforceOPAConstraintEnforceOPAConstraint evaluation

Il controller di ammissione di Open Policy Agent valuta tutte le nuove richieste nel cluster in tempo reale.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Ogni 15 minuti, viene completata un'analisi completa del cluster e i risultati vengono segnalati a Criteri di Azure.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Proprietà EnforceOPAConstraintEnforceOPAConstraint properties

Nella proprietà details dell'effetto EnforceOPAConstraint sono presenti le sottoproprietà che descrivono la regola di controllo dell'ammissione Gatekeeper v3.The details property of the EnforceOPAConstraint effect has the subproperties that describe the Gatekeeper v3 admission control rule.

  • constraintTemplate (obbligatorio)constraintTemplate (required)
    • Il modello Constraint CustomResourceDefinition (CRD) che definisce nuovi vincoli.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Il modello definisce la logica Rego, lo schema Constraint e i parametri Constraint passati tramite valori da Criteri di Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • vincolo (obbligatorio)constraint (required)
    • L'implementazione CRD del modello Constraint.The CRD implementation of the Constraint template. Usa i parametri passati tramite valori come {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. Nell'esempio seguente questi valori sono {{ .Values.cpuLimit }} e {{ .Values.memoryLimit }}.In the example below, these values are {{ .Values.cpuLimit }} and {{ .Values.memoryLimit }}.
  • valori (facoltativo)values (optional)
    • Definisce tutti i parametri e i valori da passare a Constraint.Defines any parameters and values to pass to the Constraint. Ogni valore deve esistere nel modello Constraint CRD.Each value must exist in the Constraint template CRD.

Esempio EnforceOPAConstraintEnforceOPAConstraint example

Esempio: Regola di controllo dell'ammissione di Gatekeeper v3 per impostare i limiti delle risorse di memoria e CPU del contenitore in Kubernetes.Example: Gatekeeper v3 admission control rule to set container CPU and memory resource limits in Kubernetes.

"if": {
    "allOf": [
        {
            "field": "type",
            "in": [
                "Microsoft.ContainerService/managedClusters",
                "AKS Engine"
            ]
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "enforceOPAConstraint",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
        "values": {
            "cpuLimit": "[parameters('cpuLimit')]",
            "memoryLimit": "[parameters('memoryLimit')]"
        }
    }
}

EnforceRegoPolicyEnforceRegoPolicy

Questo effetto viene usato con una modalità di definizione dei criteri di Microsoft.ContainerService.Data.This effect is used with a policy definition mode of Microsoft.ContainerService.Data. Viene usato per passare le regole di controllo dell'ammissione di Gatekeeper v2 definite con Rego in Open Policy Agent (OPA) nei servizi Azure Kubernetes.It's used to pass Gatekeeper v2 admission control rules defined with Rego to Open Policy Agent (OPA) on Azure Kubernetes Service.

Importante

Le definizioni dei criteri in anteprima limitata con l'effetto EnforceRegoPolicy e la categoria Servizio Kubernetes sono deprecate.The limited preview policy definitions with EnforceRegoPolicy effect and the related Kubernetes Service category are deprecated. Usare invece la modalità di controllo degli effetti e di negazione con il provider di risorse Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Valutazione EnforceRegoPolicyEnforceRegoPolicy evaluation

Il controller di ammissione di Open Policy Agent valuta tutte le nuove richieste nel cluster in tempo reale.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Ogni 15 minuti, viene completata un'analisi completa del cluster e i risultati vengono segnalati a Criteri di Azure.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Proprietà EnforceRegoPolicyEnforceRegoPolicy properties

Nella proprietà details dell'effetto EnforceRegoPolicy sono presenti le sottoproprietà che descrivono la regola di controllo dell'ammissione Gatekeeper v2.The details property of the EnforceRegoPolicy effect has the subproperties that describe the Gatekeeper v2 admission control rule.

  • policyId (obbligatorio)policyId (required)
    • Un nome univoco passato come parametro alla regola di controllo dell'ammissione Rego.A unique name passed as a parameter to the Rego admission control rule.
  • criterio (obbligatorio)policy (required)
    • Specifica l'URI della regola di controllo dell'ammissione Rego.Specifies the URI of the Rego admission control rule.
  • policyParameters (facoltativo)policyParameters (optional)
    • Definisce tutti i parametri e i valori da passare al criterio Rego.Defines any parameters and values to pass to the rego policy.

Esempio EnforceRegoPolicyEnforceRegoPolicy example

Esempio: Regola di controllo di ammissione Gatekeeper V2 per consentire solo le immagini del contenitore specificate in AKS.Example: Gatekeeper v2 admission control rule to allow only the specified container images in AKS.

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.ContainerService/managedClusters"
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "EnforceRegoPolicy",
    "details": {
        "policyId": "ContainerAllowedImages",
        "policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
        "policyParameters": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
        }
    }
}

ModificaModify

La modifica viene utilizzata per aggiungere, aggiornare o rimuovere proprietà o tag in una sottoscrizione o in una risorsa durante la creazione o l'aggiornamento.Modify is used to add, update, or remove properties or tags on a subscription or resource during creation or update. Un esempio comune è l'aggiornamento di tag per le risorse come costCenter.A common example is updating tags on resources such as costCenter. È possibile correggere le risorse non conformi esistenti con un'attività di correzione.Existing non-compliant resources can be remediated with a remediation task. Una regola Modify singola può avere un numero qualsiasi di operazioni.A single Modify rule can have any number of operations.

Le operazioni seguenti sono supportate da modifica:The following operations are supported by Modify:

  • Aggiungere, sostituire o rimuovere i tag delle risorse.Add, replace or remove resource tags. Per i tag, un criterio di modifica deve avere mode impostato su indicizzato , a meno che la risorsa di destinazione non sia un gruppo di risorse.For tags, a Modify policy should have mode set to Indexed unless the target resource is a resource group.
  • Aggiungere o sostituire il valore del tipo di identità gestita ( identity.type ) di macchine virtuali e set di scalabilità di macchine virtuali.Add or replace the value of managed identity type (identity.type) of virtual machines and virtual machine scale sets.
  • Aggiungere o sostituire i valori di determinati alias (anteprima).Add or replace the values of certain aliases (preview).
    • Utilizzare Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }.Use Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } in Azure PowerShell 4.6.0 o versione successiva per ottenere un elenco di alias che possono essere usati con la modifica.in Azure PowerShell 4.6.0 or higher to get a list of aliases that can be used with Modify.

Importante

Se si gestiscono i tag, è consigliabile usare modifica anziché Accodamento come modifica fornisce tipi di operazione aggiuntivi e la possibilità di correggere le risorse esistenti.If you're managing tags, it's recommended to use Modify instead of Append as Modify provides additional operation types and the ability to remediate existing resources. Tuttavia, è consigliabile aggiungere se non si riesce a creare un'identità gestita o la modifica non supporta ancora l'alias per la proprietà della risorsa.However, Append is recommended if you aren't able to create a managed identity or Modify doesn't yet support the alias for the resource property.

Valutazione di ModifyModify evaluation

Modify viene valutato prima che la richiesta venga elaborata da un provider di risorse durante la creazione o l'aggiornamento di una risorsa.Modify evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Le operazioni di modifica vengono applicate al contenuto della richiesta quando viene soddisfatta la condizione if della regola dei criteri.The Modify operations are applied to the request content when the if condition of the policy rule is met. Ogni operazione di modifica può specificare una condizione che determina quando viene applicata.Each Modify operation can specify a condition that determines when it's applied. Le operazioni con condizioni che vengono valutate su false vengono ignorate.Operations with conditions that are evaluated to false are skipped.

Quando viene specificato un alias, vengono eseguiti i controlli aggiuntivi seguenti per assicurarsi che l'operazione di modifica non modifichi il contenuto della richiesta in modo che il provider di risorse lo rifiuti:When an alias is specified, the following additional checks are performed to ensure that the Modify operation doesn't change the request content in a way that causes the resource provider to reject it:

  • La proprietà a cui è associato l'alias è contrassegnata come ' modificabile ' nella versione dell'API della richiesta.The property the alias maps to is marked as 'Modifiable' in the request's API version.
  • Il tipo di token nell'operazione di modifica corrisponde al tipo di token previsto per la proprietà nella versione API della richiesta.The token type in the Modify operation matches the expected token type for the property in the request's API version.

Se uno di questi controlli ha esito negativo, la valutazione del criterio esegue il fallback al conflictEffect specificato.If either of these checks fail, the policy evaluation falls back to the specified conflictEffect.

Importante

È assoluta che la modifica delle definizioni che includono alias usa l' effetto dei conflitti di controllo per evitare richieste non riuscite usando le versioni API in cui la proprietà mappata non è' modificabile '.It's recommeneded that Modify definitions that include aliases use the audit conflict effect to avoid failing requests using API versions where the mapped property isn't 'Modifiable'. Se lo stesso alias si comporta in modo diverso tra le versioni dell'API, è possibile usare le operazioni di modifica condizionale per determinare l'operazione di modifica usata per ogni versione dell'API.If the same alias behaves differently between API versions, conditional modify operations can be used to determine the modify operation used for each API version.

Quando una definizione dei criteri che usa l'effetto Modify viene eseguita come parte di un ciclo di valutazione, non apporta modifiche alle risorse già esistenti.When a policy definition using the Modify effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Al contrario, contrassegna qualsiasi risorsa che soddisfi la condizione if come non conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Proprietà ModifyModify properties

La proprietà details dell'effetto Modify include tutte le sottoproprietà che definiscono le autorizzazioni necessarie per la correzione e le operazioni usate per aggiungere, aggiornare o rimuovere i valori dei tag.The details property of the Modify effect has all the subproperties that define the permissions needed for remediation and the operations used to add, update, or remove tag values.

  • roleDefinitionIds (obbligatorio)roleDefinitionIds (required)
    • Questa proprietà deve contenere una matrice di stringhe che corrispondono all'ID ruolo di controllo degli accessi in base al ruolo accessibile dalla sottoscrizione.This property must include an array of strings that match role-based access control role ID accessible by the subscription. Per altre informazioni, vedere Correzione: configurare la definizione dei criteri.For more information, see remediation - configure policy definition.
    • Il ruolo definito deve includere tutte le operazioni concesse al ruolo Contributor.The role defined must include all operations granted to the Contributor role.
  • conflictEffect (facoltativo)conflictEffect (optional)
    • Determina la definizione di criteri "WINS" nel caso in cui più definizioni di criteri modifichino la stessa proprietà o quando l'operazione di modifica non funziona sull'alias specificato.Determines which policy definition "wins" in the event that more than one policy definition modifies the same property or when the Modify operation doesn't work on the specified alias.
      • Per le risorse nuove o aggiornate, la definizione dei criteri con Deny ha la precedenza.For new or updated resources, the policy definition with deny takes precedence. Le definizioni dei criteri con Audit ignorano tutte le operazioni.Policy definitions with audit skip all operations. Se la definizione di un criterio è negata, la richiesta viene negata come conflitto.If more than one policy definition has deny, the request is denied as a conflict. Se tutte le definizioni dei criteri includono Audit, nessuna delle operazioni delle definizioni dei criteri in conflitto verrà elaborata.If all policy definitions have audit, then none of the operations of the conflicting policy definitions are processed.
      • Per le risorse esistenti, se più di una definizione di criteri contiene Deny, lo stato di conformità è Conflict.For existing resources, if more than one policy definition has deny, the compliance status is Conflict. Se una o più definizioni di criteri contengono Deny, ogni assegnazione restituisce uno stato di conformità non conforme.If one or fewer policy definitions have deny, each assignment returns a compliance status of Non-compliant.
    • Valori disponibili: Audit, Deny, disabled.Available values: audit, deny, disabled.
    • Il valore predefinito è Deny.Default value is deny.
  • operazioni (obbligatorio)operations (required)
    • Una matrice di tutte le operazioni di tag da completare sulle risorse corrispondenti.An array of all tag operations to be completed on matching resources.
    • Proprietà:Properties:
      • operazione (obbligatoria)operation (required)
        • Definisce l'azione da intraprendere su una risorsa corrispondente.Defines what action to take on a matching resource. Le opzioni sono: addOrReplace, Add, Remove.Options are: addOrReplace, Add, Remove. Add si comporta in modo analogo all'effetto Append.Add behaves similar to the Append effect.
      • Field (obbligatorio)field (required)
        • Il tag per aggiungere, sostituire o rimuovere.The tag to add, replace, or remove. I nomi di tag devono rispettare la stessa convenzione di denominazione per altri campi.Tag names must adhere to the same naming convention for other fields.
      • value (facoltativo)value (optional)
        • Il valore su cui impostare i tag.The value to set the tag to.
        • Questa proprietà è obbligatoria se operation è addOrReplace o Add.This property is required if operation is addOrReplace or Add.
      • condizione (facoltativa)condition (optional)
        • Stringa contenente un'espressione di linguaggio dei criteri di Azure con funzioni di criteri che restituiscono true o false.A string containing an Azure Policy language expression with Policy functions that evaluates to true or false.
        • Non supporta le funzioni dei criteri seguenti: field() , resourceGroup() , subscription() .Doesn't support the following Policy functions: field(), resourceGroup(), subscription().

Modificare le operazioniModify operations

Le matrice di proprietà operations consente di modificare diversi tag in modi diversi da una singola definizione di criteri.The operations property array makes it possible to alter several tags in different ways from a single policy definition. Ogni operazione è costituita da proprietà operation, field, e value.Each operation is made up of operation, field, and value properties. Operation determina l'attività di correzione per i tag, field determina quale tag viene modificato e value definisce la nuova impostazione per il tag.Operation determines what the remediation task does to the tags, field determines which tag is altered, and value defines the new setting for that tag. L'esempio seguente apporta le modifiche seguenti ai tag:The example below makes the following tag changes:

  • Imposta il tag environment su "Test", anche se esiste già con un valore diverso.Sets the environment tag to "Test", even if it already exists with a different value.
  • Rimuove il tag TempResource.Removes the tag TempResource.
  • Imposta il tag Dept sul parametro dei criteri DeptName configurato nell'assegnazione dei criteri.Sets the Dept tag to the policy parameter DeptName configured on the policy assignment.
"details": {
    ...
    "operations": [
        {
            "operation": "addOrReplace",
            "field": "tags['environment']",
            "value": "Test"
        },
        {
            "operation": "Remove",
            "field": "tags['TempResource']",
        },
        {
            "operation": "addOrReplace",
            "field": "tags['Dept']",
            "value": "[parameters('DeptName')]"
        }
    ]
}

Nella proprietà operation sono disponibili le opzioni seguenti:The operation property has the following options:

OperazioneOperation DescrizioneDescription
addOrReplaceaddOrReplace Aggiunge la proprietà definita o il tag e il valore alla risorsa, anche se la proprietà o il tag esiste già con un valore diverso.Adds the defined property or tag and value to the resource, even if the property or tag already exists with a different value.
AddAdd Aggiunge la proprietà, il tag e il valore definiti alla risorsa.Adds the defined property or tag and value to the resource.
RimuoviRemove Rimuove la proprietà o il tag definito dalla risorsa.Removes the defined property or tag from the resource.

Esempi di ModifyModify examples

Esempio 1: Aggiungere il tag environment e sostituire i tag environment esistenti con "Test":Example 1: Add the environment tag and replace existing environment tags with "Test":

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "Test"
            }
        ]
    }
}

Esempio 2: Rimuovere il tag env e aggiungere il tag environment o sostituire i tag environment esistenti con un valore con parametri:Example 2: Remove the env tag and add the environment tag or replace existing environment tags with a parameterized value:

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "conflictEffect": "deny",
        "operations": [
            {
                "operation": "Remove",
                "field": "tags['env']"
            },
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "[parameters('tagValue')]"
            }
        ]
    }
}

Esempio 3: assicurarsi che un account di archiviazione non consenta l'accesso pubblico ai BLOB, l'operazione di modifica viene applicata solo quando si valutano le richieste con versione API maggiore o uguale a' 2019-04-01':Example 3: Ensure that a storage account doesn't allow blob public access, the Modify operation is applied only when evaluating requests with API version greater or equals to '2019-04-01':

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
        ],
        "conflictEffect": "audit",
        "operations": [
            {
                "condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
                "operation": "addOrReplace",
                "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
                "value": false
            }
        ]
    }
}

Disposizione delle definizioni dei criteri su più livelliLayering policy definitions

Una risorsa potrebbe essere interessata da diverse assegnazioni.A resource may be impacted by several assignments. Queste assegnazioni possono essere nello stesso ambito o in ambiti diversi.These assignments may be at the same scope or at different scopes. È anche probabile che ognuna di queste assegnazioni abbia un effetto diverso definito.Each of these assignments is also likely to have a different effect defined. La condizione e l'effetto per ogni criterio vengono valutati in modo indipendente.The condition and effect for each policy is independently evaluated. Ad esempio:For example:

  • Criterio 1Policy 1
    • Limita la posizione delle risorse a "westus"Restricts resource location to 'westus'
    • Assegnato alla sottoscrizione AAssigned to subscription A
    • Effetto DenyDeny effect
  • Criterio 2Policy 2
    • Limita la posizione delle risorse a "eastus"Restricts resource location to 'eastus'
    • Assegnato al gruppo di risorse B nella sottoscrizione AAssigned to resource group B in subscription A
    • Effetto AuditAudit effect

Questa configurazione produrrebbe il risultato seguente:This setup would result in the following outcome:

  • Qualsiasi risorsa già presente nel gruppo di risorse B in "eastus" è conforme al criterio 2 e non conforme al criterio 1Any resource already in resource group B in 'eastus' is compliant to policy 2 and non-compliant to policy 1
  • Qualsiasi risorsa già presente nel gruppo di risorse B non in "eastus" è conforme al criterio 2 e non conforme al criterio 1 se non in "westus"Any resource already in resource group B not in 'eastus' is non-compliant to policy 2 and non-compliant to policy 1 if not in 'westus'
  • Qualsiasi nuova risorsa nella sottoscrizione A non in "westus" viene rifiutata dal criterio 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Qualsiasi nuova risorsa nella sottoscrizione A e nel gruppo di risorse B in "westus" è creata e non conforme al criterio 2Any new resource in subscription A and resource group B in 'westus' is created and non-compliant on policy 2

Se entrambi i criteri 1 e 2 avessero l'effetto Deny, la situazione diventerebbe la seguente:If both policy 1 and policy 2 had effect of deny, the situation changes to:

  • Qualsiasi risorsa già presente nel gruppo di risorse B non in "eastus" non è conforme al criterio 2Any resource already in resource group B not in 'eastus' is non-compliant to policy 2
  • Qualsiasi risorsa già presente nel gruppo di risorse B non in "westus" non è conforme al criterio 1Any resource already in resource group B not in 'westus' is non-compliant to policy 1
  • Qualsiasi nuova risorsa nella sottoscrizione A non in "westus" viene rifiutata dal criterio 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Qualsiasi nuova risorsa nel gruppo di risorse B della sottoscrizione A viene negataAny new resource in resource group B of subscription A is denied

Ogni assegnazione viene valutata singolarmente.Each assignment is individually evaluated. Di conseguenza, non c'è alcuna possibilità di inserire per sbaglio una risorsa a causa delle differenze nell'ambito.As such, there isn't an opportunity for a resource to slip through a gap from differences in scope. Il risultato finale della disposizione delle definizioni dei criteri su più livelli è considerato cumulativo più restrittivo.The net result of layering policy definitions is considered to be cumulative most restrictive. Ad esempio, se entrambi i criteri 1 e 2 avessero un effetto Deny, una risorsa verrebbe bloccata dalle definizioni dei criteri sovrapposte e in conflitto.As an example, if both policy 1 and 2 had a deny effect, a resource would be blocked by the overlapping and conflicting policy definitions. Se è ancora necessario che la risorsa venga creata nell'ambito di destinazione, rivedere le esclusioni per ogni assegnazione per verificare che le assegnazioni dei criteri corretti interessino gli ambiti corretti.If you still need the resource to be created in the target scope, review the exclusions on each assignment to validate the right policy assignments are affecting the right scopes.

Passaggi successiviNext steps