Compreender os efeitos da Política AzureUnderstand Azure Policy effects

Cada definição de política no Azure Policy tem um efeito único.Each policy definition in Azure Policy has a single effect. Este efeito determina o que acontece quando a regra da política é avaliada de acordo com.That effect determines what happens when the policy rule is evaluated to match. Os efeitos comportam-se de forma diferente se forem para um novo recurso, um recurso atualizado ou um recurso existente.The effects behave differently if they are for a new resource, an updated resource, or an existing resource.

Estes efeitos são atualmente apoiados numa definição de política:These effects are currently supported in a policy definition:

Os seguintes efeitos são depreciados:The following effects are deprecated:

Importante

Em vez dos efeitos DoPlipaConstraint ou EnforceRegoPolicy, utilize auditoria e negue com o modo fornecedor de Microsoft.Kubernetes.Data recursos.In place of the EnforceOPAConstraint or EnforceRegoPolicy effects, use audit and deny with Resource Provider mode Microsoft.Kubernetes.Data. As definições políticas incorporadas foram atualizadas.The built-in policy definitions have been updated. Quando as atribuições políticas existentes destas definições de política incorporadas forem alteradas, o parâmetro de efeito deve ser alterado para um valor na lista de Valores Devues permitidos atualizados.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.

Ordem de avaliaçãoOrder of evaluation

Os pedidos para criar ou atualizar um recurso são avaliados pela Azure Policy em primeiro lugar.Requests to create or update a resource are evaluated by Azure Policy first. A Azure Policy cria uma lista de todas as atribuições que se aplicam ao recurso e, em seguida, avalia o recurso em cada definição.Azure Policy creates a list of all assignments that apply to the resource and then evaluates the resource against each definition. Para um modo gestor de recursos,a Azure Policy processa vários dos efeitos antes de entregar o pedido ao Fornecedor de Recursos apropriado.For a Resource Manager mode, Azure Policy processes several of the effects before handing the request to the appropriate Resource Provider. Esta ordem impede o processamento desnecessário por um Fornecedor de Recursos quando um recurso não satisfaz os controlos de governação projetados da Azure Policy.This order prevents unnecessary processing by a Resource Provider when a resource doesn't meet the designed governance controls of Azure Policy. Com um modo Fornecedor de Recursos,o Fornecedor de Recursos gere a avaliação e o resultado e reporta os resultados de volta à Política Azure.With a Resource Provider mode, the Resource Provider manages the evaluation and outcome and reports the results back to Azure Policy.

  • Os deficientes são verificados primeiro para determinar se a regra da política deve ser avaliada.Disabled is checked first to determine if the policy rule should be evaluated.
  • Os apêndices e modificações são então avaliados.Append and Modify are then evaluated. Uma vez que qualquer um dos dois poderia alterar o pedido, uma alteração feita pode impedir que uma auditoria ou o efeito de negação desencadeie.Since either could alter the request, a change made may prevent an audit or deny effect from triggering. Estes efeitos só estão disponíveis com um modo Gestor de Recursos.These effects are only available with a Resource Manager mode.
  • O Deny é então avaliado.Deny is then evaluated. Ao avaliar a negação antes da auditoria, é evitado o duplo registo de um recurso não existente.By evaluating deny before audit, double logging of an undesired resource is prevented.
  • A auditoria é avaliada em último lugar.Audit is evaluated last.

Depois de o Fornecedor de Recursos retornar um código de sucesso num pedido de modo Gestor de Recursos, auditifNotExists e DeployIfNotExists avaliam para determinar se é necessário registo ou ação adicional de conformidade.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.

Além disso, PATCH os pedidos que apenas modificam tags os campos relacionados restringem a avaliação das políticas que contêm condições que inspecionam tags os campos relacionados.Additionally, PATCH requests that only modify tags related fields restricts policy evaluation to policies containing conditions that inspect tags related fields.

AcrescentarAppend

O apêndice é utilizado para adicionar campos adicionais ao recurso solicitado durante a criação ou atualização.Append is used to add additional fields to the requested resource during creation or update. Um exemplo comum é especificar os IPs permitidos para um recurso de armazenamento.A common example is specifying allowed IPs for a storage resource.

Importante

O apêndice destina-se a ser utilizado com propriedades não etiquetas.Append is intended for use with non-tag properties. Embora o Apêndice possa adicionar tags a um recurso durante um pedido de criação ou atualização, é recomendado utilizar o efeito Modificar para tags.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.

Avaliação do apêndiceAppend evaluation

O apêndice avalia antes de o pedido ser processado por um Fornecedor de Recursos durante a criação ou atualização de um recurso.Append evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. O apêndice adiciona campos ao recurso quando a condição da regra política é cumprida.Append adds fields to the resource when the if condition of the policy rule is met. Se o efeito de apêndice sobrepor-se a um valor no pedido original com um valor diferente, então atua como um efeito de negação e rejeita o pedido.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. Para anexar um novo valor a uma matriz existente, use a [*] versão do pseudónimo.To append a new value to an existing array, use the [*] version of the alias.

Quando uma definição de política usando o efeito apêndice é executada como parte de um ciclo de avaliação, não faz alterações aos recursos que já existem.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. Em vez disso, marca qualquer recurso que satisfaça a condição de não conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Propriedades do apêndiceAppend properties

Um efeito de apêndice tem apenas um conjunto de detalhes, que é necessário.An append effect only has a details array, which is required. Como os detalhes são uma matriz, pode levar um único par de campo/valor ou múltiplos.As details is an array, it can take either a single field/value pair or multiples. Consulte a estrutura de definição para a lista de campos aceitáveis.Refer to definition structure for the list of acceptable fields.

Exemplos de apêndiceAppend examples

Exemplo 1: Par de campo/valor único usando um [*] não-pseudónimo com um valor de matriz para definir regras IP numa conta de armazenamento.Example 1: Single field/value pair using a non-[*] alias with an array value to set IP rules on a storage account. Quando o [*] não-pseudónimo é uma matriz, o efeito anexa o valor como toda a matriz.When the non-[*] alias is an array, the effect appends the value as the entire array. Se a matriz já existe, um evento de negação ocorre do conflito.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"
        }]
    }]
}

Exemplo 2: Par de campo/valor único usando [*] um pseudónimo com um valor de matriz para definir regras IP numa conta de armazenamento.Example 2: Single field/value pair using an [*] alias with an array value to set IP rules on a storage account. Ao utilizar o [*] pseudónimo, o efeito anexa o valor a uma matriz potencialmente pré-existente.By using the [*] alias, the effect appends the value to a potentially pre-existing array. Se a matriz ainda não existe, é criada.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"
        }
    }]
}

AuditoriaAudit

A auditoria é usada para criar um evento de alerta no registo de atividades ao avaliar um recurso não conforme, mas não impede o pedido.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.

Avaliação de auditoriaAudit evaluation

A auditoria é o último efeito verificado pela Azure Policy durante a criação ou atualização de um recurso.Audit is the last effect checked by Azure Policy during the creation or update of a resource. Para um modo gestor de recursos, a Azure Policy envia então o recurso para o Fornecedor de Recursos.For a Resource Manager mode, Azure Policy then sends the resource to the Resource Provider. Ao avaliar um pedido de criação ou atualização de um recurso, a Azure Policy adiciona uma Microsoft.Authorization/policies/audit/action operação ao registo de atividade e marca o recurso como incompatível.When evaluating a create or update request for a resource, Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant. Durante um ciclo de avaliação padrão de conformidade, apenas o estado de conformidade no recurso é atualizado.During a standard compliance evaluation cycle, only the compliance status on the resource is updated.

Propriedades de auditoriaAudit properties

Para um modo gestor de recursos, o efeito de auditoria não tem quaisquer propriedades adicionais para uso no estado então da definição de política.For a Resource Manager mode, the audit effect doesn't have any additional properties for use in the then condition of the policy definition.

Para um modo de fornecedor de Microsoft.Kubernetes.Data recursos, o efeito de auditoria tem as seguintes subpropriedades adicionais de detalhes.For a Resource Provider mode of Microsoft.Kubernetes.Data, the audit effect has the following additional subproperties of details.

  • restriçãoTemplate (obrigatório)constraintTemplate (required)
    • O modelo de restrição CustomResourceDefinition (CRD) que define novos Constrangimentos.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. O modelo define a lógica rego, o esquema de Restrição e os parâmetros de Restrição que são passados através de valores da Política de Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • restrição (necessária)constraint (required)
    • A implementação de CRD do modelo De Restrição.The CRD implementation of the Constraint template. Utiliza parâmetros passados através de valores como {{ .Values.<valuename> }} .Uses parameters passed via values as {{ .Values.<valuename> }}. No exemplo 2 abaixo, estes valores são {{ .Values.excludedNamespaces }} e {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • valores (opcional)values (optional)
    • Define quaisquer parâmetros e valores para passar para a Restrição.Defines any parameters and values to pass to the Constraint. Cada valor deve existir no modelo de restrição CRD.Each value must exist in the Constraint template CRD.

Exemplo de auditoriaAudit example

Exemplo 1: Utilização do efeito de auditoria para os modos gestor de recursos.Example 1: Using the audit effect for Resource Manager modes.

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

Exemplo 2: Utilizar o efeito de auditoria para um modo de Fornecedor de Recursos de Microsoft.Kubernetes.Data .Example 2: Using the audit effect for a Resource Provider mode of Microsoft.Kubernetes.Data. As informações adicionais em detalhes definem o modelo de Restrição e CRD para usar em Kubernetes para limitar as imagens permitidas do recipiente.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 permite a auditoria de recursos relacionados com o recurso que corresponde à condição de se, mas não tem as propriedades especificadas nos detalhes da condição então.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.

Avaliação auditIfNotExistsAuditIfNotExists evaluation

AuditIfNotExists funciona depois de um Fornecedor de Recursos ter tratado um pedido de criação ou atualização de recursos e ter devolvido um código de estado de sucesso.AuditIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. A auditoria ocorre se não houver recursos relacionados ou se os recursos definidos pela ExistênciaCondição não avaliarem verdadeiramente.The audit occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Para recursos novos e atualizados, a Azure Policy adiciona uma Microsoft.Authorization/policies/audit/action operação ao registo de atividades e marca o recurso como incompatível.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 acionado, o recurso que satisfez a condição de se é o recurso que é marcado como incompatível.When triggered, the resource that satisfied the if condition is the resource that is marked as non-compliant.

Propriedades auditIfNotExistsAuditIfNotExists properties

Os detalhes da propriedade dos efeitos AuditIfNotExists tem todas as subpropriedades que definem os recursos relacionados a combinar.The details property of the AuditIfNotExists effects has all the subproperties that define the related resources to match.

  • Tipo (obrigatório)Type (required)
    • Especifica o tipo de recurso relacionado a combinar.Specifies the type of the related resource to match.
    • Se o detalhe.type é um tipo de recurso por baixo do recurso de condição, as consultas de política para recursos deste tipo no âmbito do recurso avaliado.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. Caso contrário, as consultas políticas dentro do mesmo grupo de recursos que o recurso avaliado.Otherwise, policy queries within the same resource group as the evaluated resource.
  • Nome (opcional)Name (optional)
    • Especifica o nome exato do recurso para corresponder e faz com que a política pegue um recurso específico em vez de todos os recursos do tipo especificado.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 a condição se avalia para se.field.type e, em seguida,.details.type match, então o nome torna-se necessário e deve ser , ou para um [field('name')] recurso [field('fullName')] infantil.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. No entanto, deve considerar-se um efeito de auditoria.However, an audit effect should be considered instead.
  • Nome do Grupo de Recursos (opcional)ResourceGroupName (optional)
    • Permite que a correspondência do recurso relacionado venha de um grupo de recursos diferente.Allows the matching of the related resource to come from a different resource group.
    • Não se aplica se o tipo for um recurso que estaria abaixo do recurso de condição.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • O predefinido é o grupo de recursos do recurso da condição.Default is the if condition resource's resource group.
  • ExistênciaScope (opcional)ExistenceScope (optional)
    • Os valores permitidos são Subscrição e Grupo de Recursos.Allowed values are Subscription and ResourceGroup.
    • Define o âmbito de onde buscar o recurso relacionado para combinar.Sets the scope of where to fetch the related resource to match from.
    • Não se aplica se o tipo for um recurso que estaria abaixo do recurso de condição.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Para o Grupo de Recursos, limitar-se-ia ao grupo de recursos do recurso se estiver em condições ou ao grupo de recursos especificado no ResourceGroupName. For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Para Subscrição, questione toda a subscrição do recurso relacionado.For Subscription, queries the entire subscription for the related resource.
    • Predefinido é Grupo de Recursos.Default is ResourceGroup.
  • ExistênciaCondição (opcional)ExistenceCondition (optional)
    • Se não for especificado, qualquer recurso relacionado do tipo satisfaz o efeito e não desencadeia a auditoria.If not specified, any related resource of type satisfies the effect and doesn't trigger the audit.
    • Usa a mesma linguagem que a regra da política para a condição se, mas é avaliada individualmente contra cada recurso relacionado.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Se qualquer recurso relacionado se avaliar de verdade, o efeito é satisfeito e não desencadeia a auditoria.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the audit.
    • Pode utilizar [campo)] para verificar a equivalência com valores na condição de se.Can use [field()] to check equivalence with values in the if condition.
    • Por exemplo, poderia ser usado para validar que o recurso principal (na condição em caso de condição) está na mesma localização de recurso que o recurso correspondente.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.

AuditIfNotExists exemploAuditIfNotExists example

Exemplo: Avalia máquinas virtuais para determinar se a extensão antimalware existe e, em seguida, audita quando falta.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"
                    }
                ]
            }
        }
    }
}

NegarDeny

O Deny é usado para evitar um pedido de recursos que não corresponda aos padrões definidos através de uma definição de política e falhe no pedido.Deny is used to prevent a resource request that doesn't match defined standards through a policy definition and fails the request.

Negar avaliaçãoDeny evaluation

Ao criar ou atualizar um recurso combinado num modo Gestor de Recursos, negar impede o pedido antes de ser enviado para o Fornecedor de Recursos.When creating or updating a matched resource in a Resource Manager mode, deny prevents the request before being sent to the Resource Provider. O pedido é devolvido como 403 (Forbidden) um .The request is returned as a 403 (Forbidden). No portal, o Proibido pode ser visto como um estatuto na implantação que foi impedido pela atribuição de políticas.In the portal, the Forbidden can be viewed as a status on the deployment that was prevented by the policy assignment. Para um modo fornecedor de recursos, o fornecedor de recursos gere a avaliação do recurso.For a Resource Provider mode, the resource provider manages the evaluation of the resource.

Durante a avaliação dos recursos existentes, os recursos que correspondem a uma definição de política de negação são marcados como incompatíveis.During evaluation of existing resources, resources that match a deny policy definition are marked as non-compliant.

Negar propriedadesDeny properties

Para um modo Gestor de Recursos, o efeito negar não tem quaisquer propriedades adicionais para uso no estado então da definição de política.For a Resource Manager mode, the deny effect doesn't have any additional properties for use in the then condition of the policy definition.

Para um modo de fornecedor de recursos Microsoft.Kubernetes.Data de , o efeito de negação tem as seguintes subproperriedades adicionais de detalhes.For a Resource Provider mode of Microsoft.Kubernetes.Data, the deny effect has the following additional subproperties of details.

  • restriçãoTemplate (obrigatório)constraintTemplate (required)
    • O modelo de restrição CustomResourceDefinition (CRD) que define novos Constrangimentos.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. O modelo define a lógica rego, o esquema de Restrição e os parâmetros de Restrição que são passados através de valores da Política de Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • restrição (necessária)constraint (required)
    • A implementação de CRD do modelo De Restrição.The CRD implementation of the Constraint template. Utiliza parâmetros passados através de valores como {{ .Values.<valuename> }} .Uses parameters passed via values as {{ .Values.<valuename> }}. No exemplo 2 abaixo, estes valores são {{ .Values.excludedNamespaces }} e {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • valores (opcional)values (optional)
    • Define quaisquer parâmetros e valores para passar para a Restrição.Defines any parameters and values to pass to the Constraint. Cada valor deve existir no modelo de restrição CRD.Each value must exist in the Constraint template CRD.

Negar exemploDeny example

Exemplo 1: Utilizar o efeito de negação para os modos gestor de recursos.Example 1: Using the deny effect for Resource Manager modes.

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

Exemplo 2: Utilizar o efeito de negação para um modo de Fornecedor de Recursos de Microsoft.Kubernetes.Data .Example 2: Using the deny effect for a Resource Provider mode of Microsoft.Kubernetes.Data. As informações adicionais em detalhes definem o modelo de Restrição e CRD para usar em Kubernetes para limitar as imagens permitidas do recipiente.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

Semelhante ao AuditIfNotExists, uma definição de política deployIfNotExists executa uma implementação do modelo quando a condição é satisfeita.Similar to AuditIfNotExists, a DeployIfNotExists policy definition executes a template deployment when the condition is met.

Nota

Os modelos de aninhados são suportados com implementaçõesIfNotExists, mas os modelos ligados não são suportados atualmente.Nested templates are supported with deployIfNotExists, but linked templates are currently not supported.

Implementação Avaliação DeNotExistsDeployIfNotExists evaluation

O DeployIfNotExists funciona cerca de 15 minutos depois de um Fornecedor de Recursos ter tratado uma subscrição ou pedido de recursos de criação ou atualização e ter devolvido um código de estado de sucesso.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. Uma implementação do modelo ocorre se não houver recursos relacionados ou se os recursos definidos pela ExistênciaCondição não avaliarem verdadeiramente.A template deployment occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. A duração da implantação depende da complexidade dos recursos incluídos no modelo.The duration of the deployment depends on the complexity of resources included in the template.

Durante um ciclo de avaliação, definições de políticas com um efeito DeployIfNotExists que correspondem aos recursos são marcados como incompatíveis, mas não são tomadas medidas nesse recurso.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. Os recursos existentes não conformes podem ser remediados com uma tarefa de reparação.Existing non-compliant resources can be remediated with a remediation task.

Implementar propriedades DoIfNotExistsDeployIfNotExists properties

A propriedade de detalhes do efeito DeployIfNotExists tem todas as subpropriedades que definem os recursos relacionados para corresponder e a implementação do modelo para executar.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 (obrigatório)Type (required)

    • Especifica o tipo de recurso relacionado a combinar.Specifies the type of the related resource to match.
    • Começa por tentar obter um recurso por baixo do recurso de condição, em seguida, questiona dentro do mesmo grupo de recursos que o recurso da condição.Starts by trying to fetch a resource underneath the if condition resource, then queries within the same resource group as the if condition resource.
  • Nome (opcional)Name (optional)

    • Especifica o nome exato do recurso para corresponder e faz com que a política pegue um recurso específico em vez de todos os recursos do tipo especificado.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 a condição se avalia para se.field.type e, em seguida,.details.type match, então o nome torna-se necessário e deve ser , ou para um [field('name')] recurso [field('fullName')] infantil.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.
  • Nome do Grupo de Recursos (opcional)ResourceGroupName (optional)

    • Permite que a correspondência do recurso relacionado venha de um grupo de recursos diferente.Allows the matching of the related resource to come from a different resource group.
    • Não se aplica se o tipo for um recurso que estaria abaixo do recurso de condição.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • O predefinido é o grupo de recursos do recurso da condição.Default is the if condition resource's resource group.
    • Se uma implementação do modelo for executada, é implantada no grupo de recursos deste valor.If a template deployment is executed, it's deployed in the resource group of this value.
  • ExistênciaScope (opcional)ExistenceScope (optional)

    • Os valores permitidos são Subscrição e Grupo de Recursos.Allowed values are Subscription and ResourceGroup.
    • Define o âmbito de onde buscar o recurso relacionado para combinar.Sets the scope of where to fetch the related resource to match from.
    • Não se aplica se o tipo for um recurso que estaria abaixo do recurso de condição.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Para o Grupo de Recursos, limitar-se-ia ao grupo de recursos do recurso se estiver em condições ou ao grupo de recursos especificado no ResourceGroupName. For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Para Subscrição, questione toda a subscrição do recurso relacionado.For Subscription, queries the entire subscription for the related resource.
    • Predefinido é Grupo de Recursos.Default is ResourceGroup.
  • ExistênciaCondição (opcional)ExistenceCondition (optional)

    • Se não for especificado, qualquer recurso relacionado do tipo satisfaz o efeito e não desencadeia a implantação.If not specified, any related resource of type satisfies the effect and doesn't trigger the deployment.
    • Usa a mesma linguagem que a regra da política para a condição se, mas é avaliada individualmente contra cada recurso relacionado.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Se qualquer recurso relacionado se avaliar de verdade, o efeito é satisfeito e não desencadeia a implantação.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the deployment.
    • Pode utilizar [campo)] para verificar a equivalência com valores na condição de se.Can use [field()] to check equivalence with values in the if condition.
    • Por exemplo, poderia ser usado para validar que o recurso principal (na condição em caso de condição) está na mesma localização de recurso que o recurso correspondente.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 (obrigatório)roleDefinitionIds (required)

  • Implementação DoScope (opcional)DeploymentScope (optional)

    • Os valores permitidos são Subscrição e Grupo de Recursos.Allowed values are Subscription and ResourceGroup.
    • Define o tipo de implantação a ser acionado.Sets the type of deployment to be triggered. A subscrição indica uma implementação ao nível de subscrição, o ResourceGroup indica uma implantação para um grupo de recursos.Subscription indicates a deployment at subscription level, ResourceGroup indicates a deployment to a resource group.
    • Uma propriedade de localização deve ser especificada na Implementação quando utilizar implementações de nível de subscrição.A location property must be specified in the Deployment when using subscription level deployments.
    • Predefinido é Grupo de Recursos.Default is ResourceGroup.
  • Implantação (necessária)Deployment (required)

    • Esta propriedade deve incluir a implementação completa do modelo, uma vez que seria passada para a Microsoft.Resources/deployments API PUT.This property should include the full template deployment as it would be passed to the Microsoft.Resources/deployments PUT API. Para obter mais informações, consulte a API de Implementações REST.For more information, see the Deployments REST API.

    Nota

    Todas as funções dentro da propriedade De implementação são avaliadas como componentes do modelo, não a política.All functions inside the Deployment property are evaluated as components of the template, not the policy. A exceção é a propriedade de parâmetros que passa valores da política para o modelo.The exception is the parameters property that passes values from the policy to the template. O valor nesta secção sob um nome de parâmetro de modelo é usado para executar este valor de passagem (ver fullDbName no exemplo DeployIfNotExists).The value in this section under a template parameter name is used to perform this value passing (see fullDbName in the DeployIfNotExists example).

Implementar Exemplo de NãoExistsDeployIfNotExists example

Exemplo: Avalia as bases de dados do SQL Server para determinar se oDataEncryption transparente está ativado.Example: Evaluates SQL Server databases to determine if transparentDataEncryption is enabled. Caso contrário, uma implantação para ativar é executada.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')]"
                    }
                }
            }
        }
    }
}

DesativadoDisabled

Este efeito é útil para situações de teste ou para quando a definição de política tiver parametrizado o efeito.This effect is useful for testing situations or for when the policy definition has parameterized the effect. Esta flexibilidade permite desativar uma única missão em vez de desativar todas as atribuições dessa apólice.This flexibility makes it possible to disable a single assignment instead of disabling all of that policy's assignments.

Uma alternativa ao efeito de deficientes é a "EnforcementMode", que está definida na atribuição de políticas.An alternative to the Disabled effect is enforcementMode, which is set on the policy assignment. Quando a aplicação da medida de medida é desativada, os recursos ainda são avaliados.When enforcementMode is Disabled, resources are still evaluated. O registo, como os registos de atividade, e o efeito da política não ocorrem.Logging, such as Activity logs, and the policy effect don't occur. Para obter mais informações, consulte a atribuição de políticas - modo de execução.For more information, see policy assignment - enforcement mode.

Normação DoPaConstradoEnforceOPAConstraint

Este efeito é utilizado com um modo de definição de política de Microsoft.Kubernetes.Data .This effect is used with a policy definition mode of Microsoft.Kubernetes.Data. É usado para passar regras de controlo de admissão gatekeeper v3 definidas com OPA Constraint Framework para Open Policy Agent (OPA) para clusters Kubernetes em 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

As definições limitadas de política de pré-visualização com efeito EnforceOPAConstraint e a categoria de Serviço Kubernetes conexa são depreciadas.The limited preview policy definitions with EnforceOPAConstraint effect and the related Kubernetes Service category are deprecated. Em vez disso, utilize a auditoria de efeitos e negue com o modo Fornecedor de Recursos Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Avaliação da Regra de Aplicação da OPAEnforceOPAConstraint evaluation

O controlador de admissão do Agente de Política Aberta avalia qualquer novo pedido no cluster em tempo real.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. A cada 15 minutos, uma varredura completa do cluster é completada e os resultados reportados à Azure Policy.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Executar propriedades da Empresa de Sub-2PAConstrataEnforceOPAConstraint properties

Os detalhes propriedade do efeito EnforceOPAConstraint tem as subpropriedades que descrevem a regra de controlo de admissão Gatekeeper v3.The details property of the EnforceOPAConstraint effect has the subproperties that describe the Gatekeeper v3 admission control rule.

  • restriçãoTemplate (obrigatório)constraintTemplate (required)
    • O modelo de restrição CustomResourceDefinition (CRD) que define novos Constrangimentos.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. O modelo define a lógica rego, o esquema de Restrição e os parâmetros de Restrição que são passados através de valores da Política de Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • restrição (necessária)constraint (required)
    • A implementação de CRD do modelo De Restrição.The CRD implementation of the Constraint template. Utiliza parâmetros passados através de valores como {{ .Values.<valuename> }} .Uses parameters passed via values as {{ .Values.<valuename> }}. No exemplo abaixo, estes valores são {{ .Values.cpuLimit }} e {{ .Values.memoryLimit }} .In the example below, these values are {{ .Values.cpuLimit }} and {{ .Values.memoryLimit }}.
  • valores (opcional)values (optional)
    • Define quaisquer parâmetros e valores para passar para a Restrição.Defines any parameters and values to pass to the Constraint. Cada valor deve existir no modelo de restrição CRD.Each value must exist in the Constraint template CRD.

Executar exemplo de RegrasOPAEnforceOPAConstraint example

Exemplo: Regra de controlo de admissão de gatekeeper v3 para definir cpu de contentor e limites de recursos de memória em 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')]"
        }
    }
}

Aplicação Da PolíticaEnforceRegoPolicy

Este efeito é utilizado com um modo de definição de política de Microsoft.ContainerService.Data .This effect is used with a policy definition mode of Microsoft.ContainerService.Data. É usado para passar regras de controlo de admissão Gatekeeper v2 definidas com Rego para Open Policy Agent (OPA) no Serviço 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

As definições de política de pré-visualização limitadas com o efeito EnforceRegoPolicy e a categoria de Serviço Kubernetes conexas são depreciadas.The limited preview policy definitions with EnforceRegoPolicy effect and the related Kubernetes Service category are deprecated. Em vez disso, utilize a auditoria de efeitos e negue com o modo Fornecedor de Recursos Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Avaliação de Política De AplicaçãoEnforceRegoPolicy evaluation

O controlador de admissão do Agente de Política Aberta avalia qualquer novo pedido no cluster em tempo real.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. A cada 15 minutos, uma varredura completa do cluster é completada e os resultados reportados à Azure Policy.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Executar propriedades daRegoPolicyEnforceRegoPolicy properties

Os detalhes propriedade do efeito EnforceRegoPolicy tem as subpropriedades que descrevem a regra de controlo de admissão gatekeeper v2.The details property of the EnforceRegoPolicy effect has the subproperties that describe the Gatekeeper v2 admission control rule.

  • policyId (obrigatório)policyId (required)
    • Um nome único passou como parâmetro para a regra de controlo de admissão rego.A unique name passed as a parameter to the Rego admission control rule.
  • política (necessária)policy (required)
    • Especifica o URI da regra de controlo de admissão rego.Specifies the URI of the Rego admission control rule.
  • apólicesParameters (opcional)policyParameters (optional)
    • Define quaisquer parâmetros e valores para passar para a política do rego.Defines any parameters and values to pass to the rego policy.

Impor Exemplo de PolíticaEnforceRegoPolicy example

Exemplo: Regra de controlo de admissão de porteiro v2 para permitir apenas as imagens de recipientes especificadas em 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')]"
        }
    }
}

ModificarModify

O modificar é utilizado para adicionar, atualizar ou remover propriedades ou tags numa subscrição ou recurso durante a criação ou atualização.Modify is used to add, update, or remove properties or tags on a subscription or resource during creation or update. Um exemplo comum é a atualização de etiquetas em recursos como o CostCenter.A common example is updating tags on resources such as costCenter. Os recursos existentes não conformes podem ser remediados com uma tarefa de reparação.Existing non-compliant resources can be remediated with a remediation task. Uma única regra de modificação pode ter qualquer número de operações.A single Modify rule can have any number of operations.

As seguintes operações são suportadas pela Modificação:The following operations are supported by Modify:

  • Adicione, substitua ou remova as etiquetas de recursos.Add, replace, or remove resource tags. Para etiquetas, uma política de modificação deveria ter mode definido para Indexado, a menos que o recurso-alvo seja um grupo de recursos.For tags, a Modify policy should have mode set to Indexed unless the target resource is a resource group.
  • Adicione ou substitua o valor do tipo de identidade gerido identity.type () de máquinas virtuais e conjuntos de balanças de máquinas virtuais.Add or replace the value of managed identity type (identity.type) of virtual machines and virtual machine scale sets.
  • Adicione ou substitua os valores de certos pseudónimos (pré-visualização).Add or replace the values of certain aliases (preview).
    • Utilizar o comando 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' } em Azure PowerShell 4.6.0 ou superior para obter uma lista de pseudónimos que podem ser usados com Modificação.in Azure PowerShell 4.6.0 or higher to get a list of aliases that can be used with Modify.

Importante

Se estiver a gerir tags, é aconselhável utilizar modificar em vez de apêndice, pois o Modificar fornece tipos de operação adicionais e a capacidade de remediar os recursos existentes.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. No entanto, o Apêndice é recomendado se não for capaz de criar uma identidade gerida ou modificar ainda não suporta o pseudónimo para a propriedade de recursos.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.

Modificar a avaliaçãoModify evaluation

Modifique avaliações antes de o pedido ser processado por um Fornecedor de Recursos durante a criação ou atualização de um recurso.Modify evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. As operações de Modificação são aplicadas ao conteúdo do pedido quando a condição da regra política é cumprida.The Modify operations are applied to the request content when the if condition of the policy rule is met. Cada operação de modificação pode especificar uma condição que determina quando é aplicada.Each Modify operation can specify a condition that determines when it's applied. As operações com condições que são avaliadas em falso são ignoradas.Operations with conditions that are evaluated to false are skipped.

Quando um pseudónimo é especificado, são realizados os seguintes controlos adicionais para garantir que a operação Modificação não altere o conteúdo do pedido de forma a levar o fornecedor de recursos a rejeitá-lo: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:

  • A propriedade a que o pseudónimo mapeia está marcada como "Modificável" na versão API do pedido.The property the alias maps to is marked as 'Modifiable' in the request's API version.
  • O tipo de símbolo na operação Modificar corresponde ao tipo de símbolo esperado para a propriedade na versão API do pedido.The token type in the Modify operation matches the expected token type for the property in the request's API version.

Se um destes controlos falhar, a avaliação da política recaem para o conflito especificado.If either of these checks fail, the policy evaluation falls back to the specified conflictEffect.

Importante

É recomefeitado que Modificar definições que incluem pseudónimos usam o efeito de conflito de auditoria para evitar pedidos falhados usando versões API onde a propriedade mapeada não é 'Modifiável'.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 o mesmo pseudónimo se comportar de forma diferente entre as versões API, podem ser utilizadas operações de modificação condicional para determinar a operação de modificação utilizada para cada versão 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 uma definição de política usando o efeito Modificar é executada como parte de um ciclo de avaliação, não faz alterações aos recursos que já existem.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. Em vez disso, marca qualquer recurso que satisfaça a condição de não conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Modificar propriedadesModify properties

Os detalhes da propriedade do efeito Modificar têm todas as subpropriedades que definem as permissões necessárias para a reparação e as operações usadas para adicionar, atualizar ou remover valores de marcação.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 (obrigatório)roleDefinitionIds (required)
  • conflitoFeito (opcional)conflictEffect (optional)
    • Determina qual a definição de política "ganha" se mais de uma definição de política modificar a mesma propriedade ou quando a operação Modificar não funciona no pseudónimo especificado.Determines which policy definition "wins" if more than one policy definition modifies the same property or when the Modify operation doesn't work on the specified alias.
      • Para recursos novos ou atualizados, a definição de política com negação tem precedência.For new or updated resources, the policy definition with deny takes precedence. Definições de política com auditoria saltam todas as operações.Policy definitions with audit skip all operations. Se mais do que uma definição política tiver negado, o pedido é negado como um conflito.If more than one policy definition has deny, the request is denied as a conflict. Se todas as definições políticas tiverem auditoria, nenhuma das operações das definições de política conflituosa será processada.If all policy definitions have audit, then none of the operations of the conflicting policy definitions are processed.
      • Para os recursos existentes, se mais do que uma definição política tiver de negar, o estatuto de conformidade é Conflito.For existing resources, if more than one policy definition has deny, the compliance status is Conflict. Se uma ou menos definições de política tiverem de negar, cada atribuição devolve um estatuto de conformidade de incumprimento.If one or fewer policy definitions have deny, each assignment returns a compliance status of Non-compliant.
    • Valores disponíveis: auditoria, negação, deficientes.Available values: audit, deny, disabled.
    • O valor predefinido é negar.Default value is deny.
  • operações (necessárias)operations (required)
    • Um conjunto de todas as operações de etiquetas a serem concluídas em recursos correspondentes.An array of all tag operations to be completed on matching resources.
    • Propriedades:Properties:
      • funcionamento (obrigatório)operation (required)
        • Define que ação tomar num recurso correspondente.Defines what action to take on a matching resource. As opções são: addOrReplace, Add, Remove.Options are: addOrReplace, Add, Remove. Adicione comporta-se semelhante ao efeito Apêndice.Add behaves similar to the Append effect.
      • campo (obrigatório)field (required)
        • A etiqueta para adicionar, substituir ou remover.The tag to add, replace, or remove. Os nomes de identificação devem aderir à mesma convenção de nomeação para outros domínios.Tag names must adhere to the same naming convention for other fields.
      • valor (opcional)value (optional)
        • O valor para definir a etiqueta para.The value to set the tag to.
        • Esta propriedade é necessária se a operação for addOrReplace ou Add.This property is required if operation is addOrReplace or Add.
      • condição (opcional)condition (optional)
        • Uma corda que contém uma expressão linguística Azure Policy com funções políticas que avaliam a verdade ou falsa.A string containing an Azure Policy language expression with Policy functions that evaluates to true or false.
        • Não suporta as seguintes funções políticas: field() resourceGroup() . . . subscription() .Doesn't support the following Policy functions: field(), resourceGroup(), subscription().

Modificar operaçõesModify operations

O conjunto de propriedades de operações permite alterar várias tags de diferentes maneiras a partir de uma única definição de política.The operations property array makes it possible to alter several tags in different ways from a single policy definition. Cada operação é constituída por propriedades de operação, campo e valor.Each operation is made up of operation, field, and value properties. O funcionamento determina o que a tarefa de remediação faz às tags, o campo determina qual a etiqueta alterada e o valor define a nova definição para essa etiqueta.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. O exemplo abaixo faz as seguintes alterações na etiqueta:The example below makes the following tag changes:

  • Define a environment etiqueta para "Testar", mesmo que já exista com um valor diferente.Sets the environment tag to "Test", even if it already exists with a different value.
  • Remove a etiqueta TempResource .Removes the tag TempResource.
  • Define a Dept etiqueta para o parâmetro de política DeptName configurado na atribuição de política.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')]"
        }
    ]
}

A propriedade de operação tem as seguintes opções:The operation property has the following options:

OperaçãoOperation DescriptionDescription
addOrReplaceaddOrReplace Adiciona a propriedade definida ou etiqueta e valor ao recurso, mesmo que o imóvel ou etiqueta já exista com um valor diferente.Adds the defined property or tag and value to the resource, even if the property or tag already exists with a different value.
AdicionarAdd Adiciona a propriedade definida ou etiqueta e valor ao recurso.Adds the defined property or tag and value to the resource.
RemoverRemove Remove a propriedade ou etiqueta definida do recurso.Removes the defined property or tag from the resource.

Modificar exemplosModify examples

Exemplo 1: Adicione a environment etiqueta e substitua environment as etiquetas existentes por "Teste":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"
            }
        ]
    }
}

Exemplo 2: Retire a env etiqueta e adicione a etiqueta ou environment substitua as environment etiquetas existentes por um valor parametrizado: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')]"
            }
        ]
    }
}

Exemplo 3: Certifique-se de que uma conta de armazenamento não permite o acesso público blob, a operação Modificar é aplicada apenas ao avaliar pedidos com versão API maior ou igual 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
            }
        ]
    }
}

Definições de políticas de camadasLayering policy definitions

Um recurso pode ser impactado por várias atribuições.A resource may be impacted by several assignments. Estas atribuições podem estar no mesmo âmbito ou em âmbitos diferentes.These assignments may be at the same scope or at different scopes. Cada uma destas atribuições também é suscetível de ter um efeito diferente definido.Each of these assignments is also likely to have a different effect defined. A condição e o efeito de cada política são avaliados de forma independente.The condition and effect for each policy is independently evaluated. Por exemplo:For example:

  • Política 1Policy 1
    • Restringe a localização dos recursos ao 'westus'Restricts resource location to 'westus'
    • Atribuída à assinatura AAssigned to subscription A
    • Negar efeitoDeny effect
  • Política 2Policy 2
    • Restringe a localização dos recursos ao 'eastus'Restricts resource location to 'eastus'
    • Atribuído ao grupo de recursos B na assinatura AAssigned to resource group B in subscription A
    • Efeito de auditoriaAudit effect

Esta configuração resultaria no seguinte resultado:This setup would result in the following outcome:

  • Qualquer recurso já no grupo de recursos B em 'eastus' está em conformidade com a política 2 e não está em conformidade com a política 1Any resource already in resource group B in 'eastus' is compliant to policy 2 and non-compliant to policy 1
  • Qualquer recurso já no grupo B de recursos que não esteja no "eastus" não está em conformidade com a política 2 e não está em conformidade com a política 1, se não em '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'
  • Qualquer novo recurso na subscrição A não em 'westus' é negado pela política 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Qualquer novo recurso na subscrição A e grupo de recursos B em 'westus' é criado e não conforme na política 2Any new resource in subscription A and resource group B in 'westus' is created and non-compliant on policy 2

Se tanto a política 1 como a política 2 tiveram efeito de negação, a situação muda para:If both policy 1 and policy 2 had effect of deny, the situation changes to:

  • Qualquer recurso já no grupo B de recursos que não esteja em 'eastus' não está em conformidade com a política 2Any resource already in resource group B not in 'eastus' is non-compliant to policy 2
  • Qualquer recurso já no grupo B de recursos que não esteja em 'westus' não está em conformidade com a política 1Any resource already in resource group B not in 'westus' is non-compliant to policy 1
  • Qualquer novo recurso na subscrição A não em 'westus' é negado pela política 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Qualquer novo recurso no grupo B de subscrição A é negadoAny new resource in resource group B of subscription A is denied

Cada atribuição é avaliada individualmente.Each assignment is individually evaluated. Como tal, não há uma oportunidade para um recurso escapar através de uma lacuna de diferenças de âmbito.As such, there isn't an opportunity for a resource to slip through a gap from differences in scope. Considera-se cumulativo o resultado líquido das definições de política de camadas.The net result of layering policy definitions is considered to be cumulative most restrictive. A título de exemplo, se ambas as políticas 1 e 2 tivessem um efeito de negação, um recurso seria bloqueado pelas definições políticas sobrepostas e contraditórias.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 ainda precisar do recurso para ser criado no âmbito alvo, reveja as exclusões de cada atribuição para validar as atribuições políticas certas estão a afetar os âmbitos certos.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.

Passos seguintesNext steps