Cette page explique comment refuser l'accès aux comptes principaux en les empêchant d'utiliser des autorisations IAM (Identity and Access Management) spécifiques.
Dans IAM, vous refusez les accès avec des stratégies de refus. Chaque stratégie de refus est associée à une organisation, un dossier ou un projet Google Cloud. Une stratégie de refus contient des règles de refus, qui identifient les comptes principaux et liste les autorisations qu'ils ne peuvent pas utiliser.
Les stratégies de refus sont distinctes des stratégies d'autorisation, également appelées stratégies IAM. Une stratégie d'autorisation fournit un accès aux ressources en attribuant des rôles IAM aux comptes principaux.
Vous pouvez gérer les règles de refus avec la CLI Google Cloud ou l'API REST IAM v2
.
Avant de commencer
Activez IAM API.
Consultez la présentation des stratégies de refus.
Rôles requis
Pour obtenir les autorisations nécessaires pour gérer les stratégies de refus, demandez à votre administrateur de vous accorder les rôles IAM suivants sur l'organisation :
- Pour afficher les règles de refus : Examinateur des refus (
roles/iam.denyReviewer
) - Pour afficher, créer, mettre à jour et supprimer des règles de refus : Administrateur des refus (
roles/iam.denyAdmin
)
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Ces rôles prédéfinis contiennent les autorisations requises pour gérer les stratégies de refus. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour gérer les règles de refus :
-
Pour afficher les règles de refus :
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
Pour créer, mettre à jour et supprimer des règles de refus :
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Identifier les autorisations à refuser
Avant de créer une stratégie de refus, vous devez choisir les autorisations que vous souhaitez refuser et les comptes principaux qui doivent se voir refuser ces autorisations.
Vous pouvez refuser un sous-ensemble de toutes les autorisations IAM. Pour obtenir la liste des autorisations que vous pouvez refuser, consultez la section Autorisations compatibles avec les stratégies de refus.
Vous gérez les stratégies de refus avec l'API REST v2
, qui nécessite un format spécial pour les noms d'autorisations. Par exemple, l'autorisation de créer un rôle personnalisé IAM est nommée comme suit :
- API
v1
:iam.roles.create
- API
v2
:iam.googleapis.com/roles.create
Identifier le point de rattachement
Chaque règle de refus est associée à une organisation, un dossier ou un projet. Pour utiliser des règles de refus, vous avez besoin d'un identifiant pour la ressource à laquelle la règle de refus est associée, appelée point de rattachement. Cet identifiant utilise l'un des formats du tableau suivant :
Format des points de rattachement | |
---|---|
Organisation |
Exemple pour la CLI gcloud :
Exemple pour l'API REST : |
Dossier |
Exemple pour la CLI gcloud :
Exemple pour l'API REST : |
Projet |
Exemple pour la CLI gcloud :
Exemple pour l'API REST : |
Créer une stratégie de refus
Vous pouvez ajouter des stratégies de refus aux organisations, aux dossiers et aux projets. Chacune de ces ressources peut comporter jusqu'à cinq stratégies de refus.
Les stratégies de refus contiennent des règles de refus qui spécifient les éléments suivants :
- Les autorisations à refuser.
- Les comptes principaux qui se voient refuser ces autorisations.
Facultatif : les comptes principaux exemptés du refus d'autorisations.
Par exemple, vous pouvez refuser une autorisation à un groupe, mais exclure des utilisateurs spécifiques appartenant à ce groupe.
Facultatif : une expression de condition qui spécifie quand les comptes principaux ne peuvent pas utiliser les autorisations. Dans les règles de refus, les expressions de condition ne peuvent utiliser que des fonctions pour les tags de ressources. Les autres fonctions et opérateurs ne sont pas acceptés.
Les stratégies de refus sont héritées via la hiérarchie des ressources. Par exemple, si vous refusez une autorisation au niveau de l'organisation, cette autorisation sera également refusée pour les dossiers et les projets de cette organisation, ainsi que pour les ressources spécifiques aux services de chaque projet.
Les stratégies de refus remplacent les stratégies d'autorisation. Si un compte principal dispose d'un rôle contenant une autorisation spécifique, mais qu'une stratégie de refus indique que le compte principal ne peut pas utiliser cette autorisation, alors il ne peut pas l'utiliser.
gcloud
Pour créer une stratégie de refus pour une ressource, commencez par créer un fichier JSON contenant la stratégie. Une stratégie de refus utilise le format suivant :
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Indiquez les valeurs suivantes :
POLICY_NAME
: le nom à afficher pour la stratégie de refus.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: les règles de refus de la stratégie. Chaque règle de refus peut contenir les champs suivants :-
deniedPermissions
: une liste des autorisations que les comptes principaux spécifiés ne peuvent pas utiliser. Les autorisations doivent être compatibles avec les stratégies de refus. -
deniedPrincipals
: une liste des comptes principaux qui ne peuvent pas utiliser les autorisations spécifiées. Utilisez le format APIv2
pour les identifiants des comptes principaux. -
exceptionPrincipals
: facultatif. Une liste de comptes principaux pouvant utiliser les autorisations spécifiées, même si ces comptes principaux sont inclus dansdeniedPrincipals
. Par exemple, vous pouvez utiliser ce champ afin de créer une exception pour des utilisateurs spécifiques faisant partie d'un groupe refusé. Utilisez le format APIv2
pour les identifiants des comptes principaux. -
denialCondition
: facultatif. Une expression de condition qui spécifie quand les comptes principaux ne peuvent pas utiliser les autorisations. Elle contient les champs suivants :-
expression
: une expression de condition qui utilise la syntaxe CEL (Common Expression Language). L'expression doit utiliser les fonctions CEL pour évaluer les tags des ressources. Les autres fonctions et opérateurs ne sont pas compatibles. -
title
: facultatif. Un bref résumé de l'objectif de la condition. -
description
: facultatif. Une description plus longue de la condition.
-
Pour obtenir des exemples de règles de refus, consultez la section Cas d'utilisation courants.
-
Par exemple, la stratégie de refus suivante contient une règle de refus, qui refuse une autorisation pour l'utilisateur lucian@example.com
:
{
"displayName": "My deny policy.",
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principal://goog/subject/lucian@example.com"
],
"deniedPermissions": [
"iam.googleapis.com/roles.create"
]
}
}
]
}
Exécutez ensuite la commande gcloud iam policies create
:
gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Indiquez les valeurs suivantes :
-
POLICY_ID
: l'identifiant de la stratégie de refus. -
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. -
POLICY_FILE
: le chemin d'accès au fichier JSON contenant la stratégie de refus.
Par défaut, si cette commande aboutit, elle n'affiche aucun résultat. Pour afficher une réponse détaillée, ajoutez l'option --format=json
à la commande.
Par exemple, la commande suivante crée une stratégie de refus nommée my-deny-policy
pour le projet my-project
, à l'aide d'un fichier nommé policy.json
:
gcloud iam policies create my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--policy-file=policy.json
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.
REST
La méthode policies.createPolicy
crée une stratégie de refus pour une ressource.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. POLICY_ID
: un identifiant pour la stratégie de refus.POLICY_NAME
: le nom à afficher pour la stratégie de refus.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: les règles de refus de la stratégie. Chaque règle de refus peut contenir les champs suivants :-
deniedPermissions
: une liste des autorisations que les comptes principaux spécifiés ne peuvent pas utiliser. Les autorisations doivent être compatibles avec les stratégies de refus. -
deniedPrincipals
: une liste des comptes principaux qui ne peuvent pas utiliser les autorisations spécifiées. Utilisez le format APIv2
pour les identifiants des comptes principaux. -
exceptionPrincipals
: facultatif. Une liste de comptes principaux pouvant utiliser les autorisations spécifiées, même si ces comptes principaux sont inclus dansdeniedPrincipals
. Par exemple, vous pouvez utiliser ce champ afin de créer une exception pour des utilisateurs spécifiques faisant partie d'un groupe refusé. Utilisez le format APIv2
pour les identifiants des comptes principaux. -
denialCondition
: facultatif. Une expression de condition qui spécifie quand les comptes principaux ne peuvent pas utiliser les autorisations. Elle contient les champs suivants :-
expression
: une expression de condition qui utilise la syntaxe CEL (Common Expression Language). L'expression doit utiliser les fonctions CEL pour évaluer les tags des ressources. Les autres fonctions et opérateurs ne sont pas compatibles. -
title
: facultatif. Un bref résumé de l'objectif de la condition. -
description
: facultatif. Une description plus longue de la condition.
-
Pour obtenir des exemples de règles de refus, consultez la section Cas d'utilisation courants.
-
Méthode HTTP et URL :
POST https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID
Corps JSON de la requête :
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2022-06-28T19:06:12.455151Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
La réponse identifie une opération de longue durée. Vous pouvez surveiller l'état de l'opération de longue durée pour savoir quand elle est terminée. Pour plus de détails, consultez la section Vérifier l'état d'une opération de longue durée sur cette page.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Lister les stratégies de refus
Une ressource peut avoir jusqu'à cinq stratégies de refus. Vous pouvez lister toutes les stratégies de refus associées à une ressource, puis afficher chaque stratégie de refus pour voir les règles de refus de chaque stratégie.
gcloud
Pour lister les stratégies de refus attribuées à une ressource, exécutez la commande gcloud iam policies list
:
gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Indiquez la valeur suivante :
-
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page.
Par exemple, la commande suivante liste les stratégies de refus associées à une organisation dont l'ID numérique est 123456789012
:
gcloud iam policies list \
--attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \
--kind=denypolicies \
--format=json
REST
La méthode policies.listPolicies
liste les stratégies de refus d'une ressource.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page.
Méthode HTTP et URL :
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "policies": [ { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2", "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab", "kind": "DenyPolicy", "displayName": "My second deny policy.", "createTime": "2022-06-05T19:21:53.595455Z", "updateTime": "2022-06-05T19:21:53.595455Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3", "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0", "kind": "DenyPolicy", "displayName": "My third deny policy.", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z" } ] }
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Afficher une stratégie de refus
Vous pouvez afficher une stratégie de refus pour voir les règles de refus qu'elle contient, y compris les autorisations refusées et les comptes principaux qui ne peuvent pas utiliser ces autorisations.
gcloud
Pour obtenir la stratégie de refus pour une ressource, exécutez la commande gcloud iam policies get
:
gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Indiquez les valeurs suivantes :
-
POLICY_ID
: l'identifiant de la stratégie de refus. -
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page.
Par exemple, la commande suivante permet d'obtenir la stratégie de refus nommée my-deny-policy
pour le projet my-project
et l'enregistre dans un fichier nommé policy.json
:
gcloud iam policies get my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--format=json \
> ./policy.json
REST
La méthode policies.get
permet d'obtenir une stratégie de refus pour une ressource.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. POLICY_ID
: un identifiant pour la stratégie de refus.
Méthode HTTP et URL :
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Mettre à jour une stratégie de refus
Après avoir créé une stratégie de refus, vous pouvez mettre à jour les règles de refus qu'elle contient, ainsi que son nom à afficher.
Pour mettre à jour une stratégie de refus, utilisez le modèle lecture-modification-écriture :
- Lisez la version actuelle de la stratégie.
- Modifiez les informations de la stratégie si nécessaire.
- Écrivez la stratégie mise à jour.
Lire la stratégie de refus
gcloud
Pour obtenir la stratégie de refus pour une ressource, exécutez la commande gcloud iam policies get
:
gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Indiquez les valeurs suivantes :
-
POLICY_ID
: l'identifiant de la stratégie de refus. -
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page.
Par exemple, la commande suivante permet d'obtenir la stratégie de refus nommée my-deny-policy
pour le projet my-project
et l'enregistre dans un fichier nommé policy.json
:
gcloud iam policies get my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--format=json \
> ./policy.json
REST
La méthode policies.get
permet d'obtenir une stratégie de refus pour une ressource.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. POLICY_ID
: un identifiant pour la stratégie de refus.
Méthode HTTP et URL :
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Modifier la stratégie de refus
Pour modifier la stratégie de refus, vous devez modifier la copie de la stratégie que vous avez lue précédemment à partir d'IAM. Vous pouvez mettre à jour le nom à afficher ou ajouter, modifier ou supprimer des règles de refus. Les modifications ne prendront effet qu'après avoir écrit la stratégie mise à jour.
Par exemple, vous pouvez ajouter une autorisation à une règle de refus existante :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2021-10-05T19:22:26.770543Z", "updateTime": "2021-10-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Écrire la stratégie de refus mise à jour
Après avoir modifié la stratégie de refus localement, vous devez écrire la stratégie de refus mise à jour dans IAM.
Chaque stratégie de refus contient un champ etag
qui identifie la version de la stratégie.
Le etag
change chaque fois que vous mettez à jour la stratégie. Lorsque vous écrivez la stratégie mise à jour, le etag
de votre requête doit correspondre au etag
actuel stocké dans IAM. Si les valeurs ne correspondent pas, la requête échoue. Cette fonctionnalité permet d'éviter que les modifications simultanées ne s'écrasent les unes les autres.
gcloud
Pour mettre à jour la stratégie de refus pour une ressource, exécutez la commande gcloud iam policies update
:
gcloud iam policies update POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Indiquez les valeurs suivantes :
-
POLICY_ID
: l'identifiant de la stratégie de refus. -
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. -
POLICY_FILE
: le chemin d'accès au fichier JSON contenant la stratégie de refus.
Par défaut, si cette commande aboutit, elle n'affiche aucun résultat. Pour afficher une réponse détaillée, ajoutez l'option --format=json
à la commande.
Par exemple, la commande suivante met à jour une stratégie de refus nommée my-deny-policy
pour le projet my-project
, à l'aide d'un fichier nommé policy.json
:
gcloud iam policies update my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies \
--policy-file=policy.json
REST
La méthode policies.update
met à jour une stratégie de refus.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. POLICY_ID
: un identifiant pour la stratégie de refus.-
POLICY
: la stratégie de refus mise à jour.Par exemple, pour ajouter une autorisation à la stratégie présentée à l'étape précédente, remplacez
POLICY
par ce qui suit :{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Méthode HTTP et URL :
PUT https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Corps JSON de la requête :
POLICY
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T22:26:21.968687Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T22:26:21.968687Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] } }
La réponse identifie une opération de longue durée. Vous pouvez surveiller l'état de l'opération de longue durée pour savoir quand elle est terminée. Pour plus de détails, consultez la section Vérifier l'état d'une opération de longue durée sur cette page.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Supprimer une stratégie de refus
Si vous ne souhaitez plus appliquer les règles d'une stratégie de refus, vous pouvez supprimer la stratégie de refus.
Vous pouvez éventuellement spécifier le etag
pour la version de stratégie que vous supprimez. Si vous spécifiez le etag
, il doit correspondre au etag
actuel stocké par IAM. Si les valeurs ne correspondent pas, la requête échoue. Vous pouvez utiliser cette fonctionnalité pour vous assurer de supprimer la stratégie souhaitée, plutôt qu'une version mise à jour de cette stratégie.
Si vous omettez le etag
dans la requête, IAM supprime la stratégie sans condition.
gcloud
Pour supprimer une stratégie de refus d'une ressource, exécutez la commande gcloud iam policies delete
:
gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
Indiquez les valeurs suivantes :
-
POLICY_ID
: l'identifiant de la stratégie de refus. -
ATTACHMENT_POINT
: identifiant de la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page.
Vous pouvez éventuellement ajouter l'option --etag=ETAG
. Remplacez ETAG
par la valeur etag
actuelle pour la stratégie de refus.
Par défaut, si cette commande aboutit, elle n'affiche aucun résultat. Pour afficher une réponse détaillée, ajoutez l'option --format=json
à la commande.
Par exemple, la commande suivante supprime une stratégie de refus nommée my-deny-policy
du projet my-project
:
gcloud iam policies delete my-deny-policy \
--attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
--kind=denypolicies
REST
La méthode policies.delete
supprime une stratégie de refus d'une ressource.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. POLICY_ID
: un identifiant pour la stratégie de refus.-
ETAG
: facultatif. Un identifiant pour la version de la stratégie. Si cette valeur est présente, elle doit correspondre à la valeuretag
actuelle de la stratégie.
Méthode HTTP et URL :
DELETE https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T19:45:00.133311Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-07-05T19:45:00.133311Z", "deleteTime": "2022-07-05T19:45:00.133311Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
La réponse identifie une opération de longue durée. Vous pouvez surveiller l'état de l'opération de longue durée pour savoir quand elle est terminée. Pour plus de détails, consultez la section Vérifier l'état d'une opération de longue durée sur cette page.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Go.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Java.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Node.js.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour IAM, consultez la page Bibliothèques clientes IAM. Pour en savoir plus, consultez la documentation de référence de l'API Cloud IAM Python.
Pour vous authentifier auprès d'IAM, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour un environnement de développement local.
Vérifier l'état d'une opération de longue durée
Lorsque vous utilisez l'API REST ou les bibliothèques clientes, toute méthode modifiant une stratégie de refus renvoie une opération de longue durée, ou LRO. L'opération de longue durée suit l'état de la requête et indique si la modification de la stratégie est terminée.
REST
La méthode policies.operations.get
renvoie l'état d'une opération de longue durée.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
-
ENCODED_ATTACHMENT_POINT
: identifiant encodé au format URL pour la ressource à laquelle la règle de refus est associée. Pour savoir comment mettre en forme cette valeur, consultez la section Identifier le point de rattachement de cette page. -
OPERATION_ID
: l'identifiant pour l'opération. Vous recevez cet identifiant dans la réponse à votre requête d'origine, dans le nom de l'opération. Utilisez la valeur hexadécimale à la fin du nom de l'opération. Par exemple,89cb3e508bf1ff01
.
Méthode HTTP et URL :
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "done": true }
Si le champ done
de l'opération n'est pas présent, continuez à surveiller son état en obtenant l'opération de façon répétée. Utilisez un intervalle exponentiel tronqué entre les tentatives pour introduire un délai entre chaque requête. Lorsque le champ done
est défini sur true
, l'opération est terminée et vous pouvez cesser de l'obtenir.
Go
Les exemples de code de cette page montrent comment attendre la fin d'une opération de longue durée, puis accéder à son résultat.
Java
Les exemples de code de cette page montrent comment attendre la fin d'une opération de longue durée, puis accéder à son résultat.
Node.js
Les exemples de code de cette page montrent comment attendre la fin d'une opération de longue durée, puis accéder à son résultat.
Python
Les exemples de code de cette page montrent comment attendre la fin d'une opération de longue durée, puis accéder à son résultat.
Étapes suivantes
- Identifiez les autorisations compatibles avec les stratégies de refus.
- Obtenez le format des identifiants des comptes principaux dans les stratégies de refus.
- Découvrez comment résoudre les problèmes d'accès avec des stratégies de refus.
- Apprenez-en plus sur les refus d'accès aux comptes principaux.