Structure d’exemption Azure Policy

La fonctionnalité d’exemption Azure Policy est utilisée pour exempter une hiérarchie de ressources ou une ressource individuelle de l’évaluation d’initiatives ou de définitions. Les ressources qui ne sont exemptes de pour la conformité globale, mais ne peuvent pas être évaluées ou comportent une dérogation temporaire. Pour en savoir plus, reportez-vous à Comprendre l'applicabilité dans Azure Policy. Les exemptions Azure Policy fonctionnent également avec les modes Resource Manager suivants : Microsoft.Kubernetes.Data, Microsoft.KeyVault.Data et Microsoft.Network.Data.

Vous utilisez JavaScript Object Notation (JSON) pour créer une exemption de stratégie. L’exemption de stratégie contient des éléments pour :

Une exemption de politique est créée comme objet enfant de la hiérarchie des ressources ou de la ressource individuelle bénéficiant de l'exemption. Vous ne pouvez pas créer d’exemptions au niveau du composant en mode Fournisseur de ressources. Si la ressource parente à laquelle l’exemption s’applique est supprimée, l’exemption est également supprimée.

Par exemple, le code JSON suivant montre une exemption de stratégie dans la catégorie dispenser d’une ressource à une affectation d’initiative nommée resourceShouldBeCompliantInit. La ressource n'est exemptée que de deux des définitions de politique de l'initiative : la customOrgPolicydéfinition de la politique personnalisée (policyDefinitionReferenceId : requiredTags) et la définition de la politique intégrée des emplacements autorisés (policyDefinitionReferenceId : allowedLocations) :

{
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
  "apiVersion": "2020-07-01-preview",
  "name": "resourceIsNotApplicable",
  "type": "Microsoft.Authorization/policyExemptions",
  "properties": {
    "displayName": "This resource is scheduled for deletion",
    "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
    "metadata": {
      "requestedBy": "Storage team",
      "approvedBy": "IA",
      "approvedOn": "2020-07-26T08:02:32.0000000Z",
      "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
    },
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceId": [
      "requiredTags",
      "allowedLocations"
    ],
    "exemptionCategory": "waiver",
    "expiresOn": "2020-12-31T23:59:00.0000000Z",
    "assignmentScopeValidation": "Default"
  }
}

Nom d’affichage et description

Vous utilisez displayName et description pour identifier l’exemption de stratégie, et fournir le contexte de son utilisation avec la ressource spécifique. displayName a une longueur maximale de 128 caractères et description une longueur maximale de 512 caractères.

Métadonnées

La propriété metadata permet de créer n’importe quelle propriété enfant nécessaire au stockage des informations pertinentes. Dans l’exemple, les propriétés requestedBy, approvedBy, approvedOn et ticketRef contiennent des valeurs client qui fournissent des informations sur qui a demandé l’exemption, qui l’a approuvée et quand ainsi qu’un ticket de suivi interne pour la requête. Ces propriétés metadata sont des exemples, mais elles ne sont pas obligatoires, et metadata n’est pas limité à ces propriétés enfants.

ID d'attribution de stratégie

Ce champ correspond au nom du chemin complet d’une attribution de stratégie ou d’une attribution d’initiative. policyAssignmentId est une chaîne et non un tableau. Cette propriété définit l’affectation à partir de laquelle la hiérarchie de ressources parente ou la ressource individuelle est exemptée.

ID de définition de stratégie

Si policyAssignmentId est destiné à une affectation d’initiative, la propriété policyDefinitionReferenceId peut être utilisée afin de spécifier la définition de stratégie de l’initiative pour laquelle la ressource objet dispose d’une exemption. Dans la mesure où la ressource peut être exemptée d’une ou de plusieurs définitions de stratégie incluses, cette propriété est un tableau. Les valeurs doivent correspondre aux valeurs de la définition d’initiative dans les policyDefinitions.policyDefinitionReferenceIdchamps.

Catégorie d’exemption

Deux catégories d’exemption existent et sont utilisées pour regrouper les exemptions :

  • Atténuées : L’exemption est accordée parce que l’intention de stratégie est satisfaite par une autre méthode.
  • Renonciation : L’exemption est accordée car l’état de non-conformité de la ressource est provisoirement accepté. Une autre raison d’utiliser cette catégorie vise à exclure une ressource ou une hiérarchie de ressources d’une ou plusieurs définitions dans une initiative, sans pour autant l’exclure de l’ensemble de l’initiative.

Expiration

Pour définir à quel moment une hiérarchie des ressources ou une ressource individuelle n’est plus exemptée d’affectation, définissez la propriété expiresOn. Cette propriété facultative doit être au format dateHeure ISO 8601 yyyy-MM-ddTHH:mm:ss.fffffffZ.

Notes

Les exemptions de stratégie ne sont pas supprimées lorsque la expiresOn date est atteinte. L’objet est conservé pour la conservation des enregistrements, mais l’exemption n’est plus honorée.

Sélecteurs de ressources

Les exemptions prennent en charge une propriété facultative resourceSelectors qui fonctionne de la même manière dans les exemptions que dans les affectations. La propriété permet le lancement progressif ou la restauration graduelle d’une exemption vers certains sous-ensembles de ressources de manière contrôlée en fonction du type de ressource, de l’emplacement de la ressource, ou du fait que la ressource dispose d’un emplacement. Vous trouverez plus d’informations sur l’utilisation des sélecteurs de ressources dans la structure d’affectation. Le code JSON suivant est un exemple d’exemption qui utilise des sélecteurs de ressources. Dans cet exemple, seules les ressources de westcentralus sont exemptées de l’affectation de stratégie :

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "resourceSelectors": [
      {
        "name": "TemporaryMitigation",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "westcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Des régions peuvent être ajoutées ou supprimées de la liste resourceLocation de l'exemple. Les sélecteurs de ressources permettent une plus grande flexibilité concernant l’emplacement et la façon dont les exemptions peuvent être créées et gérées.

Validation de l’étendue d’affectation (préversion)

Dans la plupart des scénarios, l’étendue d’exemption est validée pour vérifier qu’elle se trouve au niveau ou en dessous de l’étendue d’affectation de stratégie. La propriété facultative assignmentScopeValidation peut autoriser une exemption à contourner cette validation et à être créée en dehors de l’étendue d’affectation. Cette validation est destinée aux situations où un abonnement doit être déplacé d’un groupe d’administration vers un autre, mais où le déplacement est bloqué par une stratégie en raison des propriétés des ressources présentes dans l’abonnement. Dans ce scénario, une exemption peut être créée pour l’abonnement dans son groupe d’administration actuel afin d’exempter ses ressources d’une affectation de stratégie sur le groupe d’administration de destination. Ainsi, quand l’abonnement est déplacé vers le groupe d’administration de destination, l’opération n’est pas bloquée, car les ressources sont déjà exemptées de l’affectation de stratégie en question. L’utilisation de cette propriété est illustrée dans l’exemple suivant :

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceId": [
      "limitSku",
      "limitType"
    ],
    "exemptionCategory": "Waiver",
    "assignmentScopeValidation": "DoNotValidate",
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyExemptions",
  "name": "DemoExpensiveVM"
}

Les valeurs autorisées pour assignmentScopeValidation sont Default et DoNotValidate. En l’absence de spécification, le processus de validation par défaut a lieu.

Autorisations requises

Les autorisations de contrôle d’accès en fonction du rôle (RBAC) Azure nécessaires à la gestion des objets d’exemption de stratégie se trouvent dans le groupe d’opérations Microsoft.Authorization/policyExemptions. Les rôles intégrés de collaborateur de stratégie de ressource et d’administrateur de la sécurité disposent des autorisations read et write l’enregistreur de données Policy Insights (préversion) dispose de l’autorisation read.

Les exemptions font l’objet de mesures de sécurité supplémentaires en raison de l’impact de l’octroi d’une exemption. Au-delà de la nécessité de l’Microsoft.Authorization/policyExemptions/writeopération sur la hiérarchie de ressources ou une ressource individuelle, le créateur d’une exemption doit avoir le verbe exempt/Action sur l’affectation cible.

Création et gestion d'exemptions

Les exemptions sont recommandées pour des scénarios spécifiques ou limitées dans le temps, lorsqu'une ressource ou une hiérarchie de ressources doit toujours être suivie et serait normalement évaluée, mais qu'il existe une raison spécifique pour laquelle elle ne doit pas être évaluée d'en vérifier la conformité. Par exemple, si la définition intégrée Storage accounts should disable public network access (ID : b2982f36-99f2-4db5-8eff-283140c09693) est attribuée à un environnement et que l'effet est défini sur audit. Au moment de l’évaluation de conformité, la ressource StorageAcc1 est non conforme, mais StorageAcc1 doit avoir accès au réseau public pour des raisons métier. À ce moment-là, une requête doit être envoyée pour créer une ressource d’exemption qui cible StorageAcc1. Une fois l’exemption créée, StorageAcc1 apparaît comme étant exempté dans l’évaluation de conformité.

Réexaminez régulièrement vos exemptions pour vérifier que tous les éléments éligibles sont exemptés de manière appropriée, puis supprimez rapidement ceux qui ne remplissent pas les conditions d’exemption. À ce stade, les ressources d’exemption ayant expiré peuvent également être supprimées.

Étapes suivantes