Comprender los efectos de Azure PolicyUnderstand Azure Policy effects

Cada definición de directiva en Azure Policy tiene un único efecto.Each policy definition in Azure Policy has a single effect. Dicho efecto determina lo que ocurre cuando la regla de directivas se evalúa con la coincidencia.That effect determines what happens when the policy rule is evaluated to match. Los efectos se comportan de manera diferente si son para un nuevo recurso, un recurso actualizado o un recurso existente.The effects behave differently if they are for a new resource, an updated resource, or an existing resource.

Actualmente, se admiten estos efectos en una definición de directiva:These effects are currently supported in a policy definition:

Orden de evaluaciónOrder of evaluation

En primer lugar, Azure Policy evalúa las solicitudes para crear o actualizar un recurso a través de Azure Resource Manager.Requests to create or update a resource through Azure Resource Manager are evaluated by Azure Policy first. Azure Policy crea una lista de todas las asignaciones que se aplican al recurso y, a continuación, evalúa el recurso de acuerdo con cada definición.Azure Policy creates a list of all assignments that apply to the resource and then evaluates the resource against each definition. Azure Policy procesa algunos de los efectos antes de entregar la solicitud al proveedor de recursos adecuado.Azure Policy processes several of the effects before handing the request to the appropriate Resource Provider. De este modo, se evita que un proveedor de recursos realice un procesamiento innecesario cuando un recurso no cumple con los controles de gobernanza diseñados de Azure Policy.Doing so prevents unnecessary processing by a Resource Provider when a resource doesn't meet the designed governance controls of Azure Policy.

  • Primero se selecciona Deshabilitado para determinar si se debe evaluar la regla de directivas.Disabled is checked first to determine if the policy rule should be evaluated.
  • Después se evalúan Append y Modify.Append and Modify are then evaluated. Ambos efectos podrían alterar la solicitud; así, un cambio realizado por ellos podría impedir la activación de un efecto audit o deny.Since either could alter the request, a change made may prevent an audit or deny effect from triggering.
  • Luego se evalúa deny.Deny is then evaluated. La evaluación de deny antes de audit impide el doble registro de un recurso no deseado.By evaluating deny before audit, double logging of an undesired resource is prevented.
  • A continuación, se evalúa audit antes de que la solicitud vaya al proveedor de recursos.Audit is then evaluated before the request going to the Resource Provider.

Después de que el proveedor de recursos devuelva un código correcto, AuditIfNotExists y DeployIfNotExists se evalúan para determinar si es necesario realizar una acción o un registro de cumplimiento adicionales.After the Resource Provider returns a success code, AuditIfNotExists and DeployIfNotExists evaluate to determine if additional compliance logging or action is required.

Actualmente, no hay ningún orden de evaluación para los efectos EnforceOPAConstraint o EnforceRegoPolicy.There currently isn't any order of evaluation for the EnforceOPAConstraint or EnforceRegoPolicy effects.

DisabledDisabled

Este efecto es útil para probar situaciones o cuando la definición de directiva ha parametrizado el efecto.This effect is useful for testing situations or for when the policy definition has parameterized the effect. Esta flexibilidad permite deshabilitar una única asignación en lugar de deshabilitar todas las asignaciones de la directiva.This flexibility makes it possible to disable a single assignment instead of disabling all of that policy's assignments.

Una alternativa al efecto Disabled es enforcementMode que se establece en la asignación de directiva.An alternative to the Disabled effect is enforcementMode which is set on the policy assignment. Cuando enforcementMode es Disabled, los recursos se siguen evaluando.When enforcementMode is Disabled, resources are still evaluated. El registro, como los registros de actividad, y el efecto de la directiva no se producen.Logging, such as Activity logs, and the policy effect don't occur. Para más información, consulte Asignación de directivas: modo de cumplimiento.For more information, see policy assignment - enforcement mode.

AppendAppend

Append se utiliza para agregar campos adicionales al recurso solicitado durante la creación o actualización.Append is used to add additional fields to the requested resource during creation or update. Un ejemplo habitual es la especificación de direcciones IP permitidas para un recurso de almacenamiento.A common example is specifying allowed IPs for a storage resource.

Importante

Append está pensado para su uso con propiedades que no son de etiqueta.Append is intended for use with non-tag properties. Aunque Append puede agregar etiquetas a un recurso durante una solicitud de creación o actualización, se recomienda usar en su lugar el efecto Modify para las etiquetas.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.

Evaluación de appendAppend evaluation

Append realiza la evaluación antes de que un proveedor de recursos procese la solicitud durante la creación o actualización de un recurso.Append evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Append agrega campos al recurso cuando se cumple la condición if de la regla de directiva.Append adds fields to the resource when the if condition of the policy rule is met. En caso de que el efecto append reemplace un valor de la solicitud original por otro, actúa como un efecto deny y rechaza la solicitud.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 un nuevo valor a una matriz existente, use la versión [*] del alias.To append a new value to an existing array, use the [*] version of the alias.

Cuando una definición de directiva que utiliza el efecto append se ejecuta como parte de un ciclo de evaluación, no realiza cambios en los recursos que ya existen.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. En su lugar, marca cualquier recurso que cumple la condición if como no conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Propiedades de appendAppend properties

Un efecto append solo tiene una matriz details, que es necesaria.An append effect only has a details array, which is required. Como details es una matriz, puede tomar un único par campo-valor o varios.As details is an array, it can take either a single field/value pair or multiples. Consulte estructura de definición para obtener la lista de campos aceptables.Refer to definition structure for the list of acceptable fields.

Ejemplos de appendAppend examples

Ejemplo 1: un único par campo/valor que usa un alias distinto de- [*] con un valor de matriz para establecer reglas de IP en una cuenta de almacenamiento.Example 1: Single field/value pair using a non-[*] alias with an array value to set IP rules on a storage account. Cuando el alias que no es [*] es una matriz, el efecto anexa el valor como toda la matriz.When the non-[*] alias is an array, the effect appends the value as the entire array. Si la matriz ya existe, el conflicto ocasiona un evento de rechazo.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"
        }]
    }]
}

Ejemplo 2: un único par campo/valor que usa un alias [*] con un valor de matriz para establecer reglas IP en una cuenta de almacenamiento.Example 2: Single field/value pair using an [*] alias with an array value to set IP rules on a storage account. Mediante el uso del alias [*] , el efecto anexa el valor a una matriz que es posible que ya exista.By using the [*] alias, the effect appends the value to a potentially pre-existing array. Si la matriz todavía no existe, se creará.If the array doesn't exist yet, it will be created.

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

ModificarModify

Modify se usa para agregar, actualizar o quitar etiquetas de un recurso durante la creación o actualización.Modify is used to add, update, or remove tags on a resource during creation or update. Un ejemplo habitual es la actualización de etiquetas en recursos como costCenter.A common example is updating tags on resources such as costCenter. Una directiva de modificación siempre debe tener mode establecido en Indexed a menos que el recurso de destino sea un grupo de recursos.A Modify policy should always have mode set to Indexed unless the target resource is a resource group. Los recursos no conformes existentes se pueden solucionar con una tarea de corrección.Existing non-compliant resources can be remediated with a remediation task. Una sola regla de Modify puede tener cualquier número de operaciones.A single Modify rule can have any number of operations.

Importante

Actualmente, Modify solo se usa con etiquetas.Modify is currently only for use with tags. Si está administrando etiquetas, se recomienda usar Modify en lugar de Append, ya que Modify proporciona tipos de operación adicionales y la capacidad de corregir los recursos existentes.If you are managing tags, it's recommended to use Modify instead of Append as Modify provides additional operation types and the ability to remediate existing resources. Sin embargo, se recomienda Append si no se puede crear una identidad administrada.However, Append is recommended if you aren't able to create a managed identity.

Evaluación de ModifyModify evaluation

Modify se evalúa antes de que un proveedor de recursos procese la solicitud durante la creación o actualización de un recurso.Modify evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Modify agrega o actualiza etiquetas en un recurso cuando se cumple la condición if de la regla de directiva.Modify adds or updates tags on a resource when the if condition of the policy rule is met.

Cuando una definición de directiva que utiliza el efecto Modify se ejecuta como parte de un ciclo de evaluación, no realiza cambios en los recursos que ya existen.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. En su lugar, marca cualquier recurso que cumple la condición if como no conforme.Instead, it marks any resource that meets the if condition as non-compliant.

Propiedades de ModifyModify properties

La propiedad details del efecto Modify tiene todas las subpropiedades que definen los permisos necesarios para la corrección y las propiedades operations que se usan para agregar, actualizar o quitar valores de etiqueta.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 [obligatorio]roleDefinitionIds [required]
    • Esta propiedad debe incluir una matriz de cadenas que coinciden con el identificador de rol de control de acceso basado en rol accesible por la suscripción.This property must include an array of strings that match role-based access control role ID accessible by the subscription. Para obtener más información, vea remediation - configure policy definition (corrección: configurar la definición de directiva).For more information, see remediation - configure policy definition.
    • El rol definido debe incluir todas las operaciones concedidas al rol Colaborador.The role defined must include all operations granted to the Contributor role.
  • operations [obligatorio]operations [required]
    • Una matriz de todas las operaciones de etiqueta que se van a llevar a cabo en los recursos coincidentes.An array of all tag operations to be completed on matching resources.
    • Propiedades:Properties:
      • operation [obligatorio]operation [required]
        • Define qué acción se va a realizar en un recurso coincidente.Defines what action to take on a matching resource. Las opciones son: addOrReplace, Add, Remove.Options are: addOrReplace, Add, Remove. Add se comporta de forma similar al efecto Append.Add behaves similar to the Append effect.
      • field [obligatorio]field [required]
        • La etiqueta que se va a agregar, reemplazar o quitar.The tag to add, replace, or remove. Los nombres de etiqueta deben seguir la misma convención de nomenclatura que otros campos.Tag names must adhere to the same naming convention for other fields.
      • value (opcional)value (optional)
        • Valor en el que se va a establecer la etiqueta.The value to set the tag to.
        • Esta propiedad es necesaria si operation es addOrReplace o Add.This property is required if operation is addOrReplace or Add.

Operaciones de ModifyModify operations

La matriz de propiedades operations permite modificar varias etiquetas de maneras diferentes a partir de una única definición de directiva.The operations property array makes it possible to alter several tags in different ways from a single policy definition. Cada operación se compone de las propiedades operation, field y value.Each operation is made up of operation, field, and value properties. Operation determina qué hace la tarea de corrección en las etiquetas, field determina qué etiqueta se modifica y value define el nuevo valor de la 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. En el ejemplo siguiente se realizan los siguientes cambios en la etiqueta:The example below makes the following tag changes:

  • Se establece la etiqueta environment en "Test", incluso si ya existe con un valor diferente.Sets the environment tag to "Test", even if it already exists with a different value.
  • Se quita la etiqueta TempResource.Removes the tag TempResource.
  • Se establece la etiqueta Dept en el parámetro de directiva DeptName configurado en la asignación de directiva.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')]"
        }
    ]
}

La propiedad operation tiene las siguientes opciones:The operation property has the following options:

OperaciónOperation DESCRIPCIÓNDescription
addOrReplaceaddOrReplace Agrega la etiqueta y el valor definidos al recurso, incluso si la etiqueta ya existe con un valor diferente.Adds the defined tag and value to the resource, even if the tag already exists with a different value.
SumarAdd Agrega la etiqueta y el valor definidos al recurso.Adds the defined tag and value to the resource.
RemoveRemove Quita la etiqueta definida del recurso.Removes the defined tag from the resource.

Ejemplos de ModifyModify examples

Ejemplo 1: se agrega la etiqueta environment y se reemplazan las etiquetas environment existentes por "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"
            }
        ]
    }
}

Ejemplo 2: se quita la etiqueta env y se agrega la etiqueta environment o se reemplazan las etiquetas environment existentes por un 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"
        ],
        "operations": [
            {
                "operation": "Remove",
                "field": "tags['env']"
            },
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "[parameters('tagValue')]"
            }
        ]
    }
}

DenegarDeny

Deny se utiliza para evitar una solicitud de recursos que no coincida con los estándares definidos a través de una definición de directiva, así como para impedir que se produzca un error en la solicitud.Deny is used to prevent a resource request that doesn't match defined standards through a policy definition and fails the request.

Evaluación de denyDeny evaluation

Al crear o actualizar un recurso coincidente, deny evita la solicitud antes de que se envíe al proveedor de recursos.When creating or updating a matched resource, deny prevents the request before being sent to the Resource Provider. La solicitud se devuelve como un código 403 (Forbidden).The request is returned as a 403 (Forbidden). En el portal, este estado de prohibido puede verse como un estado en la implementación que evitó la asignación de directiva.In the portal, the Forbidden can be viewed as a status on the deployment that was prevented by the policy assignment.

Durante la evaluación de los recursos existentes, los recursos que coinciden con una definición de directiva deny se marcan como no compatibles.During evaluation of existing resources, resources that match a deny policy definition are marked as non-compliant.

Propiedades de denyDeny properties

El efecto deny no tiene propiedades adicionales para su uso en la condición then de la definición de directiva.The deny effect doesn't have any additional properties for use in the then condition of the policy definition.

Ejemplo de denyDeny example

Ejemplo: uso del efecto deny.Example: Using the deny effect.

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

AuditoríaAudit

Audit se utiliza para crear un evento de advertencia en el registro de actividad cuando se evalúa un recurso no compatible, pero no se detiene la solicitud.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.

Evaluación de auditAudit evaluation

Audit es el último efecto que Azure Policy comprueba durante la creación o actualización de un recurso.Audit is the last effect checked by Azure Policy during the creation or update of a resource. A continuación, Azure Policy envía el recurso al proveedor de recursos.Azure Policy then sends the resource to the Resource Provider. Audit funciona igual para una solicitud de recurso y un ciclo de evaluación.Audit works the same for a resource request and an evaluation cycle. Azure Policy agrega una operación Microsoft.Authorization/policies/audit/action al registro de actividad y marca el recurso como no compatible.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant.

Propiedades de auditAudit properties

El efecto audit no tiene propiedades adicionales para su uso en la condición then de la definición de directiva.The audit effect doesn't have any additional properties for use in the then condition of the policy definition.

Ejemplo de auditAudit example

Ejemplo: uso del efecto audit.Example: Using the audit effect.

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

AuditIfNotExistsAuditIfNotExists

AuditIfNotExists habilita la auditoría en recursos que coinciden con la condición if, pero no tiene los componentes especificados en la propiedad details de la condición then.AuditIfNotExists enables auditing on resources that match the if condition, but doesn't have the components specified in the details of the then condition.

Evaluación de AuditIfNotExistsAuditIfNotExists evaluation

AuditIfNotExists se ejecuta después de que un proveedor de recursos haya operado con una solicitud de creación o actualización de recursos y haya devuelto un código de estado correcto.AuditIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. La auditoría se produce si no hay recursos relacionados o si los recursos definidos por ExistenceCondition no se evalúan como true.The audit occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Azure Policy agrega una operación Microsoft.Authorization/policies/audit/action al registro de actividad del mismo modo que el efecto Audit.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log the same way as the audit effect. Cuando se desencadena, el recurso que cumple la condición if es el recurso que está marcado como no conforme.When triggered, the resource that satisfied the if condition is the resource that is marked as non-compliant.

Propiedades de AuditIfNotExistsAuditIfNotExists properties

La propiedad details de los efectos de AuditIfNotExists tiene todas las subpropiedades que definen los recursos relacionados para coincidir.The details property of the AuditIfNotExists effects has all the subproperties that define the related resources to match.

  • Type [obligatorio]Type [required]
    • Especifica el tipo del recurso relacionado para coincidir.Specifies the type of the related resource to match.
    • Si details.type es un tipo de recurso debajo del recurso de condición if, la directiva consultará los recursos de este tipo que estén dentro del alcance del recurso evaluado.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. De lo contrario, la directiva realizará consultas dentro del mismo grupo de recursos que el recurso evaluado.Otherwise, policy queries within the same resource group as the evaluated resource.
  • Nombre (opcional)Name (optional)
    • Especifica el nombre exacto del recurso para coincidir y hace que la directiva recupere un recurso específico en lugar de todos los recursos del 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.
    • Cuando los valores de condición para if.field.type y then.details.type coinciden, entonces el valor Name es necesario y debe ser [field('name')].When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')]. Sin embargo, un efecto Audit debe tenerse en cuenta en su lugar.However, an audit effect should be considered instead.
  • ResourceGroupName (opcional)ResourceGroupName (optional)
    • Permite que la coincidencia del recurso relacionado provenga de un grupo de recursos diferente.Allows the matching of the related resource to come from a different resource group.
    • No se aplica si type es un recurso que estaría debajo del recurso de condición if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • El valor predeterminado es el grupo de recursos del recurso de la condición if.Default is the if condition resource's resource group.
  • ExistenceScope (opcional)ExistenceScope (optional)
    • Los valores permitidos son Subscription y ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Establece el ámbito de donde obtener el recurso relacionado para que coincida.Sets the scope of where to fetch the related resource to match from.
    • No se aplica si type es un recurso que estaría debajo del recurso de condición if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Para ResourceGroup, se limitaría al grupo de recursos del recurso de la condición if o al grupo de recursos especificado en ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Para Subscription, se consulta toda la suscripción para el recurso relacionado.For Subscription, queries the entire subscription for the related resource.
    • El valor predeterminado es ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (opcional)ExistenceCondition (optional)
    • Si no se especifica, todo recurso relacionado de type cumple con el efecto y no desencadena la auditoría.If not specified, any related resource of type satisfies the effect and doesn't trigger the audit.
    • Utiliza el mismo lenguaje que la regla de directiva para la condición if, pero se evalúa individualmente en relación con cada recurso relacionado.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Si algún recurso relacionado coincidente se evalúa como true, se cumple la condición del efecto y no se desencadena la auditoría.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the audit.
    • Puede utilizar [field()] para comprobar la equivalencia con los valores en la condición if.Can use [field()] to check equivalence with values in the if condition.
    • Por ejemplo, podría usarse para validar que el recurso primario (en la condición if) está en la misma ubicación de recursos que el recurso relacionado coincidente.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.

Ejemplo de AuditIfNotExistsAuditIfNotExists example

Ejemplo: evalúa Virtual Machines para determinar si existe la extensión Antimalware y luego audita cuando faltan.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"
                    }
                ]
            }
        }
    }
}

DeployIfNotExistsDeployIfNotExists

Similar a AuditIfNotExists, una definición de directiva DeployIfNotExists ejecuta una implementación de plantilla cuando se cumple la condición.Similar to AuditIfNotExists, a DeployIfNotExists policy definition executes a template deployment when the condition is met.

Nota

Las plantillas anidadas son compatibles con deployIfNotExists, pero las plantillas vinculadas no son compatibles actualmente.Nested templates are supported with deployIfNotExists, but linked templates are currently not supported.

Evaluación de DeployIfNotExistsDeployIfNotExists evaluation

DeployIfNotExists se ejecuta después de que un proveedor de recursos haya operado con una solicitud de creación o actualización de recursos y haya devuelto un código de estado correcto.DeployIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. La implementación de una plantilla se produce si no hay recursos relacionados o si los recursos definidos por ExistenceCondition no se evalúan como true.A template deployment occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true.

Durante un ciclo de evaluación, las definiciones de directiva con un efecto DeployIfNotExists que coinciden con los recursos se marcan como no compatibles, pero no se realiza ninguna acción en dicho 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.

Propiedades de DeployIfNotExistsDeployIfNotExists properties

La propiedad details del efecto DeployIfNotExists tiene todas las subpropiedades que definen los recursos relacionados con los que se establece la coincidencia y la implementación de plantilla que se ejecuta.The details property of the DeployIfNotExists effect has all the subproperties that define the related resources to match and the template deployment to execute.

  • Type [obligatorio]Type [required]

    • Especifica el tipo del recurso relacionado para coincidir.Specifies the type of the related resource to match.
    • Comienza tratando de recuperar un recurso debajo del recurso de condición if , luego consulta dentro del mismo grupo de recursos que el recurso de condición 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.
  • Nombre (opcional)Name (optional)

    • Especifica el nombre exacto del recurso para coincidir y hace que la directiva recupere un recurso específico en lugar de todos los recursos del 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.
    • Cuando los valores de condición para if.field.type y then.details.type coinciden, entonces el valor Name es necesario y debe ser [field('name')].When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')].
  • ResourceGroupName (opcional)ResourceGroupName (optional)

    • Permite que la coincidencia del recurso relacionado provenga de un grupo de recursos diferente.Allows the matching of the related resource to come from a different resource group.
    • No se aplica si type es un recurso que estaría debajo del recurso de condición if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • El valor predeterminado es el grupo de recursos del recurso de la condición if.Default is the if condition resource's resource group.
    • Si se ejecuta una implementación de plantilla, se implementa en el grupo de recursos de este valor.If a template deployment is executed, it's deployed in the resource group of this value.
  • ExistenceScope (opcional)ExistenceScope (optional)

    • Los valores permitidos son Subscription y ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Establece el ámbito de donde obtener el recurso relacionado para que coincida.Sets the scope of where to fetch the related resource to match from.
    • No se aplica si type es un recurso que estaría debajo del recurso de condición if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Para ResourceGroup, se limitaría al grupo de recursos del recurso de la condición if o al grupo de recursos especificado en ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Para Subscription, se consulta toda la suscripción para el recurso relacionado.For Subscription, queries the entire subscription for the related resource.
    • El valor predeterminado es ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (opcional)ExistenceCondition (optional)

    • Si no se especifica, todo recurso relacionado de type cumple con el efecto y no desencadena la implementación.If not specified, any related resource of type satisfies the effect and doesn't trigger the deployment.
    • Utiliza el mismo lenguaje que la regla de directiva para la condición if, pero se evalúa individualmente en relación con cada recurso relacionado.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Si algún recurso relacionado coincidente se evalúa como true, se cumple la condición del efecto y no se desencadena la implementación.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the deployment.
    • Puede utilizar [field()] para comprobar la equivalencia con los valores en la condición if.Can use [field()] to check equivalence with values in the if condition.
    • Por ejemplo, podría usarse para validar que el recurso primario (en la condición if) está en la misma ubicación de recursos que el recurso relacionado coincidente.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 [obligatorio]roleDefinitionIds [required]

    • Esta propiedad debe incluir una matriz de cadenas que coinciden con el identificador de rol de control de acceso basado en rol accesible por la suscripción.This property must include an array of strings that match role-based access control role ID accessible by the subscription. Para obtener más información, vea remediation - configure policy definition (corrección: configurar la definición de directiva).For more information, see remediation - configure policy definition.
  • DeploymentScope (opcional)DeploymentScope (optional)

    • Los valores permitidos son Subscription y ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Establece el tipo de implementación que se desencadena.Sets the type of deployment to be triggered. La Suscripción indica una implementación a nivel de suscripción, ResourceGroup indica una implementación en un grupo de recursos.Subscription indicates a deployment at subscription level, ResourceGroup indicates a deployment to a resource group.
    • En la Implementación debe especificarse una propiedad location al usar las implementaciones de nivel de suscripción.A location property must be specified in the Deployment when using subscription level deployments.
    • El valor predeterminado es ResourceGroup.Default is ResourceGroup.
  • Deployment [obligatorio]Deployment [required]

    • Esta propiedad debe incluir la implementación de plantilla completa, ya que luego se pasaría a la 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. Para más información, consulte Deployments REST API (API REST de implementaciones).For more information, see the Deployments REST API.

    Nota

    Todas las funciones dentro de la propiedad Deployment se evalúan como componentes de la plantilla, no la directiva.All functions inside the Deployment property are evaluated as components of the template, not the policy. La excepción es la propiedad parameters que pasa los valores de la directiva a la plantilla.The exception is the parameters property that passes values from the policy to the template. El valor en esta sección bajo el nombre de un parámetro de plantilla se usa para realizar este paso de valor (vea fullDbName en el ejemplo DeployIfNotExists).The value in this section under a template parameter name is used to perform this value passing (see fullDbName in the DeployIfNotExists example).

Ejemplo de DeployIfNotExistsDeployIfNotExists example

Ejemplo: evalúa las bases de datos de SQL Server para determinar si está habilitado transparentDataEncryption.Example: Evaluates SQL Server databases to determine if transparentDataEncryption is enabled. De lo contrario, se ejecuta una implementación para habilitarlo.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')]"
                    }
                }
            }
        }
    }
}

EnforceOPAConstraintEnforceOPAConstraint

Este efecto se usa con un modo de definición de directiva de Microsoft.Kubernetes.Data.This effect is used with a policy definition mode of Microsoft.Kubernetes.Data. Se usa para pasar reglas de control de admisión de Gatekeeper v3 definidas con el artículo sobre el marco de restricciones de OPA a Open Policy Agent (OPA) para clústeres de Kubernetes autoadministrados en Azure.It's used to pass Gatekeeper v3 admission control rules defined with OPA Constraint Framework to Open Policy Agent (OPA) to self-managed Kubernetes clusters on Azure.

Nota

Azure Policy para el motor de AKS está en versión preliminar pública y solo admite definiciones de directivas integradas.Azure Policy for AKS Engine is in Public Preview and only supports built-in policy definitions.

Evaluación de EnforceOPAConstraintEnforceOPAConstraint evaluation

El controlador de admisión de Open Policy Agent evalúa cualquier solicitud nueva del clúster en tiempo real.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Cada 5 minutos, se completa un análisis completo del clúster y los resultados se envían a Azure Policy.Every 5 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Propiedades de EnforceOPAConstraintEnforceOPAConstraint properties

La propiedad de detalles del efecto EnforceOPAConstraint tiene las subpropiedades que describen la regla de control de admisión de Gatekeeper v3.The details property of the EnforceOPAConstraint effect has the subproperties that describe the Gatekeeper v3 admission control rule.

  • constraintTemplate [obligatorio]constraintTemplate [required]
    • La plantilla de restricción CustomResourceDefinition (CRD) que define nuevas restricciones.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. La plantilla define la lógica de Rego, el esquema de restricción y los parámetros de restricción que se pasan a través de valores de Azure Policy.The template defines the Rego logic, the Constraint schema, and the Constraint parameters which are passed via values from Azure Policy.
  • constraint [obligatorio]constraint [required]
    • La implementación de CRD de la plantilla de restricción.The CRD implementation of the Constraint template. Usa los parámetros que se han pasado a través de valores como {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. En el siguiente ejemplo, esto sería {{ .Values.cpuLimit }} y {{ .Values.memoryLimit }}.In the example below, this would be {{ .Values.cpuLimit }} and {{ .Values.memoryLimit }}.
  • values [opcional]values [optional]
    • Define cualquier parámetro y valor para pasar a la restricción.Defines any parameters and values to pass to the Constraint. Cada valor debe existir en la CRD de la plantilla de restricción.Each value must exist in the Constraint template CRD.

Ejemplo de EnforceRegoPolicyEnforceRegoPolicy example

Ejemplo: regla de control de admisión de Gatekeeper v3 para establecer los límites de recursos de memoria y CPU de contenedor en el motor de AKS.Example: Gatekeeper v3 admission control rule to set container CPU and memory resource limits in AKS Engine.

"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

Este efecto se usa con un modo de definición de directiva de Microsoft.ContainerService.Data.This effect is used with a policy definition mode of Microsoft.ContainerService.Data. Se usa para pasar las reglas de control de admisión de Gatekeeper v2 definidas con Rego a Open Policy Agent (OPA) en Azure Kubernetes Service.It's used to pass Gatekeeper v2 admission control rules defined with Rego to Open Policy Agent (OPA) on Azure Kubernetes Service.

Nota

Azure Policy para AKS está en su versión preliminar limitada y solo admite definiciones de directivas integradasAzure Policy for AKS is in Limited Preview and only supports built-in policy definitions

Evaluación de EnforceRegoPolicyEnforceRegoPolicy evaluation

El controlador de admisión de Open Policy Agent evalúa cualquier solicitud nueva del clúster en tiempo real.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Cada 5 minutos, se completa un análisis completo del clúster y los resultados se envían a Azure Policy.Every 5 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Propiedades de EnforceRegoPolicyEnforceRegoPolicy properties

La propiedad de detalles del efecto EnforceRegoPolicy tiene las subpropiedades que describen la regla de control de admisión de Gatekeeper v2.The details property of the EnforceRegoPolicy effect has the subproperties that describe the Gatekeeper v2 admission control rule.

  • policyId [obligatorio]policyId [required]
    • Un nombre único que pasa como parámetro a la regla de control de admisión de Rego.A unique name passed as a parameter to the Rego admission control rule.
  • policy [obligatorio]policy [required]
    • Especifica el URI de la regla de control de admisión de Rego.Specifies the URI of the Rego admission control rule.
  • policyParameters [opcional]policyParameters [optional]
    • Define cualquier parámetro y valor para pasar a la directiva de Rego.Defines any parameters and values to pass to the rego policy.

Ejemplo de EnforceRegoPolicyEnforceRegoPolicy example

Ejemplo: Regla de control de admisión de Gatekeeper v2 para permitir solo las imágenes de contenedor especificadas en 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')]"
        }
    }
}

Directivas de distribución en capasLayering policies

Un recurso puede verse afectado por varias asignaciones.A resource may be impacted by several assignments. Estas asignaciones pueden estar en el mismo o diferentes ámbitos.These assignments may be at the same scope or at different scopes. Cada una de estas asignaciones también es probable que tenga un efecto diferente al definido.Each of these assignments is also likely to have a different effect defined. La condición y el efecto de cada directiva se evalúan por separado.The condition and effect for each policy is independently evaluated. Por ejemplo:For example:

  • Directiva 1Policy 1
    • Restringe la ubicación de recursos a "westus".Restricts resource location to 'westus'
    • Se asigna a la suscripción A.Assigned to subscription A
    • Efecto deny.Deny effect
  • Directiva 2Policy 2
    • Restringe la ubicación de recursos a "eastus".Restricts resource location to 'eastus'
    • Se asigna al grupo de recursos B de la suscripción A.Assigned to resource group B in subscription A
    • Efecto audit.Audit effect

Esta configuración produciría el resultado siguiente:This setup would result in the following outcome:

  • Cualquier recurso que ya esté en el grupo de recursos B en "eastus" es compatible con la directiva 2 y no compatible con la directiva 1.Any resource already in resource group B in 'eastus' is compliant to policy 2 and non-compliant to policy 1
  • Cualquier recurso que ya esté en el grupo de recursos B y que no esté en "eastus" no es compatible con la directiva 2 ni con la directiva 1 si no está en "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'
  • La directiva 1 deniega cualquier recurso nuevo en la suscripción A que no esté en "westus".Any new resource in subscription A not in 'westus' is denied by policy 1
  • Cualquier recurso nuevo en la suscripción A y en el grupo de recursos B en "westus"se crea y no es compatible con la directiva 2.Any new resource in subscription A and resource group B in 'westus' is created and non-compliant on policy 2

Si tanto la directiva 1 como la directiva 2 tienen efecto deny, la situación cambia a:If both policy 1 and policy 2 had effect of deny, the situation changes to:

  • Cualquier recurso que ya esté en el grupo de recursos B y no en "eastus" no es compatible con la directiva 2.Any resource already in resource group B not in 'eastus' is non-compliant to policy 2
  • Cualquier recurso que ya esté en el grupo de recursos B y no en "westus" no es compatible con la directiva 1.Any resource already in resource group B not in 'westus' is non-compliant to policy 1
  • La directiva 1 deniega cualquier recurso nuevo en la suscripción A que no esté en "westus".Any new resource in subscription A not in 'westus' is denied by policy 1
  • Cualquier recurso nuevo que esté en el grupo de recursos B de la suscripción A se deniega.Any new resource in resource group B of subscription A is denied

Cada asignación se evalúa individualmente.Each assignment is individually evaluated. Por lo tanto, no hay ninguna oportunidad de que un recurso se escape por diferencias en el ámbito.As such, there isn't an opportunity for a resource to slip through a gap from differences in scope. El resultado neto de la distribución en capas o superposición de directivas se considera acumulativo más restrictivo.The net result of layering policies or policy overlap is considered to be cumulative most restrictive. Por ejemplo, si tanto la directiva 1 como la 2 tuviesen un efecto deny, las directivas en conflicto y superpuestas bloquearían un recurso.As an example, if both policy 1 and 2 had a deny effect, a resource would be blocked by the overlapping and conflicting policies. Si aún necesita que el recurso se cree en el ámbito de destino, revise las exclusiones en cada asignación para validar si las directivas adecuadas están incidiendo en los ámbitos adecuados.If you still need the resource to be created in the target scope, review the exclusions on each assignment to validate the right policies are affecting the right scopes.

Pasos siguientesNext steps