Policy Analyzer pour les stratégies IAM

Policy Analyzer vous permet d'identifier quels comptes principaux (par exemple, utilisateurs, comptes de service, groupes et domaines) disposent de quel accès à quelles ressources Google Cloud en fonction de vos stratégies d'autorisation IAM.

Policy Analyzer peut vous aider à répondre à des questions comme celles-ci :

  • Qui peut accéder à ce compte de service IAM ?
  • Qui peut lire les données de cet ensemble de données BigQuery contenant des informations permettant d'identifier personnellement l'utilisateur ?
  • De quels rôles et autorisations dispose le groupe dev-testers sur n'importe quelle ressource de ce projet ?
  • Quelles instances de machines virtuelles (VM) Compute Engine peuvent-être supprimées par Tal dans le projet A ?
  • Qui pourra accéder à ce bucket Cloud Storage à 19h ?

Fonctionnement de Policy Analyzer

Pour utiliser Policy Analyzer, vous devez créer une requête d'analyse, spécifier un champ d'application pour l'analyse, puis exécuter la requête.

Requêtes d'analyse

Pour utiliser Policy Analyzer, vous devez créer une requête d'analyse en spécifiant un ou plusieurs des champs suivants:

  • Comptes principaux: identités (par exemple, utilisateurs, comptes de service, groupes et domaines) dont vous souhaitez vérifier l'accès
  • Accès: les autorisations et les rôles que vous souhaitez vérifier
  • Ressources: les ressources auxquelles vous souhaitez vérifier l'accès
  • (API uniquement) Contexte de la condition: contexte (par exemple, l'heure) dans lequel vous souhaitez vérifier l'accès

En règle générale, vous spécifiez un ou deux de ces champs dans la requête d'analyse, puis vous utilisez les résultats de la requête pour obtenir plus d'informations sur les champs que vous n'avez pas spécifiés. Par exemple, si vous souhaitez savoir qui dispose d'une autorisation donnée sur une ressource donnée, vous devez spécifier l'accès et la ressource dans la requête d'analyse, mais sans spécifier le compte principal.

Pour plus d'exemples de types de requêtes que vous pouvez créer, consultez la section Types de requêtes courants.

Champ d'application de l'analyse

Pour exécuter une requête d'analyse, vous devez spécifier un champ d'application à analyser. Le champ d'application est une organisation, un dossier ou un projet auquel vous souhaitez restreindre votre analyse. Seules les stratégies d'autorisation IAM associées à la ressource utilisée comme champ d'application et à ses descendants seront analysées.

Dans l'API REST et gcloud CLI, vous spécifiez le champ d'application manuellement. Dans la console Google Cloud, le champ d'application est automatiquement déterminé en fonction du projet, du dossier ou de l'organisation que vous gérez actuellement.

Une fois que vous avez créé une requête d'analyse et spécifié le champ d'application, vous pouvez exécuter la requête pour analyser les règles dans ce champ d'application.

Résultats de la requête

Lorsque vous exécutez une requête d'analyse, Policy Analyzer signale toutes les liaisons de rôle contenant les comptes principaux, les accès et les ressources que vous avez spécifiés dans la requête. Pour chaque liaison de rôle, il indique les comptes principaux de la liaison, l'accès (rôle et autorisations) accordé par la liaison et la ressource à laquelle elle accorde l'accès.

Vous pouvez examiner ces résultats pour mieux comprendre l'accès à votre projet, dossier ou organisation. Par exemple, si vous exécutez une requête pour savoir quels comptes principaux ont accès à une ressource spécifique, vous devez les examiner dans les résultats de la requête.

Vous pouvez ajuster les informations contenues dans les résultats de votre requête en activant les options de requête.

Types de stratégies acceptés

IAM Policy Analyzer n'est compatible qu'avec les stratégies d'autorisation IAM.

Policy Analyzer n'est pas compatible avec les formes de contrôle des accès suivantes:

Les résultats de requête de Policy Analyzer ne tiennent pas compte des types de règles non compatibles. Par exemple, imaginez qu'un utilisateur dispose de l'autorisation iam.roles.get sur un projet en raison d'une règle d'autorisation, mais qu'une règle de refus l'empêche d'utiliser cette autorisation. Policy Analyzer indique qu'il dispose de l'autorisation iam.roles.get, malgré la règle de refus.

Héritage des règles

Pour prendre en compte l'héritage des règles, Policy Analyzer analyse automatiquement toutes les règles d'autorisation pertinentes dans le champ d'application spécifié, quel que soit leur emplacement dans la hiérarchie des ressources.

Par exemple, imaginez que vous essayez de savoir qui peut accéder à un compte de service IAM:

  • Si vous limitez la requête à un projet, Policy Analyzer analyse la règle d'autorisation du compte de service et la règle d'autorisation du projet.
  • Si vous limitez la requête à une organisation, Policy Analyzer analyse la règle d'autorisation du compte de service, la stratégie d'autorisation du projet auquel appartient le compte de service, les stratégies d'autorisation de tous les dossiers contenant le projet et la stratégie d'autorisation de l'organisation.

Accès conditionnel

Si une liaison de rôle comporte une condition, elle n'accorde un accès principal à un compte principal que lorsque cette condition est remplie. Policy Analyzer signale toujours les conditions associées aux liaisons de rôles pertinentes. Les liaisons de rôles pertinentes sont des liaisons de rôle qui contiennent les comptes principaux, les accès et les ressources que vous avez spécifiés dans la requête d'analyse.

Dans certains cas, Policy Analyzer peut également analyser la condition, ce qui signifie qu'il peut indiquer si elle sera remplie. Policy Analyzer peut analyser les types de conditions suivants:

Si une liaison de rôle pertinente contient une condition, Policy Analyzer effectue l'une des opérations suivantes:

  • Si Policy Analyzer peut analyser la condition, il effectue l'une des opérations suivantes:

    • Si la condition est évaluée à true, Policy Analyzer inclut la liaison de rôle dans les résultats de la requête et marque l'évaluation de la condition comme TRUE.
    • Si la condition renvoie la valeur "false", Policy Analyzer n'inclut pas le rôle dans les résultats de la requête.
  • Si Policy Analyzer ne peut pas analyser une condition pour une liaison de rôle pertinente, il inclut le rôle dans les résultats de la requête et définit l'évaluation de la condition comme CONDITIONAL.

Fraîcheur des données

Policy Analyzer utilise l'API Cloud Asset, qui optimise au mieux la fraîcheur des données. Bien que presque toutes les mises à jour de stratégies s'affichent dans Policy Analyzer en quelques minutes, il est possible que Policy Analyzer n'inclue pas les mises à jour de stratégie les plus récentes.

Types de requêtes courants

Cette section explique comment utiliser les requêtes d'analyse pour répondre aux questions courantes liées à l'accès.

Quels comptes principaux peuvent accéder à cette ressource ?

Pour déterminer quels comptes principaux peuvent accéder à une ressource, créez une requête d'analyse qui spécifie la ressource et, éventuellement, les rôles et les autorisations que vous souhaitez vérifier.

Ces requêtes peuvent vous aider à répondre à des questions telles que les suivantes:

  • Qui a accès à ce compte de service IAM ?
  • Qui est autorisé à emprunter l'identité de ce compte de service IAM ?
  • Qui sont les administrateurs de la facturation sur le projet A ?
  • (API et gcloud CLI uniquement): Qui peut mettre à jour le projet A en usurpant l'identité d'un compte de service ?

Pour savoir comment créer et envoyer ces requêtes, consultez la section Déterminer quels comptes principaux peuvent accéder à une ressource.

Quels comptes principaux disposent de ces rôles et autorisations ?

Pour déterminer quels comptes principaux disposent de certains rôles et autorisations, créez une requête d'analyse qui spécifie un compte principal, ainsi qu'un ensemble de rôles et d'autorisations à vérifier.

Ces requêtes peuvent vous aider à répondre à des questions telles que les suivantes:

  • Qui est autorisé à emprunter l'identité des comptes de service de mon organisation ?
  • Qui sont les administrateurs de la facturation dans mon organisation ?
  • Qui peut lire les données de cet ensemble de données BigQuery contenant des informations permettant d'identifier personnellement l'utilisateur ?
  • (API et gcloud CLI uniquement): Qui dans mon organisation peut lire un ensemble de données BigQuery en usurpant l'identité d'un compte de service ?

Pour apprendre à créer et à envoyer ces requêtes, consultez la section Déterminer les comptes principaux disposant de certains rôles ou autorisations.

Quels rôles et autorisations le compte principal dispose-t-il sur cette ressource ?

Pour déterminer les rôles et les autorisations dont dispose un compte principal sur une ressource spécifique, créez une requête d'analyse qui spécifie un compte principal et une ressource pour laquelle vous souhaitez vérifier les autorisations.

Ces requêtes peuvent vous aider à répondre à des questions telles que les suivantes:

  • Quels rôles et autorisations l'utilisateur Sasha possède-t-il sur cet ensemble de données BigQuery ?
  • De quels rôles et autorisations dispose le groupe dev-testers sur n'importe quelle ressource de ce projet ?
  • (API et gcloud CLI uniquement): Quels rôles et autorisations possède l'utilisateur Dana sur cet ensemble de données BigQuery si Dana usurpe l'identité d'un compte de service ?

Pour découvrir comment créer et envoyer ces requêtes, consultez la section Déterminer les accès dont dispose un compte principal sur une ressource.

À quelles ressources ce compte principal peut-il accéder ?

Pour déterminer les ressources auxquelles un compte principal spécifique peut accéder, créez une requête d'analyse spécifiant le compte principal, ainsi que les rôles et les autorisations que vous souhaitez vérifier.

Ces requêtes peuvent vous aider à répondre à des questions telles que les suivantes:

  • Quels ensembles de données BigQuery l'utilisateur Mahan est-il autorisé à lire ?
  • Quels ensembles de données BigQuery correspondent au groupe dev-testers dont le propriétaire des données est le propriétaire ?
  • Quelles VM Tal peut-elle supprimer dans le projet A ?
  • (API et gcloud CLI uniquement): Quelles VM l'utilisateur John peut-il supprimer en usurpant l'identité d'un compte de service ?

Pour découvrir comment créer et envoyer ces requêtes, consultez Déterminer les ressources auxquelles un compte principal peut accéder.

Requêtes d'analyse enregistrées

Si vous utilisez l'API REST, vous pouvez enregistrer des requêtes d'analyse afin de les réutiliser ou de les partager avec d'autres personnes. Vous pouvez exécuter une requête enregistrée comme n'importe quelle autre requête.

Pour en savoir plus sur l'enregistrement des requêtes, consultez Gérer les requêtes enregistrées.

Exporter des résultats de requête

Vous pouvez exécuter des requêtes de manière asynchrone et exporter les résultats de requête vers BigQuery ou Cloud Storage à l'aide de analyzeIamPolicyLongrunning.

Pour savoir comment exporter des résultats de requête vers BigQuery, consultez la section Écrire une analyse de stratégie dans BigQuery.

Pour savoir comment exporter des résultats de requête vers Cloud Storage, consultez la section Écrire une analyse de stratégie dans Cloud Storage.

Options de requête

Policy Analyzer propose plusieurs options qui permettent d'ajouter des détails aux résultats de votre requête.

Pour savoir comment activer ces options, consultez Activer les options.

Expansion du groupe

Si vous activez l'expansion des groupes, tous les groupes figurant dans les résultats de la requête sont développés en membres individuels. Cette extension est limitée à 1 000 membres par groupe. Si vous disposez d'autorisations de groupe suffisantes, les groupes imbriqués sont également développés. Cette option n'est effective que si vous ne spécifiez pas de compte principal dans votre requête.

Par exemple, imaginez que vous activez l'extension de groupe pour la requête "Qui dispose de l'autorisation storage.buckets.delete pour project-1 ?". Si Policy Analyzer trouve des groupes disposant de l'autorisation storage.buckets.delete, les résultats de la requête listeront non seulement l'identifiant du groupe, mais aussi tous les membres individuels du groupe.

Cette option vous permet de comprendre l'accès d'utilisateurs individuels, même si cet accès est dû à leur appartenance à un groupe.

Élargissement des rôles

Si vous activez l'extension de rôle, les résultats de la requête répertorient toutes les autorisations de chaque rôle, en plus du rôle lui-même. Cette option n'est disponible que si vous ne spécifiez pas d'autorisations ni de rôles dans votre requête.

Par exemple, imaginez que vous activez l'extension de rôle pour la requête "Quel accès my-user@example.com a-t-il sur le bucket bucket-1 ?" Si Policy Analyzer trouve des rôles qui donnent à my-user@example.com un accès à bucket-1, les résultats de la requête indiqueront non seulement le nom du rôle, mais aussi toutes les autorisations incluses dans le rôle.

Cette option vous permet de voir exactement de quelles autorisations disposent vos comptes principaux.

Expansion des ressources

Si vous activez l'extension des ressources pour une requête Policy Analyzer, les résultats de la requête répertorient toutes les ressources descendantes pertinentes pour toutes les ressources parentes (projets, dossiers et organisations) dans les résultats de la requête. Cette extension est limitée à 1 000 ressources par ressource parente pour les requêtes Policy Analyzer et à 100 000 ressources par ressource parente pour les requêtes de longue durée.

Par exemple, examinez la manière dont l'extension des ressources affecterait les requêtes suivantes:

  • Qui dispose de l'autorisation storage.buckets.delete pour project-1 ?

    Si vous activez l'extension des ressources pour cette requête, la section "Ressources" des résultats de la requête liste non seulement le projet, mais également tous les buckets de stockage qu'il contient.

  • Sur quelles ressources my-user@example.com dispose-t-il de l'autorisation compute.instances.setIamPolicy ?

    Si vous activez l'extension des ressources pour cette requête et que Policy Analyzer détecte que my-user@example.com dispose d'un rôle au niveau du projet contenant cette autorisation, la section des résultats de la requête affichera non seulement le projet, mais aussi toutes les instances Compute Engine qu'il contient.

Cette option vous permet d'obtenir une compréhension détaillée des ressources auxquelles vos comptes principaux peuvent accéder.

Emprunter l'identité d'un compte de service

Si vous utilisez l'API REST ou gcloud CLI, vous pouvez activer l'analyse de l'emprunt d'identité d'un compte de service.

Si cette option est activée, Policy Analyzer exécute des requêtes d'analyse supplémentaires pour déterminer qui peut emprunter l'identité des comptes de service disposant de l'accès spécifié aux ressources spécifiées. Policy Analyzer exécute une requête pour chaque compte de service dans les résultats de la requête. Ces requêtes permettent d'analyser qui dispose de l'une des autorisations suivantes sur le compte de service:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

Quotas et limites

L'inventaire des éléments cloud applique le taux de requêtes entrantes, y compris les requêtes d'analyse des stratégies, en fonction du projet client. L'inventaire des éléments cloud limite également l'expansion des groupes au sein des adhésions aux groupes et l'extension des ressources dans la hiérarchie des ressources.

Pour afficher les quotas et les limites par défaut de Policy Analyzer, consultez la page Quotas et limites dans la documentation de l'inventaire des éléments cloud.

Étapes suivantes