Résoudre les problèmes liés aux stratégies d'autorisation et de refus

Il existe plusieurs méthodes vous permettant de résoudre les problèmes liés aux stratégies d'autorisation et de refus IAM (Identity and Access Management).

Utiliser Policy Troubleshooter

Si vous devez résoudre des problèmes d'accès pour un compte principal spécifique, utilisez l'outil Policy Troubleshooter pour IAM.

Policy Troubleshooter pour IAM vous aide à comprendre pourquoi un utilisateur a accès à une ressource ou ne dispose pas de l'autorisation d'appeler une API. À l'aide d'une adresse e-mail, d'une ressource et d'une autorisation, Policy Troubleshooter examine toutes les stratégies d'autorisation et de refus qui s'appliquent à la ressource. À partir de ces stratégies, il vous indique ensuite si le compte principal dispose de l'autorisation. Il répertorie également les liaisons de rôle et les règles de refus contenues dans les stratégies, et explique leur impact sur l'accès du compte principal.

Pour apprendre à utiliser Policy Troubleshooter pour résoudre les problèmes liés aux stratégies d'autorisation et de refus IAM, consultez la page Résoudre les problèmes d'accès.

Afficher toutes les stratégies d'autorisation et de refus qui s'appliquent à une ressource

Dans Google Cloud, les stratégies IAM suivantes affectent l'accès à une ressource :

  • La stratégie d'autorisation de la ressource
  • Les règles de refus de la ressource, le cas échéant
  • Les stratégies d'autorisation du projet, du dossier et de l'organisation parent de la ressource, le cas échéant
  • Les stratégies de refus du projet, du dossier et de l'organisation parent de la ressource, le cas échéant

Les stratégies d'autorisation et de refus des projets, dossiers et organisations parents affectent l'accès à une ressource en raison de l'héritage des stratégies. Lorsque vous associez une stratégie d'autorisation ou de refus à un projet, un dossier ou une organisation, cette stratégie s'applique également à toutes les ressources de ce projet, ce dossier ou cette organisation.

Par exemple, si une stratégie de refus pour une organisation indique qu'un compte principal ne peut pas utiliser une autorisation spécifique, le compte principal ne peut utiliser cette autorisation sur aucune ressource de l'organisation. Cette règle s'applique même si les dossiers et les projets de cette organisation sont associés à des stratégies de refus plus permissives ou à des stratégies d'autorisation qui accordent cette autorisation au compte principal.

De même, si une stratégie d'autorisation pour un projet accorde une autorisation spécifique à un compte principal, celui-ci dispose de cette autorisation pour n'importe quelle ressource du projet, à condition que cette autorisation ne lui soit pas refusée.

L'union de toutes ces stratégies est appelée stratégie applicable ou stratégie en vigueur.

Dans Google Cloud, vous pouvez obtenir la liste de toutes les stratégies IAM qui affectent l'accès à un projet à l'aide de la commande gcloud beta projects get-ancestors-iam-policy avec l'option --include-deny. Utilisées conjointement, ces stratégies constituent la stratégie applicable au projet. Vous pouvez examiner chaque stratégie pour voir comment elle affecte l'accès du compte principal.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.

Exécutez la commande gcloud beta projects get-ancestors-iam-policy :

Linux, macOS ou Cloud Shell

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (PowerShell)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (cmd.exe)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

La réponse contient les règles d'autorisation et de refus du projet. Tous les dossiers ancêtres du projet et à l'organisation. L'exemple suivant présente des règles d'autorisation pour l'organisation 1234567890123 et le projet my-project, ainsi qu'une règle de refus pour le projet my-project:

[
  {
    "id": "1234567890123",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/iam.denyAdmin"
        },
        {
          "members": [
            "user:raha@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwXW6Eab7TI=",
      "version": 1
    },
    "type": "organization"
  },
  {
    "id": "my-project",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwXXjOM7L6M=",
      "type": "project"
    }
  },
  {
    "id": "my-project",
    "policy": {
      "createTime": "2022-02-14T21:46:35.865279Z",
      "displayName": "My deny policy",
      "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=",
      "kind": "DenyPolicy",
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy",
      "rules": [
        {
          "denyRule": {
            "deniedPermissions": [
              "iam.googleapis.com/serviceAccounts.create"
            ],
            "deniedPrincipals": [
              "principal://goog/subject/raha@example.com"
            ]
          },
          "description": "Prevent service account creation"
        }
      ],
      "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05",
      "updateTime": "2022-02-14T21:46:35.865279Z"
    },
    "type": "project"
  }
]

Dans cet exemple, l'utilisateur raha@example.com se voit attribuer le rôle d'administrateur de compte de service (roles/iam.serviceAccountAdmin ) sur l'organisation, mais le projet dispose d'une règle de refus qui empêche raha@example.com D'utiliser l'autorisation iam.googleapis.com/serviceAccounts.create. Par conséquent, si raha@example.com tente de créer un compte de service dans le projet my-project, la requête est refusée.

Dans certains cas, vous devrez peut-être afficher uniquement la stratégie d'autorisation applicable pour une ressource, par exemple si votre organisation n'utilise pas de stratégies de refus. Dans ce cas, vous pouvez utiliser les méthodes suivantes pour afficher la stratégie d'autorisation applicable :

  • Afficher la stratégie IAM de la ressource dans la console Google Cloud La console Google Cloud affiche automatiquement la stratégie applicable de chaque ressource.

    Pour savoir comment afficher la stratégie IAM d'une ressource dans la console Google Cloud, consultez la section Afficher l'accès actuel.

  • Utilisez l'API Cloud Asset pour obtenir la stratégie applicable de la ressource. Pour en savoir plus, consultez la page Afficher des stratégies IAM applicables.

Si vous devez localiser une liaison de rôle spécifique dans une stratégie d'autorisation, vous pouvez effectuer une recherche dans la stratégie d'autorisation.

L'inventaire des éléments cloud vous permet de rechercher des stratégies IAM pour des liaisons de rôles correspondant aux paramètres spécifiés. Vous pouvez utiliser divers paramètres de recherche, y compris les suivants :

  • Type de ressource
  • Type de compte principal
  • Rôle
  • Projet
  • Dossier
  • Organisation

Pour en savoir plus, consultez la page Rechercher des stratégies d'autorisation IAM.