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. Les exemptions ne peuvent pas être créées au niveau du composant du 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/ExemptRG/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",
        "policyDefinitionReferenceIds": [
            "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 un contexte pour son utilisation avec la ressource spécifique. 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é métadonnées permet de créer n’importe quelle propriété enfant nécessaire pour stocker des informations pertinentes. Dans l'exemple, les propriétés requestedBy, approvedBy, approvedOn, et ticketRef contiennent des valeurs client qui fournissent des informations sur la personne qui a demandé l'exemption, sur la personne qui l'a approuvée et sur le moment où elle l'a fait, ainsi qu'un ticket de suivi interne pour la demande. Ces propriétés de métadonnées sont des exemples, mais elles ne sont pas obligatoires et les métadonnées ne sont pas limitées à 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 le policyAssignmentId concerne une attribution d’initiative, la propriété policyDefinitionReferenceIds peut être utilisée pour spécifier la ou les définitions de stratégie de l’initiative à laquelle la ressource objet a une exemption. Comme 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 de l’utilisation de cette catégorie est pour une ressource ou une hiérarchie de ressources qui doit être exclue d’une ou de plusieurs définitions dans une initiative, mais ne doit pas être exclue de l’initiative entière.

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é resourceSelectorsfacultative. Cette propriété fonctionne de la même façon dans les exemptions que dans les affectations, ce qui permet un déploiement progressif ou une restauration 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 a un emplacement ou non. Vous trouverez plus d’informations sur l’utilisation des sélecteurs de ressources dans la structure d’affectation. Voici un exemple d'exemption JSON, qui utilise des sélecteurs de ressources. Dans cet exemple, seules les ressources entrantes dans westcentralus sont exemptées de l’affectation de stratégie :

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/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 s’assurer qu’elle se trouve dans ou sous 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. C’est le cas quand un abonnement doit être déplacé d’un groupe d’administration vers un autre, mais que le déplacement est bloqué par la stratégie en raison des propriétés des ressources au sein de 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, lorsque l’abonnement est déplacé dans 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 ci-dessous :

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/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 se produit.

Autorisations requises

Les autorisations Azure RBAC nécessaires pour gérer les objets d’exemption de stratégie se trouvent dans le Microsoft.Authorization/policyExemptionsgroupe d’opérations. 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 ont des 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. Lors de l'évaluation de la conformité, la ressource « StorageAcc1 » n'est pas conforme, mais l'accès au réseau public de StorageAcc1 doit être autorisé à des fins professionnelles. À ce moment-là, une requête doit être soumise pour créer une ressource d'exemption ciblant StorageAcc1. Une fois l'exemption créée, StorageAcc1 apparaît comme exempt lors de l'examen de conformité.

Réexaminez régulièrement vos exemptions pour vous assurer que tous les articles éligibles sont correctement exemptés et supprimez rapidement tous ceux qui ne remplissent plus les conditions requises pour être exemptés. À ce moment-là, les ressources d'exemption qui ont expiré peuvent également être supprimées.

Étapes suivantes