Résoudre les problèmes d'accès

Policy Troubleshooter permet de comprendre plus facilement pourquoi un utilisateur a accès à une ressource ou ne dispose pas de l'autorisation d'appeler une API. À l'aide d'un e-mail, d'une ressource et d'une autorisation, Policy Troubleshooter examine toutes les stratégies IAM (Identity and Access Management) qui s'appliquent à la ressource. Il indique ensuite si le membre dispose de l'autorisation adéquate sur cette ressource et, le cas échéant, les stratégies qui s'y appliquent.

Vous pouvez accéder à Policy Troubleshooter à l'aide de Cloud Console, de l'outil de ligne de commande gcloud ou de l'API REST. Pour les requêtes simples, Cloud Console est généralement plus rapide. Pour les scénarios plus complexes, envisagez plutôt l'outil gcloud ou l'API REST.

Autorisations requises

Policy Troubleshooter analyse l'accès d'un compte principal à une ressource en fonction des stratégies et des rôles IAM que vous êtes autorisé à consulter. Si vous ne disposez pas des autorisations nécessaires pour afficher une stratégie s'appliquant à une ressource, ou si vous n'êtes pas autorisé à afficher un rôle personnalisé, il est possible que vous ne puissiez pas déterminer si un compte principal dispose d'un accès.

Pour résoudre complètement les problèmes d'accès d'un compte principal, vous devez disposer d'un rôle qui inclut les autorisations suivantes :

  • resourcemanager.projects.getIamPolicy
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.organizations.getIamPolicy
  • iam.roles.get
  • iam.roles.list

Pour obtenir ces autorisations tout en suivant le principe du moindre privilège, demandez à votre administrateur de vous accorder le rôle Examinateur de sécurité (roles/iam.securityReviewer) au niveau de l'organisation.

Votre administrateur peut également vous attribuer un autre rôle qui inclut les autorisations requises, par exemple un rôle personnalisé ou un rôle prédéfini moins restrictif.

Résoudre les problèmes d'accès

Pour résoudre les problèmes d'accès, vous devez disposer des informations suivantes :

  • Principale : l'adresse e-mail à vérifier. L'adresse e-mail doit faire référence à un utilisateur ou un compte de service. Les autres types de membres ne sont pas acceptés.
  • Ressource : le nom complet de la ressource. Par exemple, pour vérifier le projet my-project, saisissez //cloudresourcemanager.googleapis.com/projects/my-project. Pour les autres types de ressources, consultez les exemples de noms de ressources complets.
  • Autorisation : l'autorisation pour la vérification. Si vous utilisez Cloud Console, la liste des suggestions s'affiche au fur et à mesure de la saisie. Pour obtenir la liste complète des autorisations, consultez la documentation de référence sur les autorisations.

Console

Résoudre les problèmes d'accès

Pour résoudre les problèmes d'accès, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Policy Troubleshooter.

    Accéder à Policy Troubleshooter

  2. Saisissez une adresse e-mail, le nom de la ressource et l'autorisation à vérifier.

  3. Facultatif : pour vérifier plusieurs ressources et autorisations, sélectionnez Ajouter une autre paire et répétez l'étape précédente.

  4. Cliquez sur Vérifier l'appel d'API.

Comprendre les résultats de Policy Troubleshooter

Les résultats de Policy Troubleshooter vous indiquent si le compte principal dispose de l'autorisation spécifiée sur la ressource donnée. Il répertorie également les stratégies IAM qui s'appliquent à la ressource, ainsi que le rôle des liaisons de ces stratégies.

Par défaut, les résultats sont affichés dans l'affichage compact, qui n'affiche que les liaisons de rôle pour les rôles qui contiennent l'autorisation spécifiée. Si vous dépannez plusieurs autorisations, utilisez la liste déroulante Afficher par pour basculer entre elles.

Vous pouvez désactiver l'affichage compact en cliquant sur le bouton Affichage compact. La désactivation de l'affichage compact affiche toutes les liaisons de rôle dans les stratégies qui s'appliquent à la ressource.

La page de résultats contient les informations suivantes :

  • Résumé des accès : bref résumé de l'accès du compte principal. Ces informations vous permettent de vérifier si le compte principal dispose de l'autorisation sur la ressource. Dans l'exemple suivant, my-user@example.com dispose de l'autorisation logging.logs.view sur my-project :

  • Stratégies et liaisons pertinentes de rôles : liste des stratégies IAM qui s'appliquent à la ressource donnée et des liaisons de rôles dans chaque stratégie. À côté de chaque liaison de rôle est une icône indiquant si celle-ci accorde l'autorisation spécifiée au compte principal. Cliquez sur la liaison de rôle pour afficher son texte brut.

    Dans l'exemple suivant, la liaison de rôle de la visionneuse de journaux accorde l'autorisation :

  • Texte brut des liaisons de rôle pertinentes : texte brut de chaque liaison de rôle dans la liste des liaisons de rôle pertinentes. Pour en savoir plus sur la structure des liaisons de rôle, consultez la page Comprendre les stratégies.

    Dans chaque liaison de rôle, les lignes sont mises en surbrillance comme suit :

    • Vert : les lignes sont mises en surbrillance en vert si elles contiennent un rôle qui inclut l'autorisation spécifiée, si elles font référence au compte principal spécifié ou si elles font référence à un groupe contenant le compte principal spécifié.
    • Rouge : les lignes sont surlignées en rouge si elles contiennent un autre rôle, font référence à un autre compte principal ou font référence à un groupe qui ne contient pas le compte principal spécifié.
    • Jaune : les lignes sont surlignées en jaune si elles contiennent un rôle dont vous ne disposez pas des autorisations d'affichage ou un groupe dont vous ne disposez pas des autorisations nécessaires.

gcloud

Tout d'abord, assurez-vous que la configuration de votre environnement est compatible avec Policy Troubleshooter.

Activez l'API Policy Troubleshooter :

gcloud services enable policytroubleshooter.googleapis.com --project=project-id

Ensuite, définissez votre projet :

gcloud config set project project-id

Une fois la configuration terminée, vous pouvez utiliser Policy Troubleshooter pour vérifier si un utilisateur dispose d'une autorisation sur une ressource. Exécutez la commande suivante :

gcloud policy-troubleshoot iam resource --principal-email=email \
    --permission=permission

Par exemple, la commande suivante vérifie si foo@example.com dispose de l'autorisation resourcemanager.projects.getIamPolicy sur le projet my- project.

gcloud policy-troubleshoot iam //cloudresourcemanager.googleapis.com/projects/my-project \
    --permission=resourcemanager.projects.getIamPolicy --principal-email=foo@example.com

La sortie s'affiche au format YAML, indiquant si l'utilisateur dispose de l'autorisation et pourquoi. Voici un exemple :

access: GRANTED
explainedPolicies:
- access: GRANTED
  bindingExplanations:
  - access: NOT_GRANTED
    memberships:
      serviceAccount:service-123@compute-system.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
    role: roles/compute.serviceAgent
    rolePermission: ROLE_PERMISSION_NOT_INCLUDED
  - access: GRANTED
    memberships:
      serviceAccount:service@my-project.iam.gserviceaccount.com: MEMBERSHIP_NOT_INCLUDED
      user:foo@example.com: MEMBERSHIP_INCLUDED
    role: roles/owner
    rolePermission: ROLE_PERMISSION_INCLUDED
  fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project
  policy:
    bindings:
    - members:
      - serviceAccount:service-123@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:foo@my-project.iam.gserviceaccount.com
      - user:foo@example.com
      role: roles/owner
    etag: BwWAOWEaIEg=
    version: 1
- access: UNKNOWN_INFO_DENIED
policy: {}

API REST

La méthode iam.troubleshoot vous indique pourquoi un membre dispose ou non d'une autorisation IAM.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • email : adresse e-mail du membre dont vous souhaitez résoudre les problèmes d'autorisation.
  • resource : ressource pour laquelle l'autorisation est accordée.
  • permission : autorisation dont vous souhaitez résoudre les problèmes.

Méthode HTTP et URL :

POST https://policytroubleshooter.googleapis.com/v1/iam:troubleshoot

Corps JSON de la requête :

{
  "accessTuple": {
    "principal": "email",
    "fullResourceName": "resource",
    "permission": "permission"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "access": "GRANTED",
  "explainedPolicies": [
    {
      "access": "GRANTED",
      "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "policy": {
        "version": 1,
        "etag": "BwWBUZjK9YQ=",
        "bindings": [
          {
            "role": "roles/owner",
            "members": [
              "user:foo@example.com"
            ]
          }
        ]
      },
      "bindingExplanations": [
        {
          "access": "GRANTED",
          "role": "roles/owner",
          "rolePermission": "ROLE_PERMISSION_INCLUDED",
          "rolePermissionRelevance": "HIGH",
          "memberships": {
            "key": "user:foo@example.com",
            "value": {
              "membership": "MEMBERSHIP_INCLUDED",
              "relevance": "HIGH",
            }
          },
        "relevance: HIGH",
        }
      ]
    },
    {
      "access": "UNKNOWN_INFO_DENIED",
      "policy": {}
    }
  ]
}

Résoudre les problèmes liés aux membres des groupes

Pour résoudre les problèmes d'accès à une ressource donnée par un groupe Google, vous devez être autorisé à afficher ses membres.

Si vous ne disposez pas des autorisations, le groupe est surligné en jaune dans Cloud Console et un avertissement indique que vous ne savez pas si le groupe inclut le compte principal. Si vous utilisez l'outil gcloud ou l'API REST, la réponse contient UNKNOWN_INFO_DENIED ou ACCESS_TO_INFO_DENIED.

Résoudre les problèmes liés aux membres des groupes

Les super-administrateurs Google Workspace et les administrateurs de groupe ont généralement accès à l'affichage des membres du groupe. Pour permettre à un utilisateur autre que le super-administrateur ou l'administrateur de groupe de résoudre les problèmes d'accès, créez un rôle d'administrateur Google Workspace personnalisé contenant le droit groups.read (situé sous Droits pour l'API Admin) et attribuez-le à l'utilisateur. Cela lui permet d'afficher les membres de tous les groupes de votre domaine et de résoudre plus efficacement les problèmes d'accès.

Dépanner des liaisons de rôles conditionnelles

Pour résoudre les liaisons de rôles conditionnelles, Policy Troubleshooter nécessite un contexte supplémentaire sur la requête. Par exemple, pour résoudre les problèmes liés à des conditions basées sur des attributs de date/heure, Policy Troubleshooter nécessite l'heure de la requête.

Pour fournir ce contexte supplémentaire, vous pouvez résoudre directement le problème à partir de n'importe quel journal d'audit des activités d'administration ou journal d'audit des accès aux données. Chaque entrée de journal d'audit correspond à une requête adressée à une API Google Cloud ou à une action effectuée par Google Cloud de votre part. Lorsque vous résolvez des problèmes à partir d'un journal d'audit, Policy Troubleshooter obtient automatiquement des informations supplémentaires sur la requête, telles que sa date et son heure, ce qui permet à Policy Troubleshooter d'analyser les liaisons de rôles conditionnelles.

Cette fonctionnalité est disponible uniquement dans Cloud Console.

Pour résoudre les problèmes liés aux liaisons de rôles conditionnelles, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Explorateur de journaux.

    Accédez à l'explorateur de journaux.

  2. Si le titre de la page est Legacy Logs Viewer (Ancienne version de la visionneuse de journaux), cliquez sur la liste déroulante Upgrade (Mettre à niveau) et sélectionnez Upgrade to new Logs Explorer (Mettre à niveau vers le nouvel explorateur de journaux).

  3. Pour n'afficher que les journaux d'audit des activités d'administration et des accès aux données, saisissez la requête suivante dans le générateur de requêtes, puis cliquez sur Exécuter la requête :

    logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    Remplacez les valeurs suivantes :

    • RESOURCE_TYPE : type de ressource pour lequel vous souhaitez répertorier les journaux d'audit. Utilisez projects, folders ou organizations.
    • RESOURCE_ID : ID de votre ressource.
  4. Recherchez l'entrée du journal d'audit qui correspond à la requête que vous souhaitez résoudre. Pour découvrir comment rechercher des entrées de journal spécifiques à l'aide de l'explorateur de journaux, consultez la page Utiliser l'explorateur de journaux.

  5. Dans la colonne Résumé de l'entrée de journal, cliquez sur IAM, puis sur Résoudre un problème d'accès.

    Policy Troubleshooter utilise les informations de l'entrée de journal pour résoudre les problèmes d'accès puis affiche les résultats. Le contexte supplémentaire est indiqué directement sous le résumé d'accès. Pour en savoir plus sur la page de résultats de Policy Troubleshooter, consultez la section Résoudre les problèmes d'accès de la présente page.

  6. Facultatif : Pour résoudre les problèmes concernant une autre requête impliquant des liaisons de rôles conditionnelles, revenez à la page Explorateur de journaux et répétez les étapes précédentes.

Étape suivante