Refuser l'accès aux ressources

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 v2beta.

Avant de commencer

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 de 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

  • 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 v2beta, 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 v2beta : 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

cloudresourcemanager.googleapis.com/organizations/ORG_ID
Remplacez ORG_ID par l'ID numérique de l'organisation. Pour l'API REST, encodez l'intégralité de la valeur au format URL.

Exemple pour la CLI gcloud :
cloudresourcemanager.googleapis.com/organizations/123456789012

Exemple pour l'API REST :
cloudresourcemanager.googleapis.com%2Forganizations%2F123456789012

Dossier

cloudresourcemanager.googleapis.com/folders/FOLDER_ID
Remplacez FOLDER_ID par l'ID numérique du dossier. Pour l'API REST, encodez l'intégralité de la valeur au format URL.

Exemple pour la CLI gcloud :
cloudresourcemanager.googleapis.com/folders/987654321098

Exemple pour l'API REST :
cloudresourcemanager.googleapis.com%2Ffolders%2F987654321098

Projet

cloudresourcemanager.googleapis.com/projects/PROJECT_ID
Remplacez PROJECT_ID par l'ID alphanumérique ou numérique du projet. Pour l'API REST, encodez l'intégralité de la valeur au format URL.

Exemple pour la CLI gcloud :
cloudresourcemanager.googleapis.com/projects/my-project

Exemple pour l'API REST :
cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project

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, en fonction des tags de la ressource.

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 :

    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 beta iam policies create :

gcloud beta 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 beta iam policies create my-deny-policy \
    --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \
    --kind=denypolicies \
    --policy-file=policy.json

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 :

    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/v2beta/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.v2beta.PolicyOperationMetadata",
    "createTime": "2021-09-28T19:06:12.455151Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2beta.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": "2021-09-28T19:06:12.455151Z",
    "updateTime": "2021-09-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.

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 beta iam policies list :

gcloud beta 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 beta 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/v2beta/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": "2021-09-28T19:06:12.455151Z",
      "updateTime": "2021-09-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": "2021-10-05T19:21:53.595455Z",
      "updateTime": "2021-10-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": "2021-10-05T19:22:26.770543Z",
      "updateTime": "2021-10-05T19:22:26.770543Z"
    }
  ]
}

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 beta iam policies get :

gcloud beta 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 beta 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/v2beta/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": "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"
        ]
      }
    }
  ]
}

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 :

  1. Lisez la version actuelle de la stratégie.
  2. Modifiez les informations de la stratégie si nécessaire.
  3. É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 beta iam policies get :

gcloud beta 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 beta 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/v2beta/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": "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"
        ]
      }
    }
  ]
}

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 beta iam policies update :

gcloud beta 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 beta 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": "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"
            ]
          }
        }
      ]
    }

Méthode HTTP et URL :

PUT https://iam.googleapis.com/v2beta/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.v2alpha.PolicyOperationMetadata",
    "createTime": "2021-10-05T22:26:21.968687Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2alpha.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": "2021-10-05T19:22:26.770543Z",
    "updateTime": "2021-10-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.

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 beta iam policies delete :

gcloud beta 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 beta 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 valeur etag actuelle de la stratégie.

Méthode HTTP et URL :

DELETE https://iam.googleapis.com/v2beta/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.v2beta.PolicyOperationMetadata",
    "createTime": "2021-10-05T19:45:00.133311Z"
  },
  "response": {
    "@type": "type.googleapis.com/google.iam.v2beta.Policy",
    "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy",
    "kind": "DenyPolicy",
    "displayName": "My deny policy.",
    "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=",
    "createTime": "2021-09-28T19:06:12.455151Z",
    "updateTime": "2021-10-05T19:45:00.133311Z",
    "deleteTime": "2021-10-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.

Vérifier l'état d'une opération de longue durée

Lorsque vous utilisez l'API REST, toute méthode modifiant une stratégie de refus renvoie une opération de longue durée, ou LRO (Long-Running Operation). 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. Vous pouvez interroger l'opération de longue durée pour surveiller son état.

Pour interroger une opération de longue durée, commencez par obtenir son état actuel :

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/v2beta/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.

Étape suivante