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 :
- le nom d’affichage
- description
- métadonnées
- attribution de stratégie
- définitions de stratégie dans une initiative
- catégorie d'exemption
- expiration
- sélecteurs de ressources
- validation de l’étendue d’affectation
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 customOrgPolicy
dé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.policyDefinitionReferenceId
champs.
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/write
opé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
- Découvrez les requêtes Azure Resource Graph sur les exemptions.
- Découvrez la différence entre les exclusions et les exemptions.
- Passez en revue le type de ressource Microsoft.Authorization policyExemptions.
- Découvrez comment obtenir des données de conformité.
- Découvrez comment corriger des ressources non conformes.