Formació
Mòdul
Vista previa de los cambios de implementación de Azure mediante el uso de hipótesis - Training
Aplique el comando what-if para ver el efecto de una implementación antes de aplicarla.
Aquest navegador ja no s’admet.
Feu l’actualització al Microsoft Edge per aprofitar les característiques més recents, les actualitzacions de seguretat i l’assistència tècnica.
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:
indexed
a menos que el recurso de destino sea un grupo de recursos.identity.type
) de las máquinas virtuales y los conjuntos de escalado de máquinas virtuales. Solo puede modificar identity.type
para máquinas virtuales o Virtual Machine Scale Sets.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 con modify
.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.
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:
modify
coincide 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.
Hay algunos casos en los que se omiten las operaciones de modificación durante la evaluación:
modify
se 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ón if
como no compatible, por lo que se pueden corregir mediante una tarea de corrección.operations
como false, se omite esa operación determinada.modify
.Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled
. Si la propiedad "principal", en este caso deleteRetentionPolicy
, 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.identity.type
en 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.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.
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) conflictEffect
(opcional) modify
no funciona en el alias especificado.
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 las operations
de las definiciones de directiva en conflicto.operations
(obligatorio) operation
(obligatorio) addOrReplace
, Add
y Remove
.Add
se comporta de forma similar al efecto append.Remove
solo se admite para las etiquetas de recursos.field
(obligatorio) value
(opcional) operation
es addOrReplace o Add.condition
(opcional) field()
, resourceGroup()
, subscription()
.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:
environment
en "Test", incluso si ya existe con otro valor.TempResource
.Dept
en 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:
Operación | Descripción |
---|---|
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. |
Ejemplo 1: se agrega la etiqueta environment
y se reemplazan las etiquetas environment
existentes por "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:
"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
}
]
}
}
Formació
Mòdul
Vista previa de los cambios de implementación de Azure mediante el uso de hipótesis - Training
Aplique el comando what-if para ver el efecto de una implementación antes de aplicarla.