Structure d’attribution Azure Policy

Les affectations de stratégie définissent les ressources qui doivent être évaluées par une définition de stratégie ou une initiative. De plus, l’affectation de stratégie peut déterminer les valeurs de paramètres de ce groupe de ressources au moment de l’affectation, ce qui permet de réutiliser les définitions de stratégie qui s’appliquent aux mêmes propriétés de ressource avec différents besoins de conformité.

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 un exemple de requête d’affectation de stratégie en mode DoNotEnforce avec des paramètres :

{
  "properties": {
    "displayName": "Enforce resource naming rules",
    "description": "Force resource names to begin with DeptA and end with -LC",
    "definitionVersion": "1.*.*",
    "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": []
  }
}

Étendue

L’étendue utilisée pour le temps de création des ressources d’affectation est le principal moteur de l’applicabilité des ressources. Pour plus d’informations sur l’étendue d’affectation, consultez Comprendre l’étendue dans Azure Policy.

ID et version de définition de stratégie (préversion)

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, la recommandation est d’utiliser une initiative.

Pour les définitions et initiatives intégrées, vous pouvez utiliser une definitionVersion spécifique sur laquelle effectuer l’évaluation. Par défaut, la version définie est la version majeure la plus récente et intègre automatiquement les changements mineurs et correctifs.

  • Pour une intégration automatique des changements mineurs de la définition, le numéro de version se présente ainsi : #.*.*. Le caractère générique représente les mises à jour intégrées automatiquement.
  • Pour adhérer à un chemin de version mineure, le format de version se présente ainsi : #.#.*.
  • Tous les changements correctifs doivent être intégrés automatiquement à des fins de sécurité. Les changements correctifs se limitent aux modifications de texte et aux scénarios de procédure d’accès d’urgence.

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 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.
  • 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.

Propriétés des métadonnées propres aux scénarios

  • 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}"
        }
    }
    
  • 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 à élargir l’étendue d’évaluation de votre stratégie, il vous suffit de mettre à jour 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 selectors. 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 resourceSelectors 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é facultative overrides 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 initiatives de stratégie associées à un grand nombre de définitions de stratégie représentent un cas d’utilisation courant pour les remplacements d’effet. 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 disposiez d’une initiative de stratégie nommée CostManagement qui inclut une définition de stratégie personnalisée avec corpVMSizePolicy comme policyDefinitionReferenceId 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 disabled 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"
}

Un autre cas d’utilisation courant pour les remplacements est le déploiement d’une nouvelle version de définition. Pour connaître les étapes recommandées en vue d’une mise à jour sécurisée d’une version d’affectation, consultez Déploiement sécurisé d’une stratégie.

Les remplacements ont les propriétés suivantes :

  • kind : propriété que l’affectation remplace. Les types pris en charge sont policyEffect et policyVersion.

  • value : Nouvelle valeur qui remplace la valeur existante. Pour kind: policyEffect, les valeurs prises en charge sont les effets. Pour kind: policyVersion, le numéro de version pris en charge doit être supérieur ou égal à la valeur de definitionVersion spécifiée dans l’affectation.

  • 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 affine l’étendue du remplacement. Valeurs autorisées pour kind: policyEffect :

      • policyDefinitionReferenceId : cette propriété spécifie les définitions de stratégie dans une affectation d’initiative qui doivent prendre l’effet de remplacement.

      • 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.

      Valeur autorisée pour kind: policyVersion :

      • 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.
    • 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.

Il est possible d’utiliser un remplacement pour remplacer l’effet d’un grand nombre de stratégies en spécifiant plusieurs valeurs dans le tableau policyDefinitionReferenceId. Un remplacement unique peut être utilisé dans la limite de 50 policyDefinitionReferenceId, 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.

Remarque

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

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 de stratégie.

"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 avec effet défini sur deployIfNotExists ou modify, l’exigence est de disposer d’une propriété d’identité pour effectuer une correction sur les ressources non conformes. Lorsqu’une affectation utilise une identité, l’utilisateur doit également spécifier un emplacement pour l’affectation.

Remarque

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/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Étapes suivantes