Effet modify sur les définitions Azure Policy
L’effet modify
permet d’ajouter, de mettre à jour ou de supprimer des propriétés ou des étiquettes sur un abonnement ou une ressource en phase de création ou de mise à jour. Un exemple courant consiste à mettre à jour les étiquettes des ressources telles que costCenter. Les ressources non conformes existantes peuvent être corrigées à l’aide d’une tâche de correction. Une même règle Modify peut avoir autant d’opérations que vous le souhaitez. Les affectations de stratégie dont l’effet est défini sur Modify nécessitent une identité managée pour effectuer une correction.
L’effet modify
prend en charge les opérations suivantes :
- Ajouter, remplacer ou supprimer des étiquettes. Pour les étiquettes, mode doit être défini sur
indexed
dans la stratégie Modify, sauf si la ressource cible est un groupe de ressources. - Ajouter ou remplacer la valeur du type d’identité managée (
identity.type
) des machines virtuelles et des Virtual Machine Scale Sets. Vous ne pouvez modifieridentity.type
que pour les machines virtuelles ou les groupes de machines virtuelles identiques. - Ajouter ou remplacer les valeurs de certains alias.
- Utilisez
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }
dans Azure PowerShell version 4.6.0 ou ultérieure pour obtenir la liste des alias qui peuvent être utilisés avecmodify
.
- Utilisez
Important
Si vous gérez des balises, il est recommandé d’utiliser Modify plutôt qu’Append, car Modify fournit plus de types d’opérations, ainsi que la possibilité de corriger les ressources existantes. Toutefois, Append est recommandé si vous n’êtes pas en mesure de créer une identité managée ou si Modify ne prend pas encore en charge l’alias de la propriété de ressource.
Évaluation Modify
L’évaluation Modify a lieu avant que la requête ne soit traitée par un fournisseur de ressources lors de la création ou de la mise à jour d’une ressource. Les opérations modify
sont appliquées au contenu de la requête lorsque la condition if
de la règle de stratégie est remplie. Chaque opération modify
peut spécifier une condition qui détermine le moment où elle est appliquée. Les opérations avec des évaluations de condition false sont ignorées.
Lorsqu’un alias est spécifié, des vérifications supplémentaires sont effectuées pour s’assurer que l’opération modify
ne modifie pas le contenu de la requête d’une manière qui conduirait le fournisseur de ressources à le rejeter :
- La propriété à laquelle l’alias est mappé est marquée Modifiable dans la version d’API de la requête.
- Le type de jeton dans l’opération
modify
correspond au type de jeton attendu pour la propriété dans la version d’API de la requête.
Si l’une de ces vérifications échoue, l’évaluation de la stratégie revient au conflictEffect
spécifié.
Important
Il est recommandé que les définitions de Modify qui incluent des alias utilisent la propriété d'effet de conflitaudit pour éviter l'échec des requêtes utilisant des versions d'API où la propriété mappée n'est pas « modifiable ». Si le même alias se comporte différemment entre les versions d’API, des opérations modify conditionnelles peuvent être utilisées pour déterminer l’opération modify
utilisée pour chaque version d’API.
Lorsqu’une définition de stratégie utilisant l’effet modify
est exécutée dans le cadre d’un cycle d’évaluation, elle n’apporte pas de modifications aux ressources qui existent déjà. Au lieu de cela, elle marque comme non conforme toute ressource qui répond à la condition if
.
Propriétés de Modify
La propriété details
de l’effet modify
comporte toutes les sous-propriétés qui définissent les autorisations nécessaires à la correction, ainsi que les operations
utilisées pour ajouter, mettre à jour ou supprimer des valeurs d’étiquette.
roleDefinitionIds
(requis)- Cette propriété doit inclure un tableau de chaînes qui correspondent aux ID de rôle de contrôle de l’accès en fonction du rôle accessibles par l’abonnement. Pour plus d’informations, consultez Correction - Configurer une définition de stratégie.
- Le rôle défini doit inclure toutes les opérations accordées au rôle Contributeur.
conflictEffect
(facultatif)- Détermine la définition de stratégie qui prévaut si plusieurs définitions de stratégie modifient la même propriété ou lorsque l’opération
modify
ne fonctionne pas sur l’alias spécifié.- Pour les ressources nouvelles ou mises à jour, la définition de stratégie avec deny est prioritaire. Les définitions de stratégie avec audit ignorent toutes les
operations
. Si plusieurs définitions de stratégie ont l’effet deny, la demande est refusée pour raison de conflit. Si toutes les définitions de stratégie sont indiquées audit, aucune desoperations
des définitions de stratégie en conflit n’est traitée. - Pour les ressources existantes, si plusieurs définitions de stratégie ont l’effet deny, l’état de conformité est Conflit. Si au plus une définition de stratégie a l’effet deny, chaque attribution retourne l’état de conformité Non conforme.
- Pour les ressources nouvelles ou mises à jour, la définition de stratégie avec deny est prioritaire. Les définitions de stratégie avec audit ignorent toutes les
- Valeurs disponibles : audit, deny, disabled.
- La valeur par défaut est deny.
- Détermine la définition de stratégie qui prévaut si plusieurs définitions de stratégie modifient la même propriété ou lorsque l’opération
operations
(requis)- Tableau de toutes les opérations d’étiquette à effectuer sur les ressources correspondantes.
- Propriétés :
operation
(requis)- Définit l’action à effectuer sur une ressource correspondante. Les options sont les suivantes : addOrReplace, Add, Remove. L’option Add a le même comportement que l’effet append.
field
(requis)- Étiquette à ajouter, remplacer ou supprimer. Les noms d’étiquette doivent respecter la même convention de nommage que les autres champs.
value
(facultatif)- Valeur à affecter à l’étiquette.
- Cette propriété est obligatoire si
operation
correspond à addOrReplace ou à Add.
condition
(facultatif)- Chaîne contenant une expression de langage Azure Policy avec fonctions de stratégie qui prend la valeur true ou false.
- Ne prend pas en charge les fonctions de stratégie suivantes :
field()
,resourceGroup()
etsubscription()
.
Opérations Modify
Le tableau de propriétés operations
permet de modifier plusieurs étiquettes de différentes façons à partir d’une même définition de stratégie. Chaque opération est constituée des propriétés operation
, field
et value
. La propriété operation
détermine ce que fait la tâche de correction aux étiquettes, field
détermine l’étiquette modifiée, et value
définit le nouveau paramétrage de l’étiquette. L’exemple suivant effectue les modifications de balises suivantes :
- Définit la balise
environment
sur « Test », même si elle existe déjà avec une autre valeur. - Supprime l’étiquette
TempResource
. - Définit l’étiquette
Dept
sur le paramètre de stratégie DeptName configuré pour l’attribution de stratégie.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
La propriété operation
propose les options suivantes :
Operation | Description |
---|---|
addOrReplace |
Ajoute la propriété/l’étiquette et la valeur définies à la ressource, même si la propriété/l’étiquette a déjà une autre valeur. |
add |
Ajoute la propriété/l’étiquette et la valeur définies à la ressource. |
remove |
Supprime la propriété/l’étiquette définie de la ressource. |
Exemples Modify
Exemple 1 : Ajoutez l’étiquette environment
et remplacez les étiquettes environment
existantes par « Test » :
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
Exemple 2 : Supprimez l’étiquette env
et ajoutez l’étiquette environment
, ou remplacez les étiquettes environment
existantes par une valeur paramétrable :
"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')]"
}
]
}
}
Exemple 3 : vérifiez qu’aucun compte de stockage n’empêche l’accès public aux blobs. L’opération modify
est appliquée uniquement lors de l’évaluation des requêtes avec une version d’API supérieure ou égale à 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
}
]
}
}
Étapes suivantes
- Consultez des exemples à la page Exemples Azure Policy.
- Consultez la Structure de définition Azure Policy.
- Découvrez comment créer des stratégies par programmation.
- Découvrez comment obtenir des données de conformité.
- Découvrez comment corriger des ressources non conformes.
- Passez en revue les groupes d’administration Azure.