Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El efecto modify se usa para agregar, actualizar o quitar propiedades o etiquetas de una suscripción o un recurso durante la creación o la actualización. Los recursos no conformes existentes también se pueden solucionar con una tarea de corrección. Las asignaciones de directivas con efecto establecido como Modify requieren una identidad administrada para realizar la corrección. Un ejemplo común que usa el efecto modify es actualizar etiquetas en recursos como "costCenter".
Hay algunos matices en el comportamiento de modificación de las propiedades de los recursos. Obtenga más información sobre los escenarios en los que se omite la modificación.
Una sola regla de modify puede tener cualquier número de operaciones. Las operaciones compatibles son:
-
Agregar, reemplazar o quitar etiquetas de recursos. Solo se pueden quitar etiquetas. En el caso de las etiquetas, una directiva Modify siempre debe tener el elemento mode establecido en
indexeda menos que el recurso de destino sea un grupo de recursos. -
Agregar o reemplazar el valor del tipo de identidad administrada (
identity.type) de las máquinas virtuales y los conjuntos de escalado de máquinas virtuales. Solo puede modificaridentity.typepara máquinas virtuales o Virtual Machine Scale Sets. -
Agregar o reemplazar los valores de determinados alias.
- Use
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }en Azure PowerShell 4.6.0 o posterior para obtener una lista de los alias que se pueden usar conmodify.
- Use
Important
Si está administrando etiquetas, se recomienda usar Modify en lugar de Append, ya que Modify proporciona más tipos de operaciones y la posibilidad de corregir los recursos existentes. Sin embargo, se recomienda Append si no puede crear una identidad administrada o Modify no es compatible todavía con el alias de la propiedad del recurso.
Modificación de la evaluación
Modify se evalúa antes de que un proveedor de recursos procese la solicitud durante la creación o actualización de un recurso. Las operaciones modify se aplican al contenido de la solicitud cuando se cumple la condición if de la regla de la directiva. Cada operación modify puede especificar una condición que determina cuándo se aplica.
Cuando se especifica un alias, se realizan más comprobaciones para garantizar que la operación modify no cambie el contenido de la solicitud de tal forma que el proveedor de recursos la rechace:
- La propiedad a la que se asigna el alias se marca como Modificable en la versión de API de la solicitud.
- El tipo de token de la operación
modifycoincide con el tipo de token esperado para la propiedad en la versión de API de la solicitud.
Si se produce un error en cualquiera de estas comprobaciones, la evaluación de la directiva recurre al valor conflictEffect especificado.
Important
Se recomienda que las definiciones de Modify que incluyen alias usen el efecto de conflicto de auditoría para evitar errores en las solicitudes con versiones de API en las que la propiedad asignada no es "modificable". Si el mismo alias se comporta de manera diferente con cada versión de API, se pueden usar operaciones Modify condicionales para determinar la operación modify usada para cada versión de API.
Modificación omitida
Hay algunos casos en los que se omiten las operaciones de modificación durante la evaluación:
-
Recursos existentes: cuando una definición de directiva que usa el efecto
modifyse ejecuta como parte de un ciclo de evaluación, no realiza cambios en los recursos que ya existen. En su lugar, marca cualquier recurso que cumpla la condiciónifcomo no compatible, por lo que se pueden corregir mediante una tarea de corrección. -
No aplicable: cuando se evalúa la condición de una operación en la matriz de
operationscomo false, se omite esa operación determinada. -
Propiedad no modificable: si un alias especificado para una operación no se puede modificar en la versión de la API de la solicitud, la evaluación usa el efecto de conflicto. Si el efecto de conflicto se establece en deny, la solicitud se bloquea. Si el efecto de conflicto se establece en audit, se permite que pase la solicitud, pero se omite la operación de
modify. -
Propiedad no presente: si una propiedad no está presente en la carga de recursos de la solicitud, se puede omitir la modificación. En algunos casos, las propiedades modificables se anidan dentro de otras propiedades y tienen un alias como
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled. Si la propiedad "principal", en este casodeleteRetentionPolicy, no está presente en la solicitud, se omite la modificación porque se supone que esa propiedad se omite intencionadamente. Para obtener un ejemplo práctico, vaya a la sección Ejemplo de propiedad no presente. -
Operación de identidad que no sea máquina virtual o VMSS: cuando una operación de modificación intenta agregar o reemplazar el campo
identity.typeen un recurso distinto de una máquina virtual o un conjunto de escalado de máquinas virtuales, la evaluación de directivas se omite por completo para que no se realice la modificación. En este caso, el recurso se considera no aplicable a la directiva.
Ejemplo de propiedad no presente
La modificación de las propiedades de recursos depende de la solicitud de API y de la carga de recursos actualizada. La carga puede depender del cliente usado, como Azure Portal, y otros factores, como el proveedor de recursos.
Imagine que aplica una directiva que modifica las etiquetas en una máquina virtual (VM). Cada vez que se actualiza la máquina virtual, como durante el cambio de tamaño o de disco, las etiquetas se actualizan según corresponda, independientemente del contenido de la carga de la máquina virtual. Esto se debe a que las etiquetas son independientes de las propiedades de la máquina virtual.
Sin embargo, si aplica una directiva que modifica las propiedades de una máquina virtual, la modificación depende de la carga del recurso. Si intenta modificar las propiedades que no están incluidas en la carga de actualización, la modificación no tendrá lugar. Por ejemplo, esto puede ocurrir al aplicar revisiones a la propiedad assessmentMode de una máquina virtual (alias Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode). La propiedad está "anidada", por lo que si sus propiedades primarias no se incluyen en la solicitud, se supone que esta omisión es intencionada y se omite la modificación. Para que se realice la modificación, la carga del recurso debe contener este contexto.
Modificar propiedades
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.
-
roleDefinitionIds(obligatorio)- 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. Para más información, consulte Corrección: configuración de la definición de directiva.
- El rol definido debe incluir todas las operaciones concedidas al rol Colaborador/Colaborador de etiquetas.
-
conflictEffect(opcional)- Determina qué definición de directiva "gana" si más de una modifica la misma propiedad o cuando la operación
modifyno funciona en el alias especificado.- En el caso de los recursos nuevos o actualizados, la definición de la directiva con deny tiene prioridad. Las definiciones de directivas con audit omiten todas las
operations. Si más de una definición de directiva tiene el efecto deny, la solicitud se deniega como conflicto. Si todas las definiciones de directiva tienen audit, no se procesa ninguna de lasoperationsde las definiciones de directiva en conflicto. - En el caso de los recursos existentes, si hay más de una definición de directiva que tenga el efecto deny, el estado de cumplimiento es Conflict. Si una o varias definiciones de directivas tienen el efecto deny, cada asignación devuelve un estado de cumplimiento de Non-compliant.
- En el caso de los recursos nuevos o actualizados, la definición de la directiva con deny tiene prioridad. Las definiciones de directivas con audit omiten todas las
- Valores disponibles: audit, deny, disabled.
- El valor predeterminado es deny.
- Determina qué definición de directiva "gana" si más de una modifica la misma propiedad o cuando la operación
-
operations(obligatorio)- Una matriz de todas las operaciones de etiqueta que se van a llevar a cabo en los recursos coincidentes.
- Properties:
-
operation(obligatorio)- Define qué acción se va a realizar en un recurso coincidente. Las opciones son:
addOrReplace,AddyRemove. -
Addse comporta de forma similar al efecto append. -
Removesolo se admite para las etiquetas de recursos.
- Define qué acción se va a realizar en un recurso coincidente. Las opciones son:
-
field(obligatorio)- La etiqueta que se va a agregar, reemplazar o quitar. Los nombres de etiqueta deben seguir la misma convención de nomenclatura que otros campos.
-
value(opcional)- Valor en el que se va a establecer la etiqueta.
- Esta propiedad es necesaria si
operationes addOrReplace o Add.
-
condition(opcional)- Una cadena que contiene una expresión de lenguaje de Azure Policy con funciones de directiva que se evalúa como true o false.
- No admite las siguientes funciones de directiva:
field(),resourceGroup(),subscription().
-
Modificar operaciones
La matriz de propiedades operations permite modificar varias etiquetas de maneras diferentes a partir de una única definición de directiva. Cada operación se compone de propiedades operation, field y value.
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. En el ejemplo siguiente se realizan los siguientes cambios en las etiquetas:
- Se establece la etiqueta
environmenten "Test", incluso si ya existe con otro valor. - Se quita la etiqueta
TempResource. - Se establece la etiqueta
Depten el parámetro de directiva DeptName configurado en la asignación de directiva.
"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 opciones siguientes:
| Operation | Description |
|---|---|
addOrReplace |
Agrega la propiedad o la etiqueta definidas y el valor al recurso, incluso si estas ya existen con un valor diferente. |
add |
Agrega la propiedad o la etiqueta definidas y el valor al recurso. |
remove |
Quita la etiqueta definida del recurso. Solo se admite para las etiquetas. |
Modificación de ejemplos
Ejemplo 1: se agrega la etiqueta environment y se reemplazan las etiquetas environment existentes por "Prueba":
"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:
"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')]"
}
]
}
}
Ejemplo 3: asegúrese de que una cuenta de almacenamiento no permita el acceso público a los blobs; la operación modify solo se aplica cuando se evalúan solicitudes con una versión de API mayor o igual que 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
}
]
}
}
Pasos siguientes
- Puede consultar ejemplos en Ejemplos de Azure Policy.
- Revise la estructura de definición de Azure Policy.
- Obtenga información acerca de cómo se pueden crear directivas mediante programación.
- Obtener más información acerca de cómo obtener datos de cumplimiento.
- Obtenga información sobre cómo corregir recursos no compatibles.
- Consulte Grupos de administración de Azure.