Ce guide explique comment créer une règle d'administration avec une contrainte particulière. Les contraintes utilisées dans les exemples de cette page ne sont pas des contraintes réelles mais des exemples génériques utilisés à des fins éducatives.
Pour plus d'informations sur les contraintes et les problèmes qu'elles résolvent, consultez la liste de toutes les contraintes du service de règles d'administration.
Avant de commencer
Lisez la page Présentation du service de règles d'administration pour connaître le fonctionnement de la règle d'administration.
Lisez la page Comprendre le processus d'évaluation hiérarchique pour en savoir plus sur l'héritage des règles.
Rôles requis
Pour obtenir les autorisations nécessaires pour gérer des règles d'administration, demandez à votre administrateur de vous accorder le rôle IAM Administrateur des règles d'administration (roles/orgpolicy.policyAdmin
) dans l'organisation.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour gérer les règles d'administration. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour gérer les règles d'administration :
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Utiliser des contraintes de liste avec une règle d'administration
Vous pouvez définir, sur votre ressource Organisation, une règle d'administration utilisant une contrainte de liste pour refuser l'accès à un service particulier. Le processus suivant explique comment définir une règle d'administration à l'aide de la Google Cloud CLI. Pour des instructions sur l'affichage et la définition des règles d'administration à l'aide du dans la console Google Cloud, consultez Créer et gérer des règles
Les règles d'administration utilisant des contraintes de liste ne peuvent pas comporter plus de 500 règles des valeurs individuelles autorisées ou refusées, et ne peut pas dépasser 32 Ko. Si une règle d'administration est créée ou mise à jour pour contenir plus de 500 valeurs ou pour avoir une taille supérieure à 32 ko, elle ne peut pas être enregistrée, et la requête renvoie une erreur.
Configurer l'application sur la ressource Organisation
Pour configurer l'application sur une organisation à l'aide de gcloud CLI, procédez comme suit : procédez comme suit:
Obtenez la règle actuelle pour la ressource Organisation en utilisant la commande
describe
. Cette commande renvoie la règle directement appliquée à cette ressource :gcloud org-policies describe \ LIST_CONSTRAINT --organization=ORGANIZATION_ID
Remplacez les éléments suivants :
ORGANIZATION_ID
: identifiant unique du ressource d'organisation. ID de l'organisation est au format décimal et ne peut pas comporter de zéros non significatifs.LIST_CONSTRAINT
: contrainte de liste pour le service que vous souhaitez appliquer. Par exemple, la contrainteconstraints/gcp.restrictNonCmekServices
limite les services pouvant créer des ressources sans clés de chiffrement gérées par le client (CMEK).
Vous pouvez également appliquer la règle d'administration à un dossier ou à un projet avec les options
--folder
ou--project
, ainsi que l'ID de dossier et l'ID de projet, respectivement.La réponse renvoie la règle d'administration actuelle, le cas échéant. Exemple :
name: projects/841166443394/policies/gcp.resourceLocations spec: etag: BwW5P5cEOGs= inheritFromParent: true rules: - condition: expression: resource.matchTagId("tagKeys/1111", "tagValues/2222") values: allowedValues: - in:us-east1-locations - condition: expression: resource.matchTag("123/env", "prod") values: allowedValues: - in:us-west1-locations - values: deniedValues: - in:asia-south1-locations updateTime: '2021-01-19T12:00:51.095Z'
Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Définissez la règle sur l'organisation à l'aide de la commande
set-policy
. Cette opération écrase toute règle associée à la ressource.Créez un fichier temporaire
/tmp/policy.yaml
pour stocker la règle :name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A
Exécutez la commande
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Affichez la règle actuellement en vigueur en utilisant
describe --effective
. Cela renvoie la règle d'administration telle qu'elle est évaluée à ce stade de la hiérarchie des ressources (héritage inclus).gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Le résultat de la commande sera le suivant :
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: etag: BwVJi0OOESU= rules: - values: deniedValues: - VALUE_A
Étant donné que cette règle d'administration a été définie au niveau de l'organisation, toutes les ressources enfants autorisant l'héritage en hériteront.
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Configurer l'application sur une sous-arborescence hiérarchique
Les contraintes de listes prennent des valeurs explicitement définies pour déterminer les ressources qui doivent être autorisées ou refusées. Certaines contraintes peuvent également accepter des valeurs qui utilisent le préfixe under:
, qui spécifie une sous-arborescence ayant cette ressource pour racine.
L'utilisation du préfixe under:
sur une valeur autorisée ou refusée force la règle d'administration à agir sur cette ressource et sur tous ses enfants. Pour en savoir plus sur les contraintes autorisant l'utilisation du préfixe under:
, consultez la page Contraintes en matière de règles d'administration.
On appelle "chaîne de sous-arborescence hiérarchique" une valeur qui utilise le préfixe under:
. Une chaîne de sous-arborescence hiérarchique spécifie le type de ressource à laquelle elle s'applique. Par exemple, l'utilisation d'une chaîne de sous-arborescence projects/PROJECT_ID
lors de la définition de la contrainte constraints/compute.storageResourceUseRestrictions
autorise ou refuse l'utilisation du stockage Compute Engine pour PROJECT_ID
et tous ses enfants.
Obtenez la règle actuelle pour la ressource Organisation en utilisant la commande
describe
:gcloud org-policies describe \ LIST_CONSTRAINT \ --organization=ORGANIZATION_ID
Remplacez les éléments suivants :
ORGANIZATION_ID
est un identifiant unique pour la ressource d'organisation.LIST_CONSTRAINT
est la contrainte de liste pour le service que vous souhaitez appliquer.
Vous pouvez également appliquer la règle d'administration à un dossier ou à un projet avec les options
--folder
ou--project
, ainsi que l'ID de dossier et l'ID de projet, respectivement.Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Définissez la règle sur le projet à l'aide de la commande
set-policy
. Le préfixeunder:
définit la contrainte de sorte qu'elle refuse la ressource nommée et toutes ses ressources enfants.Créez un fichier temporaire
/tmp/policy.yaml
pour stocker la règle :name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - under:folders/VALUE_A
Exécutez la commande
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Où :
under:
est un préfixe qui signifie que ce qui suit est une chaîne de sous-arborescence.folders/VALUE_A
est l'ID de dossier de la ressource racine que vous souhaitez refuser. Cette ressource et tous ses enfants dans la hiérarchie des ressources seront refusés.
Vous pouvez également appliquer le préfixe
under:
aux organisations et aux projets, comme dans les exemples suivants :under:organizations/VALUE_X
under:projects/VALUE_Y
Affichez la règle actuellement en vigueur à l'aide de la commande
describe --effective
.gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Le résultat de la commande sera le suivant :
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - under:folders/VALUE_A
La règle permet maintenant de refuser le dossier VALUE_A et toutes ses ressources enfants.
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Fusionner la règle d'organisation sur un projet
Vous pouvez définir une règle d'administration sur une ressource, qui fusionnera avec toute stratégie héritée de sa ressource parente. Cette règle fusionnée sera ensuite évaluée pour créer une nouvelle règle en vigueur basée sur les règles d'héritage.
Obtenez la règle actuelle pour la ressource en utilisant la commande
describe
:gcloud org-policies describe \ LIST_CONSTRAINT \ --project=PROJECT_ID
Remplacez les éléments suivants :
PROJECT_ID
: identifiant unique de votre projet.LIST_CONSTRAINT
: contrainte de liste pour le service que vous souhaitez appliquer.
Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Affichez la règle actuellement en vigueur à l'aide de la commande
describe --effective
:gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande comprend une valeur refusée héritée de la ressource Organisation :
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A
Définissez la règle sur le projet à l'aide de la commande
set-policy
.Créez un fichier temporaire
/tmp/policy.yaml
pour stocker la règle :name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: inheritFromParent: true rules: - values: deniedValues: - VALUE_B - VALUE_C
Exécutez la commande
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Utilisez à nouveau la commande
describe --effective
pour afficher la règle mise à jour :gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande inclura le résultat effectif de la fusion de la règle à partir de la ressource et du parent :
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A - VALUE_B - VALUE_C
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Restaurer le comportement par défaut de la contrainte
Vous pouvez réinitialiser la règle pour qu'elle utilise le comportement par défaut de la contrainte à l'aide de la commande reset
. Pour obtenir la liste de toutes les contraintes disponibles et de leurs valeurs par défaut, consultez la page Contraintes liées aux règles d'administration. L'exemple suivant suppose que le comportement par défaut des contraintes consiste à autoriser toutes les valeurs.
Obtenez la règle en vigueur sur le projet pour afficher la règle fusionnée actuelle :
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Remplacez PROJECT_ID par l'identifiant unique de votre projet. Le résultat de la commande sera le suivant :
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A - VALUE_B - VALUE_C
Réinitialisez la règle d'administration à l'aide de la commande
reset
.gcloud org-policies reset LIST_CONSTRAINT \ --project=PROJECT_ID
Obtenez la règle en vigueur pour valider le comportement par défaut :
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande autorise toutes les valeurs :
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Supprimer une règle d'administration
Vous pouvez supprimer une règle d'administration d'une ressource. Une ressource sans ensemble de règles d'administration héritera de toutes les règles de sa ressource parente. Si vous supprimez la règle d'administration sur la ressource d'organisation, la règle en vigueur sera le comportement par défaut de la contrainte.
Les étapes suivantes décrivent comment supprimer une règle d'administration sur une organisation.
Supprimez la règle sur la ressource d'organisation à l'aide de
delete
. commande:gcloud org-policies delete \ LIST_CONSTRAINT \ --organization=ORGANIZATION_ID
Remplacer ORGANIZATION_ID par l'identifiant unique de la ressource Organisation. La sortie de la commande sera:
Deleted policy [organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT]. {}
Obtenez la règle en vigueur sur l'organisation pour valider qu'elle n'est pas appliquée :
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Le résultat de la commande sera le suivant :
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
Les étapes suivantes décrivent comment supprimer une règle d'administration sur un projet :
Supprimez la règle sur un projet à l'aide de la commande
delete
:gcloud org-policies delete \ LIST_CONSTRAINT \ --project=PROJECT_ID
Où
PROJECT_ID
est l'identifiant unique de votre projet. Le résultat de la commande sera le suivant :Deleted policy [projects/PROJECT_ID/policies/LIST_CONSTRAINT]. {}
Obtenez la règle en vigueur sur le projet pour valider qu'elle n'est pas appliquée :
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande sera le suivant :
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
L'application complète des modifications de règles d'administration peut prendre jusqu'à 15 minutes.
Utiliser des contraintes booléennes dans la règle d'administration
Configurer l'application sur la ressource Organisation
Vous pouvez définir une règle d'administration sur votre ressource Organisation pour appliquer une contrainte booléenne. Le processus suivant explique comment définir une règle d'administration à l'aide de la Google Cloud CLI. Pour obtenir des instructions sur l'affichage et la définition des règles d'administration à l'aide de la console Google Cloud, consultez la page Créer et gérer des règles.
Obtenez la règle actuelle pour la ressource Organisation à l'aide de la commande
describe
:gcloud org-policies describe \ BOOLEAN_CONSTRAINT \ --organization=ORGANIZATION_ID
Remplacer
ORGANIZATION_ID
par l'identifiant unique de la ressource Organisation. Vous pouvez également appliquer la règle d'administration à un dossier ou à un projet les options--folder
ou--project
, et ID de dossier et ID du projet, respectivement.Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Définissez la règle sur le projet à l'aide de la commande
set-policy
.Créez un fichier temporaire
/tmp/policy.yaml
pour stocker la règle :name: organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT spec: rules: - enforce: true
Exécutez la commande
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Affichez la règle actuellement en vigueur à l'aide de la commande
describe --effective
:gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Le résultat de la commande sera le suivant :
name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: true
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Remplacer la règle d'administration pour un projet
Pour remplacer la règle d'administration d'un projet, définissez une règle qui désactive l'application de la contrainte booléenne à toutes les ressources de la hiérarchie située en dessous du projet.
Obtenez la règle en vigueur sur la ressource pour montrer qu'elle est vide.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT \ --project=PROJECT_ID
Où
PROJECT_ID
est l'identifiant unique de votre projet.Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Obtenez la règle en vigueur sur le projet, qui confirme que la contrainte est appliquée à ce projet.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande sera le suivant :
name: projects/PROJECT_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: true
Définissez la règle sur le projet à l'aide de la commande
set-policy
.Créez un fichier temporaire
/tmp/policy.yaml
pour stocker la règle :name: projects/PROJECT_ID/policies/BOOLEAN_CONSTRAINT spec: rules: - enforce: false
Exécutez la commande
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Obtenez la règle en vigueur pour montrer qu'elle n'est plus appliquée au projet.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
Le résultat de la commande sera le suivant :
name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: false
L'application complète des modifications apportées aux règles d'administration peut prendre jusqu'à 15 minutes.
Supprimer une règle d'administration
Vous pouvez supprimer une règle d'administration d'une ressource. Une ressource sans ensemble de règles d'administration héritera de toutes les règles de sa ressource parente. Si vous supprimez la règle d'administration sur la ressource d'organisation, la règle en vigueur sera le comportement par défaut des contraintes.
Les étapes suivantes décrivent comment supprimer une règle d'administration sur une organisation et un projet.
Supprimez la règle de la ressource Organisation à l'aide de la commande
delete
:gcloud org-policies delete \ BOOLEAN_CONSTRAINT \ --organization=ORGANIZATION_ID
Remplacer
ORGANIZATION_ID
avec un identifiant unique pour la ressource Organisation. Le résultat de la commande sera le suivant :Deleted policy [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT]. {}
Obtenez la règle en vigueur sur l'organisation pour valider qu'elle n'est pas appliquée :
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Supprimez la règle d'administration du projet à l'aide de la commande
delete
:gcloud org-policies delete \ BOOLEAN_CONSTRAINT \ --project=PROJECT_ID
Le résultat de la commande sera le suivant :
Deleted policy [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT]. {}
Obtenez la règle en vigueur sur le projet pour valider qu'elle n'est pas appliquée :
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
Remplacer
PROJECT_ID
par l'identifiant unique de votre projet.Si aucune règle n'est définie, une erreur
NOT_FOUND
est renvoyée :ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
L'application complète des modifications de règles d'administration peut prendre jusqu'à 15 minutes.