Partager via


Structure d'une définition d'initiative Azure Policy

Les initiatives vous permettent de regrouper en un seul élément plusieurs définitions de stratégies associées pour simplifier les affectations et la gestion. Par exemple, vous pouvez regrouper des définitions de stratégies de balisage associées en une même initiative. Au lieu d’attribuer chaque stratégie individuellement, vous appliquez l’initiative.

Pour créer une définition d'initiative de stratégie, vous devez utiliser JSON. La définition d'initiative de stratégie contient des éléments pour les propriétés suivantes :

  • le nom d’affichage
  • description
  • métadonnées
  • version
  • parameters
  • définitions de stratégie
  • groupes de stratégies (cette propriété fait partie de la fonctionnalité Conformité réglementaire (préversion))

L’exemple suivant montre comment créer une initiative pour gérer deux balises : costCenter et productName. Il utilise deux stratégies intégrées pour appliquer la valeur de balise par défaut.

{
    "properties": {
        "displayName": "Billing Tags Policy",
        "policyType": "Custom",
        "description": "Specify cost Center tag and product name tag",
        "version" : "1.0.0",
        "metadata": {
            "version": "1.0.0",
            "category": "Tags"
        },
        "parameters": {
            "costCenterValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for Cost Center tag"
                },
                "defaultValue": "DefaultCostCenter"
            },
            "productNameValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for product Name tag"
                },
                "defaultValue": "DefaultProduct"
            }
        },
        "policyDefinitions": [{
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "definitionVersion": "1.*.*"
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            }
        ]
    }
}

Les modèles et les éléments intégrés Azure Policy sont disponibles sous Exemples Azure Policy.

Métadonnées

La propriété facultative metadata stocke les informations relatives à la définition d'initiative 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 et dans les éléments intégrés.

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

  • version (chaîne) : assure le suivi des informations relatives à la version du contenu d'une définition d'initiative de stratégie. Pour les stratégies intégrées, cette version des métadonnées suit la propriété de version de la stratégie intégrée. Il est recommandé d’utiliser la propriété de version plutôt que cette version des métadonnées.

  • category (chaîne) : détermine sous quelle catégorie du portail Azure la définition de stratégie apparaît.

    Notes

    Pour une initiative Conformité réglementaire, la category doit être Conformité réglementaire.

  • preview (booléen) : indicateur true ou false permettant de déterminer si la définition d'initiative de stratégie est en préversion.

  • deprecated (booléen) : indicateur true ou false permettant de déterminer si la définition d'initiative de stratégie a été marquée comme déconseillée.

Version (préversion)

Les initiatives de stratégie intégrées peuvent héberger plusieurs versions avec le même definitionID. Si aucun numéro de version n’est spécifié, toutes les expériences affichent la dernière version de la définition. Pour afficher une version spécifique d’une définition intégrée, elle doit être spécifiée dans l’API, le kit SDK ou l’interface utilisateur. Pour faire référence à une version spécifique d’une définition au sein d’une affectation, examinez la version de la définition dans l’affectation

Le service Azure Policy utilise les propriétés version, preview et deprecated pour transmettre l’état et le niveau de modification à une définition ou une initiative de stratégie intégrée. Le format de version est le suivant : {Major}.{Minor}.{Patch}. Lorsqu’une définition de stratégie est en état de préversion, le suffixe préversion est ajouté à la propriété version et traité comme un booléen. Lorsqu’une définition de stratégie est déconseillée, la dépréciation est capturée en tant que booléen dans les métadonnées de la définition avec "deprecated": "true".

  • Version majeure (par exemple 2.0.0) : introduction de changements cassants, comme des modifications majeures de la logique des règles, la suppression de paramètres ou l’ajout d’un effet d’application par défaut.
  • Version mineure (par exemple 2.1.0) : introduction de changements comme des modifications mineures de la logique des règles, l’ajout de nouvelles valeurs autorisées pour des paramètres, la modification des ID de définition de rôle, ou l’ajout ou la suppression de définitions au sein d’une initiative.
  • Version corrective (par exemple 2.1.4) : introduction de modifications de chaînes ou de métadonnées, et scénarios de sécurité en cas d’urgence (rare).

Les initiatives intégrées sont versionnées, et des versions spécifiques des définitions de stratégie intégrées peuvent également être référencées dans des initiatives intégrées ou personnalisées. Pour plus d’informations, consultez Définition et versions de référence.

Pendant la préversion, lors de la création d’une initiative via le portail, vous ne pourrez pas spécifier de versions pour les références de définition de stratégie intégrée. Au lieu de cela, toutes les références de stratégie intégrée dans des initiatives personnalisées créées via le portail pointeront par défaut vers la dernière version de la définition de stratégie.

Pour plus d’informations sur les stratégies intégrées des versions d’Azure Policy, consultez Contrôle de version des stratégies intégrées. Pour en savoir plus sur ce que cela signifie pour une stratégie d’être dépréciée ou en préversion, consultez Stratégies en préversion et dépréciées.

Paramètres

Les paramètres permettent de simplifier la gestion des stratégies en réduisant le nombre de définitions de stratégies. Considérez les paramètres comme les champs d’un formulaire : name, address, city, state. Ces paramètres restent toujours les mêmes ; toutefois, leurs valeurs changent en fonction de la personne qui remplit le formulaire. Les paramètres fonctionnent de la même manière lors de l'élaboration des initiatives de stratégie. En incluant des paramètres dans une définition d'initiative de stratégie, vous pouvez réutiliser ce paramètre dans les stratégies incluses.

Remarque

Une fois qu’une initiative est attribuée, il n’est plus possible de modifier les paramètres à son niveau. Pour cette raison, il est recommandé de définir une defaultValue lors de la définition du paramètre.

Propriétés du paramètre

Un paramètre possède les propriétés suivantes, qui sont utilisées dans la définition d'initiative de stratégie :

  • name: Nom de votre paramètre. Utilisé par la fonction de déploiement parameters dans le cadre de la règle de stratégie. Pour plus d’informations, consultez Utilisation d’une valeur de paramètre.
  • type: Détermine si le paramètre est une chaîne, un tableau, un objet, booléen, entier, flottant, ou DateHeure.
  • metadata : définit les sous-propriétés utilisées principalement par le portail Azure pour afficher des informations conviviales :
    • description : (facultatif) Explication du rôle du paramètre. Utilisable pour fournir des exemples de valeurs acceptables.
    • displayName: Nom convivial du paramètre visible dans le portail.
    • strongType: (Facultatif) Utilisé lors de l’affectation de la définition de stratégie via le portail. Fournit une liste prenant en compte le contexte. Pour plus d’informations, voir strongType.
  • defaultValue: (Facultatif) Définit la valeur du paramètre dans une affectation si aucune valeur n’est fournie.
  • allowedValues: (Facultatif) Fournit le tableau des valeurs que le paramètre accepte pendant l’attribution.

À titre d'exemple, vous pouvez définir une définition d'initiative de stratégie de manière à limiter l'emplacement des ressources dans les différentes définitions de stratégie incluses. Le paramètre allowedLocations pourrait s'appliquer à cette définition d'initiative de stratégie. Le paramètre est alors disponible pour chaque définition de stratégie incluse et défini lors de l'attribution de l'initiative de stratégie.

"parameters": {
    "init_allowedLocations": {
        "type": "array",
        "metadata": {
            "description": "The list of allowed locations for resources.",
            "displayName": "Allowed locations",
            "strongType": "location"
        },
        "defaultValue": [ "westus2" ],
        "allowedValues": [
            "eastus2",
            "westus2",
            "westus"
        ]
    }
}

Transmettre une valeur de paramètre à une définition de stratégie

Vous déclarez les paramètres d'initiative que vous transmettez à telle ou telle définition de stratégie incluse dans le tableau policyDefinitions de la définition d'initiative. Bien que le nom du paramètre puisse être le même, l'utilisation dans les initiatives de noms différents de ceux utilisés dans les définitions de stratégie simplifie la lisibilité du code.

Par exemple, le paramètre d'initiative init_allowedLocations défini précédemment peut être transmis à plusieurs définitions de stratégie incluses et à leurs paramètres, sql_locations et vm_locations, comme suit :

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

Cet exemple fait référence au paramètre init_allowedLocations qui a été démontré dans les propriétés du paramètre.

strongType

Dans la propriété metadata, vous pouvez utiliser strongType pour fournir une liste d’options à choix multiple dans le portail Azure. strongType peut être un type de ressource pris en charge ou une valeur autorisée. Pour déterminer si un type de ressource est valide pour strongType, utilisez la commande Get-AzResourceProvider.

Certains types de ressources non retournés par la commande Get-AzResourceProvider sont pris en charge. Ces types de ressources sont les suivants :

  • Microsoft.RecoveryServices/vaults/backupPolicies

En dehors du type de ressource, les valeurs autorisées pour strongType sont les suivantes :

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Définitions de stratégies

La partie policyDefinitions de la définition d'initiative est un tableau dont les définitions de stratégie existantes sont incluses dans l'initiative. Comme mentionné dans Transmettre une valeur de paramètre à une définition de stratégie, cette propriété permet de transmettre les paramètres d'initiative à la définition de stratégie.

Propriétés de la définition de stratégie

Chaque élément du tableau qui représente une définition de stratégie comporte les propriétés suivantes :

  • policyDefinitionId (chaîne) : ID de la définition de stratégie personnalisée ou intégrée à inclure.
  • policyDefinitionReferenceId (chaîne) : nom court de la définition de stratégie incluse.
  • parameters: (facultatif) paires nom/valeur permettant de transmettre un paramètre d'initiative à la définition de stratégie incluse en tant que propriété dans cette définition de stratégie. Pour plus d’informations, consultez Paramètres.
  • definitionVersion : (facultatif) la version de la définition de stratégie intégrée à laquelle faire référence. Si aucune n’est spécifiée, elle fait référence à la version majeure la plus récente au moment de l’affectation et intègre automatiquement les mises à jour mineures. Pour plus d’informations, consultez Version des définitions.
  • groupNames (tableau de chaînes) : (facultatif) groupe dont la définition de stratégie est membre. Pour plus d'informations, consultez Groupes de stratégies.

Voici un exemple de policyDefinitions comportant deux définitions de stratégie incluses qui reçoivent chacune le même paramètre d’initiative :

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "definitionVersion": "1.2.*"
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

Groupes de définition de stratégie

Les définitions de stratégie dans une définition d’initiative peuvent être regroupées et classées par catégorie. La fonctionnalité Conformité réglementaire (préversion) d’Azure Policy utilise cette propriété pour regrouper les définitions dans des contrôles et des domaines de conformité. Ces informations sont définies dans la propriété policyDefinitionGroups tableau. Des détails de regroupement supplémentaires sont disponibles dans un objet policyMetadata créé par Microsoft. Pour plus d'informations, consultez Objets de métadonnées.

Paramètres des groupes de définitions de stratégie

Chaque élément du tableau de policyDefinitionGroups doit disposer des deux propriétés suivantes :

  • name (chaîne) [obligatoire] : nom court du groupe. Dans Conformité réglementaire, le contrôle. La valeur de cette propriété est utilisée par groupNames dans policyDefinitions.

  • category (chaîne) : Hiérarchie à laquelle le groupe appartient. Dans Conformité réglementaire, le domaine de conformité du contrôle.

  • displayName (chaîne) : Nom convivial du groupe ou du contrôle. Utilisé par le portail.

  • description (chaîne) : Description de ce que couvre le groupe ou le contrôle.

  • additionalMetadataId (chaîne) : emplacement de l'objet policyMetadata contenant des détails supplémentaires sur le contrôle et le domaine de conformité.

    Notes

    Les clients peuvent pointer vers un objet policyMetadata existant. Toutefois, ces objets sont en lecture seule et uniquement créés par Microsoft.

Exemple de propriété policyDefinitionGroups de la définition d'initiative intégrée NIST :

"policyDefinitionGroups": [
    {
        "name": "NIST_SP_800-53_R4_AC-1",
        "additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
    }
]

Objets de métadonnées

Les éléments intégrés créés par Microsoft pour la fonctionnalité Conformité réglementaire contiennent des informations supplémentaires sur chaque contrôle. Ces informations sont :

  • affichées sur le portail Azure dans la présentation d'un contrôle sur une initiative Conformité réglementaire ;
  • disponibles via l'API REST (voir le Microsoft.PolicyInsightsfournisseur de ressources et le groupe d'opérations policyMetadata) ;
  • disponibles via Azure CLI (voir la commande az policy metadata).

Important

Les objets de métadonnées de la fonctionnalité Conformité réglementaire sont en lecture seule et ne peuvent pas être créés par les clients.

Les métadonnées d'un regroupement de stratégies comportent les informations suivantes dans le nœud properties :

  • metadataId: ID de contrôle auquel le regroupement se rapporte.
  • category (obligatoire) : domaine de conformité auquel appartient le contrôle.
  • title (obligatoire) : nom convivial de l'ID du contrôle.
  • owner (obligatoire) : identifie qui est responsable du contrôle dans Azure : Client, Microsoft, Partagé.
  • description: informations supplémentaires sur le contrôle.
  • requirements: détails sur la responsabilité de l'implémentation du contrôle.
  • additionalContentUrl: lien d'accès à des informations supplémentaires sur le contrôle. Cette propriété est généralement un lien vers la section de la documentation qui couvre ce contrôle dans la norme de conformité.

Vous trouverez ci-dessous un exemple de l'objet policyMetadata. Cet exemple de métadonnées appartient au contrôle NIST SP 800-53 R4 AC-1.

{
  "properties": {
    "metadataId": "NIST SP 800-53 R4 AC-1",
    "category": "Access Control",
    "title": "Access Control Policy and Procedures",
    "owner": "Shared",
    "description": "**The organization:**    \na. Develops, documents, and disseminates to [Assignment: organization-defined personnel or roles]:  \n1. An access control policy that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and  \n2. Procedures to facilitate the implementation of the access control policy and associated access controls; and  \n
\nb. Reviews and updates the current:  \n1. Access control policy [Assignment: organization-defined frequency]; and  \n2. Access control procedures [Assignment: organization-defined frequency].",
    "requirements": "**a.**  The customer is responsible for developing, documenting, and disseminating access control policies and procedures. The customer access control policies and procedures address access to all customer-deployed resources and customer system access (e.g., access to customer-deployed virtual machines, access to customer-built applications).  \n**b.**  The customer is responsible for reviewing and updating access control policies and procedures in accordance with FedRAMP requirements.",
    "additionalContentUrl": "https://nvd.nist.gov/800-53/Rev4/control/AC-1"
  },
  "id": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1",
  "name": "NIST_SP_800-53_R4_AC-1",
  "type": "Microsoft.PolicyInsights/policyMetadata"
}

Étapes suivantes