Structure d’attribution Azure Policy

Les attributions de stratégies sont utilisées par Azure Policy pour définir quelles stratégies ou initiatives sont attribuées aux ressources. L’attribution de stratégie peut déterminer les valeurs des paramètres de ce groupe de ressources au moment de l’attribution, ce qui permet de réutiliser les définitions de stratégie pour des mêmes propriétés de ressource qui auraient des exigences de conformité différentes.

Notes

Pour plus d’informations sur l’étendue d’Azure Policy, consultez Présentation de l’étendue dans Azure Policy.

La notation JSON (JavaScript Object Notation) est utilisée pour créer une attribution de stratégie. L’attribution de stratégie contient des éléments pour :

Par exemple, le code JSON suivant montre une attribution de stratégie en mode DoNotEnforce avec des paramètres dynamiques :

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "metadata": {
            "assignedBy": "Cloud Center of Excellence"
        },
        "enforcementMode": "DoNotEnforce",
        "notScopes": [],
        "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
        "nonComplianceMessages": [
            {
                "message": "Resource names must start with 'DeptA' and end with '-LC'."
            }
        ],
        "parameters": {
            "prefix": {
                "value": "DeptA"
            },
            "suffix": {
                "value": "-LC"
            }
        },
        "identity": {
            "type": "SystemAssigned"
        },
        "resourceSelectors": [],
        "overrides": []
    }
}

Tous les exemples Azure Policy se trouvent dans Exemples de stratégies.

Nom d’affichage et description

Vous utilisez displayName et description pour identifier l’attribution de stratégie et fournir un contexte pour son utilisation avec l’ensemble de ressources. displayName a une longueur maximale de 128 caractères et description a une longueur maximale de 512 caractères.

Métadonnées

La propriété facultative metadata stocke les informations sur l’attribution de stratégie. Les clients peuvent définir toutes les propriétés et valeurs utiles à leur organisation dans metadata. Cependant, certaines propriétés communes sont utilisées par Azure Policy. Chaque propriété metadata a une limite de 1 024 caractères.

Propriétés de métadonnées communes

  • assignedBy (chaîne) : nom convivial du principal de sécurité qui a créé l’attribution.

  • createdBy (chaîne) : GUID du principal de sécurité qui a créé l’attribution.

  • createdOn (chaîne) : format date/heure universel ISO 8601 de l’heure de création de l’attribution.

  • parameterScopes (objet) : collection de paires clé-valeur où la clé correspond à un nom de paramètre configuré strongType et la valeur définit l’étendue de ressource utilisée dans le portail pour fournir la liste des ressources disponibles en faisant correspondre la valeur strongType. Le portail définit cette valeur si l’étendue est différente de celle de l’attribution. Si cette valeur est définie, une modification de l’attribution de stratégie dans le portail l’affecte automatiquement à l’étendue du paramètre. Toutefois, l’étendue n’est pas verrouillée sur la valeur et peut être remplacée par une autre étendue.

    L’exemple suivant de parameterScopes s’applique à un paramètre strongType nommé backupPolicyId qui définit une étendue pour la sélection des ressources quand l’attribution est modifiée dans le portail.

    "metadata": {
        "parameterScopes": {
            "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • updatedBy (chaîne) : nom convivial du principal de sécurité qui a mis à jour l’attribution, le cas échéant.

  • updatedOn (chaîne) : format date/heure universel ISO 8601 de l’heure de mise à jour de l’attribution, le cas échéant.

  • evidenceStorages (objet) : compte de stockage par défaut recommandé qui doit être utilisé pour contenir des preuves pour les attestations aux affectations de stratégie avec un effet manual. La propriété displayName est le nom du compte de stockage. La propriété evidenceStorageAccountID est l’ID de ressource du compte de stockage. La propriété evidenceBlobContainer est le nom du conteneur d’objets blob dans lequel vous envisagez de stocker la preuve.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Sélecteurs de ressources

La propriété resourceSelectors facultative facilite les pratiques de déploiement sécurisées (SDP) en vous permettant de déployer progressivement des affectations de stratégie en fonction de facteurs tels que l’emplacement des ressources, le type de ressource ou si une ressource a un emplacement. Lorsque des sélecteurs de ressources sont utilisés, Azure Policy évalue uniquement les ressources applicables aux spécifications effectuées dans les sélecteurs de ressources. Les sélecteurs de ressources peuvent également être utilisés pour limiter l’étendue des exemptions de la même façon.

Dans l’exemple de scénario suivant, la nouvelle affectation de stratégie est évaluée uniquement si l’emplacement de la ressource est USA Est ou USA Ouest.

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Lorsque vous êtes prêt à étendre l’étendue d’évaluation de votre stratégie, vous devez simplement modifier l’affectation. L’exemple suivant montre notre affectation de stratégie avec deux autres régions Azure ajoutées au sélecteur SDPRegions. Notez que, dans cet exemple, SDP signifie que la pratique de déploiement sécurisée est la suivante :

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
        "definitionVersion": "1.1",
        "resourceSelectors": [
            {
                "name": "SDPRegions",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "eastus", "westus", "centralus", "southcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "ResourceLimit"
}

Les sélecteurs de ressources ont les propriétés suivantes :

  • name : nom du sélecteur de ressources.

  • selectors : (Facultatif) La propriété utilisée pour déterminer le sous-ensemble de ressources applicable à l’attribution de stratégie doit être évalué pour la conformité.

    • kind : propriété d’un sélecteur qui décrit quelle caractéristique affine l’ensemble des ressources évaluées. Chaque « type » ne peut être utilisé qu’une seule fois dans un seul sélecteur de ressources. Les valeurs autorisées sont les suivantes :

      • resourceLocation : Cette propriété permet de sélectionner des ressources en fonction de leur type. Ne peut pas être utilisé dans le même sélecteur de ressources que resourceWithoutLocation.

      • resourceType : Cette propriété permet de sélectionner des ressources en fonction de leur type.

      • resourceWithoutLocation : Cette propriété permet de sélectionner des ressources au niveau de l’abonnement qui n’ont pas d’emplacement. Actuellement, prend en charge uniquement subscriptionLevelResources. Ne peut pas être utilisé dans le même sélecteur de ressources que resourceLocation.

    • in: liste des valeurs autorisées pour l’kind spécifié. Impossible à utiliser avec notIn. Peut contenir jusqu’à 50 valeurs.

    • notIn: liste des valeurs non-autorisées pour l’kind spécifié. Impossible à utiliser avec in. Peut contenir jusqu’à 50 valeurs.

Un sélecteur de ressources peut contenir plusieurs sélecteurs. Pour être applicable à un sélecteur de ressources, une ressource doit répondre aux exigences spécifiées par tous ses sélecteurs. De plus, jusqu’à 10 sélecteurs de ressources peuvent être spécifiés dans une seule affectation. Les ressources dans l’étendue sont évaluées lorsqu’elles répondent à l’un de ces sélecteurs de ressources.

Remplacements

La propriété overrides facultative vous permet de changer l’effet d’une définition de stratégie sans modifier la définition de stratégie sous-jacente ni utiliser un effet paramétrable dans la définition de stratégie.

Les cas d’usage les plus courants pour les remplacements sont les initiatives de stratégie avec un grand nombre de définitions de stratégie associées. Dans ce cas, la gestion de plusieurs effets de stratégie peut demander des efforts administratifs importants, en particulier lorsque l’effet doit être ponctuellement mis à jour. Les remplacements peuvent être utilisés pour mettre à jour simultanément les effets de plusieurs définitions de stratégie au sein d’une initiative.

Examinons un exemple. Imaginez que vous avez une initiative de stratégie nommée CostManagement qui inclut une définition de stratégie personnalisée avec policyDefinitionReferenceIdcorpVMSizePolicy et un seul effet de audit. Supposons que vous souhaitiez affecter l’initiative CostManagement, mais que vous ne souhaitez pas encore voir la conformité signalée pour cette stratégie. L’effet « audit » de cette stratégie peut être remplacé par « désactivé » via un remplacement sur l’affectation d’initiative, comme indiqué dans l’exemple suivant :

{
    "properties": {
        "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
        "overrides": [
            {
                "kind": "policyEffect",
                "value": "disabled",
                "selectors": [
                    {
                        "kind": "policyDefinitionReferenceId",
                        "in": [ "corpVMSizePolicy" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "type": "Microsoft.Authorization/policyAssignments",
    "name": "CostManagement"
}

Les remplacements ont les propriétés suivantes :

  • kind : La propriété que l’affectation remplace. Le type pris en charge est policyEffect.

  • value : Nouvelle valeur qui remplace la valeur existante. Les valeurs prises en charge sont les effets.

  • selectors : (Facultatif) La propriété utilisée pour déterminer l’étendue de l’attribution de stratégie doit prendre le remplacement.

    • kind : propriété d’un sélecteur qui décrit quelle caractéristique affinera l’étendue du remplacement. La valeur autorisée pour kind: policyEffect est :

      • policyDefinitionReferenceId : Spécifie les définitions de stratégie dans une affectation d’initiative qui doivent prendre l’effet de remplacement.
    • in: liste des valeurs autorisées pour l’kind spécifié. Impossible à utiliser avec notIn. Peut contenir jusqu’à 50 valeurs.

    • notIn: liste des valeurs non-autorisées pour l’kind spécifié. Impossible à utiliser avec in. Peut contenir jusqu’à 50 valeurs.

Notez qu’une substitution peut être utilisée pour remplacer l’effet de nombreuses stratégies en spécifiant plusieurs valeurs dans le tableau policyDefinitionReferenceId. Un remplacement unique peut être utilisé dans la limite de 50 policyDefinitionReferenceIds, et une seule affectation de stratégie peut contenir jusqu’à 10 remplacements, évalués dans l’ordre dans lequel ils sont spécifiés. Avant la création de l’affectation, l’effet choisi dans le remplacement est validé par rapport à la règle de stratégie et à la liste des valeurs autorisées par le paramètre (dans les cas où l’effet est paramétré).

Mode d’application

La propriété enforcementMode permet aux clients de tester le résultat d’une stratégie sur des ressources existantes sans lancer l’effet de stratégie ni déclencher des entrées du journal d’activité Azure.

Ce scénario est de type « What If » et suit des pratiques de déploiement sécurisées. enforcementMode diffère de l’effet Disabled , car cet effet empêche l’évaluation des ressources de se produire.

Cette propriété a les valeurs suivantes :

Mode Valeur JSON Type Corriger manuellement Entrée du journal d’activité Description
activé Default string Oui Oui L’effet de stratégie est appliqué pendant la création ou la mise à jour d’une ressource.
Désactivé DoNotEnforce string Oui Non L’effet de stratégie n’est pas appliqué pendant la création ou la mise à jour d’une ressource.

Si enforcementMode n’est pas spécifié dans la définition d’une stratégie ou d’une initiative, la valeur Default est utilisée. Les tâches de correction peuvent être démarrées pour les stratégies deployIfNotExists, même lorsque enforcementMode est défini sur DoNotEnforce.

Étendues exclues

L’étendue de l’affectation comprend tous les conteneurs de ressources enfants et les ressources enfants. Si la définition ne doit pas être appliquée à un conteneur de ressources enfant ou une ressource enfant, ces derniers peuvent être exclus de l’évaluation en définissant notScopes. Cette propriété est un tableau qui permet d’exclure un ou plusieurs conteneurs de ressources ou ressources de l’évaluation. notScopes peut être ajouté ou mis à jour au terme de l’affectation initiale.

Notes

Une ressource exclue est différente d’une ressource exemptée. Pour plus d’informations, consultez Comprendre l’étendue d’Azure Policy.

ID de définition de stratégie

Ce champ correspond au nom du chemin complet d’une définition de stratégie ou d’une définition d’initiative. policyDefinitionId est une chaîne et non un tableau. Le contenu le plus récent de la définition de stratégie ou de l’initiative affectée est récupéré à chaque évaluation de l’affectation de stratégie. Si plusieurs stratégies sont souvent attribuées ensemble, il est recommandé d’utiliser une initiative.

Messages de non-conformité

Pour définir un message personnalisé décrivant la raison pour laquelle une ressource n’est pas conforme à la définition de la stratégie ou de l’initiative, définissez nonComplianceMessages dans la définition de l’affectation. Ce nœud est un tableau d’entrées message. Ce message personnalisé s’ajoute au message d’erreur par défaut en cas de non-conformité et est facultatif.

Important

Les messages personnalisés en cas de non-conformité sont pris en charge uniquement sur des définitions ou des initiatives avec les des définitions de Modes Resource Manager.

"nonComplianceMessages": [
    {
        "message": "Default message"
    }
]

Si l’affectation concerne une initiative, différents messages peuvent être configurés pour chaque définition de stratégie de l’initiative. Les messages utilisent la valeur policyDefinitionReferenceId configurée dans la définition de l’initiative. Pour plus d’informations, consultez Propriétés des définitions des stratégies.

"nonComplianceMessages": [
    {
        "message": "Default message"
    },
    {
        "message": "Message for just this policy definition by reference ID",
        "policyDefinitionReferenceId": "10420126870854049575"
    }
]

Paramètres

Ce segment de l’attribution de stratégie fournit les valeurs des paramètres définis dans la définition de stratégie ou d’initiative. Grâce à cette conception, il est possible de réutiliser une définition de stratégie ou d’initiative avec différentes ressources. Toutefois, vous devez chercher à connaître les valeurs métiers et les résultats pour chaque option.

"parameters": {
    "prefix": {
        "value": "DeptA"
    },
    "suffix": {
        "value": "-LC"
    }
}

Dans cet exemple, les paramètres précédemment définis dans la définition de stratégie sont prefix et suffix. Cette attribution de stratégie définit prefix sur DeptA et suffix sur -LC. La même définition de stratégie peut être réutilisée avec un autre ensemble de paramètres dans un autre service, ce qui réduit la duplication et la complexité des définitions de stratégie tout en offrant une certaine flexibilité.

Identité

Pour les affectations de stratégie dont l’effet est défini sur deployIfNotExist ou modify, il est nécessaire d’avoir une propriété d’identité pour effectuer la correction sur les ressources non conformes. Lorsque vous utilisez l’identité, l’utilisateur doit également spécifier un emplacement pour l’affectation.

Notes

Une attribution de stratégie unique ne peut être associée qu’à une seule identité managée affectée par le système ou l’utilisateur. Toutefois, cette identité peut si nécessaire être attribuée à plusieurs rôles.

# System-assigned identity
 "identity": {
    "type": "SystemAssigned"
  }
# User-assigned identity
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/SubscriptionID/resourceGroups/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Étapes suivantes