Appliquer le moindre privilège avec des recommandations

Cette page offre une présentation de l'outil de recommandation Cloud IAM. L'outil de recommandation IAM vous aide à appliquer le principe du moindre privilège en vous assurant que les membres disposent uniquement des autorisations dont ils ont réellement besoin.

Fonctionnement de l'outil de recommandation IAM

Cloud IAM utilise l'outil de recommandation pour comparer les attributions de rôles au niveau du projet avec les autorisations utilisées par chaque membre au cours des 90 derniers jours. Si vous accordez un rôle au niveau du projet à un membre et que ce membre n'utilise pas toutes les autorisations de ce rôle, l'outil de recommandation IAM vous recommande de révoquer le rôle. Si nécessaire, l'outil de recommandation IAM recommande également des rôles moins permissifs en remplacement. L'outil de recommandation IAM ne suggère jamais de modification qui augmente le niveau d'accès d'un membre.

L'outil de recommandation IAM utilise également le machine learning pour identifier les autorisations du rôle actuel d'un membre dont ce membre est susceptible d'avoir besoin à l'avenir, même s'il n'a pas utilisé ces autorisations au cours des 90 derniers jours.

L'outil de recommandation IAM n'applique pas automatiquement les recommandations. Au lieu de cela, vous devez examiner chaque recommandation, puis l'appliquer ou l'ignorer.

L'outil de recommandation IAM évalue uniquement les attributions de rôles qui ont été accordées au niveau du projet et qui existent depuis au moins 90 jours. Il n'évalue aucun des éléments suivants :

  • Attributions de rôles effectuées au niveau du dossier ou de l'organisation
  • Attributions de rôles effectuées en dessous du niveau du projet, c'est-à-dire des attributions de rôles sur des ressources spécifiques à un service au sein d'un projet
  • Attributions de rôles conditionnelles
  • Attributions de rôles pour les comptes de service gérés par Google
  • Contrôles d'accès distincts de Cloud IAM

Autorisations utilisées par chaque membre

Pour créer des recommandations, l'outil de recommandation IAM identifie les autorisations utilisées par chaque membre au cours des 90 derniers jours. Un membre peut utiliser une autorisation de différentes manières :

  • Directement, en appelant une API nécessitant l'autorisation

    Par exemple, la méthode roles.list de l'API REST IAM nécessite l'autorisation iam.roles.list. Lorsque vous appelez la méthode roles.list, vous utilisez l'autorisation iam.roles.list.

    De même, lorsque vous appelez la méthode testIamPermissions pour une ressource, vous utilisez effectivement toutes les autorisations que vous testez.

  • Indirectement, en utilisant Google Cloud Console pour travailler avec les ressources Google Cloud

    Par exemple, dans Cloud Console, vous pouvez modifier une instance de machine virtuelle (VM) Compute Engine, qui nécessite des autorisations différentes selon les paramètres que vous modifiez. Toutefois, Cloud Console affiche également les paramètres existants, ce qui nécessite l'autorisation compute.instances.get.

    Par conséquent, lorsque vous modifiez une instance de VM dans Cloud Console, vous utilisez l'autorisation compute.instances.get.

Machine learning

Dans certains cas, un membre aura probablement besoin de certaines autorisations incluses dans ses rôles actuels mais qui n'ont pas été utilisées au cours des 90 derniers jours. Pour identifier ces autorisations, l'outil de recommandation IAM utilise un modèle de machine learning (ML).

Le modèle de machine learning de l'outil de recommandation IAM est entraîné sur plusieurs ensembles de signaux :

  • Schémas de co-occurrence courants dans l'historique en cours d'observation : le fait qu'un utilisateur ait utilisé les autorisations A, B et C par le passé suggère que celles-ci sont liées d'une manière ou d'une autre et qu'elles sont toutes nécessaires pour mener à bien une tâche sur Google Cloud. Si le modèle de ML constate ce schéma suffisamment fréquemment, la prochaine fois qu'un autre utilisateur utilisera les autorisations A et B, le modèle suggérera qu'il pourrait également avoir besoin de l'autorisation C.

  • Connaissance du domaine, telle qu'elle est encodée dans les définitions de rôle : Cloud IAM fournit des centaines de rôles prédéfinis différents, spécifiques à un service. Si un rôle prédéfini contient un ensemble d'autorisations, cela signifie très probablement que ces autorisations doivent être accordées ensemble.

En plus de ces signaux, le modèle utilise également le plongement lexical pour calculer dans quelle mesure les autorisations sont sémantiquement similaires. Les autorisations sémantiquement similaires se "rapprochent" après le plongement et sont plus susceptibles d'être accordées ensemble. Par exemple, bigquery.datasets.get et bigquery.tables.list seront très proches l'une de l'autre après le plongement.

Toutes les données utilisées dans le pipeline de machine learning de l'outil de recommandation IAM disposent du k-anonymat, ce qui signifie que l'identité des personnes de l'ensemble de données anonymisé ne peut pas être restaurée. Pour atteindre ce niveau d'anonymat, nous supprimons toutes les informations personnelles, telles que l'ID utilisateur associé à chaque modèle d'utilisation des autorisations. Nous supprimons ensuite tous les modèles d'utilisation qui ne s'affichent pas assez souvent dans Google Cloud. Le modèle global est entraîné à l'aide de ces données anonymisées.

Le modèle global peut être personnalisé davantage pour chaque organisation à l'aide de l'apprentissage fédéré, un processus de machine learning qui entraîne des modèles de machine learning sans exporter de données.

Insights

Les recommandations sont créées à partir d'un ou plusieurs insights IAM. Les insights sur les stratégies IAM sont des données basées sur le ML portant sur l'utilisation des autorisations au sein de votre projet.

Certains insights renvoient à des recommandations et fournissent des informations pertinentes sur les recommandations associées. Cependant, vous pouvez utiliser les insights indépendamment des recommandations. Pour en savoir plus sur l'utilisation des insights, consultez Utiliser les insights sur les règles.

Journaux d'audit

Lorsque vous appliquez ou ignorez une recommandation, l'outil de recommandation IAM crée une entrée de journal. Vous pouvez afficher ces entrées dans l'outil de recommandation IAM ou les consulter dans vos journaux d'audit Google Cloud.

Autres types de contrôles des accès

Certains services Google Cloud fournissent des contrôles d'accès distincts de Cloud IAM. Par exemple, Cloud Storage fournit des listes de contrôle d'accès (LCA), et Google Kubernetes Engine (GKE) est compatible avec le contrôle des accès basé sur les rôles (RBAC) Kubernetes.

L'outil de recommandation IAM analyse uniquement les contrôles d'accès IAM. Si vous utilisez d'autres types de contrôles d'accès, soyez particulièrement vigilant lorsque vous examinez les recommandations et prenez en compte le rapport entre ces contrôles d'accès et vos stratégies IAM.

Examiner les recommandations

Lorsque vous cliquez sur une recommandation dans Cloud Console, celle-ci affiche une liste d'autorisations codées par couleur et par symbole. Cette liste indique les modifications qui seront apportées aux autorisations du membre si vous appliquez la recommandation.

Les types d'autorisations associés à chaque couleur et symbole sont les suivants :

  • Gris sans symbole : autorisations qui figurent à la fois dans le rôle actuel du membre et dans les rôles recommandés.

  • Rouge avec un signe moins  : autorisations qui figurent dans le rôle actuel du membre, mais pas dans les rôles recommandés, car le membre ne les a pas utilisées au cours des 90 derniers jours.

  • Vert avec un signe plus  : autorisations implicitement incluses dans le rôle actuel du membre, mais qui doivent être explicitement incluses dans les rôles recommandés pour maintenir le niveau d'accès actuel.

    Ce type d'autorisation n'apparaît que lorsque vous remplacez un rôle primitif. Certains services Google Cloud, tels que Cloud Storage et BigQuery, fournissent implicitement des autorisations supplémentaires à tout membre doté d'un rôle primitif. Si un membre a utilisé ces autorisations implicites au cours des 90 derniers jours, les rôles recommandés incluent les autorisations explicites équivalentes afin que le membre conserve son accès existant. L'outil de recommandation Cloud IAM n'ajoute jamais d'autorisations que le membre ne possède pas déjà.

  • Bleu avec une icône Machine learning  : autorisations qui figurent à la fois dans le rôle actuel du membre et dans les rôles recommandés, non pas parce que le membre a utilisé ces autorisations au cours des 90 derniers jours, mais parce que l'outil de recommandation a déterminé par le biais du machine learning qu'il en aura probablement besoin à l'avenir. Cette page présente un exemple de scénario dans lequel une autorisation suggérée par le ML peut s'afficher.

Recommandations pour les rôles personnalisés

Lorsque l'outil de recommandation IAM suggère des remplacements pour un rôle existant, il suggère toujours des rôles prédéfinis qui semblent mieux correspondre aux besoins du membre. Dans certains cas, il offre également la possibilité de créer un rôle personnalisé incluant seulement les autorisations recommandées. Vous pouvez modifier la recommandation de rôle personnalisé en ajoutant ou en supprimant des autorisations.

Si vous souhaitez appliquer le principe du moindre privilège aussi strictement que possible, choisissez le nouveau rôle personnalisé. L'outil de recommandation IAM crée le rôle personnalisé au niveau du projet. Vous êtes responsable de la gestion et de la mise à jour des rôles personnalisés pour vos projets.

Si vous préférez utiliser un rôle géré par Google, choisissez le rôle prédéfini. Google Cloud met régulièrement à jour ces rôles en ajoutant ou en supprimant des autorisations. Pour être informé de ces mises à jour, abonnez-vous au flux d'actualités du journal des modifications des autorisations. Lorsque vous choisissez le rôle prédéfini, le membre conserve au moins quelques autorisations qu'il n'a pas utilisées, et potentiellement un grand nombre de celles-ci.

L'outil de recommandation IAM ne recommande pas de nouveaux rôles personnalisés dans les cas suivants :

  • Votre organisation dispose déjà d'au moins 100 rôles personnalisés.
  • Votre projet dispose déjà d'au moins 25 rôles personnalisés.

En outre, l'outil de recommandation IAM ne recommande pas plus de cinq nouveaux rôles personnalisés par jour dans chaque projet et pas plus de 15 nouveaux rôles personnalisés dans toute l'organisation.

Exemples de recommandations de rôles

Les exemples suivants illustrent les types de recommandations que vous pouvez recevoir.

Révoquer un rôle existant

L'utilisateur fuyo@example.com s'est vu attribuer un rôle personnalisé sur un projet. Ce rôle personnalisé inclut l'autorisation iam.serviceAccounts.actAs, qui permet à fuyo@example.com de jouer le rôle de compte de service. Cependant, au cours des 90 derniers jours, fuyo@example.com n'a pas agi en tant que compte de service dans ce projet.

Par conséquent, l'outil de recommandation IAM vous suggère de révoquer le rôle personnalisé de fuyo@example.com :

Remplacer un rôle existant

Un compte de service s'est vu attribuer le rôle Propriétaire (roles/owner) sur un projet. Ce rôle primitif comprend plus de 2 500 autorisations et accorde un accès quasiment illimité à un projet. Toutefois, au cours des 90 derniers jours, le compte de service n'a utilisé que quelques centaines d'autorisations.

Par conséquent, l'outil de recommandation IAM vous suggère de révoquer le rôle Propriétaire et de le remplacer par une combinaison de quatre autres rôles, ce qui supprime des milliers d'autorisations superflues :

Créer un rôle personnalisé

L'utilisateur nelson@example.com s'est vu attribuer le rôle Lecteur de données BigQuery (roles/bigquery.dataViewer) sur un projet. Ce rôle inclut plus de 10 autorisations mais, au cours des 90 derniers jours, nelson@example.com n'a utilisé que trois de ces autorisations.

Par conséquent, l'outil de recommandation IAM vous suggère de créer un rôle personnalisé qui n'inclut que les autorisations réellement utilisées par nelson@example.com :

L'outil de recommandation IAM propose également une autre option, qui consiste à remplacer le rôle existant par le rôle Lecteur de métadonnées BigQuery (roles/bigquery.metadataViewer). Ce rôle prédéfini inclut un nombre d'autorisations légèrement inférieur à celui du rôle Lecteur de données BigQuery.

Remplacer des rôles avec des autorisations suggérées par le machine learning

Un compte de service s'est vu attribuer le rôle Éditeur (roles/editor) sur un projet. Ce rôle primitif comprend plus de 2 000 autorisations et accorde un accès étendu à un projet. Toutefois, au cours des 90 derniers jours, le compte de service a utilisé moins de 10 autorisations.

L'outil de recommandation IAM vous suggère de révoquer le rôle Éditeur et de le remplacer par le rôle Administrateur des objets de stockage (roles/storage.objectAdmin), qui accorde un contrôle total sur les objets d'un bucket Cloud Storage. Cette modification supprime des milliers d'autorisations accordées en excès.

Ce rôle inclut plusieurs autorisations du rôle Éditeur que le compte de service n'a pas utilisées au cours des 90 derniers jours. Cependant, en utilisant le machine learning, l'outil de recommandation IAM prédit que le compte de service aura besoin de ces autorisations à l'avenir.

L'outil de recommandation IAM utilise une icône Machine learning  pour identifier ces autorisations supplémentaires. Dans cet exemple, nous avons recommandé l'autorisation resourcemanager.projects.get sur la base du machine learning :

Disponibilité des recommandations

Dans Cloud Console, la page IAM affiche tous les membres de votre projet et répertorie les rôles de chacun d'entre eux. Elle indique également la disponibilité ou non d'une recommandation pour chaque rôle.

Lorsque des recommandations sont disponibles, Cloud Console affiche l'icône Recommandation disponible . Cette icône indique que le membre dispose d'autorisations dont il n'a probablement pas besoin. Cliquez sur l'icône pour examiner et appliquer la recommandation.

Lorsque aucune recommandation n'est disponible, Cloud Console affiche l'icône Recommandation non disponible . Pour savoir pourquoi, maintenez le pointeur de la souris sur l'icône.

Il est normal que certains membres de votre projet aient peu de recommandations, ou n'en aient aucune. Plusieurs raisons peuvent expliquer l'absence de recommandation pour un rôle spécifique :

  • Aucun rôle IAM prédéfini n'est plus approprié que le rôle actuel : si un membre dispose déjà d'un rôle prédéfini qui minimise ses autorisations ou inclut moins d'autorisations que les autres rôles prédéfinis, l'outil de recommandation IAM ne peut pas recommander un rôle prédéfini différent.

    Vous pouvez peut-être réduire le nombre d'autorisations du membre en lui créant un rôle personnalisé.

  • Les données d'utilisation sont insuffisantes pour le membre en question : si l'outil de recommandation IAM ne dispose pas d'informations suffisantes sur l'utilisation de Google Cloud par le membre, il ne peut pas formuler de recommandations pour les rôles de ce membre.

    Il est possible que vous receviez des recommandations pour le membre ultérieurement, une fois que l'outil de recommandation IAM aura collecté davantage de données.

  • Le membre en question est un compte de service géré par Google : pour garantir que les comptes de service gérés par Google puissent accéder à vos ressources si nécessaire, l'outil de recommandation IAM n'analyse aucun rôle attribué à un compte de service géré par Google.

  • La liaison de rôle est conditionnelle : si la liaison de rôle inclut une condition, le rôle n'est attribué que si certaines autorisations sont accordées. L'outil de recommandation IAM ne formule aucune recommandation pour ces liaisons de rôles.

  • Aucun autre membre ne dispose du rôle primitif Propriétaire pour le projet : au moins un membre doit disposer du rôle Propriétaire (roles/owner) pour chaque projet. Si un seul membre dispose de ce rôle, l'outil de recommandation IAM ne vous recommandera pas de révoquer ou de remplacer le rôle.

  • La recommandation actuelle pour la liaison de rôle a été ignorée, ou elle a été appliquée puis annulée : si vous ignorez une recommandation de modification du rôle d'un membre, ou si vous appliquez une recommandation puis que vous l'annulez, Cloud Console ne l'affiche plus.

    À l'avenir, lorsque l'outil de recommandation IAM effectuera une nouvelle recommandation suggérant de modifier le rôle du membre, Cloud Console affichera la nouvelle recommandation même lorsque vous aurez ignoré ou annulé la recommandation précédente.

    Vous pouvez afficher les recommandations ignorées et annulées dans le journal des recommandations. Les recommandations ignorées sont disponibles jusqu'à ce qu'elles deviennent obsolètes. Les recommandations annulées sont disponibles pendant 90 jours.

Autorisations IAM requises

Cette section décrit les autorisations IAM dont vous avez besoin pour travailler avec l'outil de recommandation IAM.

Afficher les recommandations

Pour afficher les recommandations de l'outil de recommandation IAM, vous devez disposer des autorisations suivantes pour le projet que vous consultez :

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • resourcemanager.projects.getIamPolicy

Pour obtenir ces autorisations tout en respectant le principe du moindre privilège, demandez à votre administrateur de vous accorder les rôles prédéfinis suivants :

  • Lecteur de rôles (roles/iam.roleViewer)
  • Lecteur de l'outil de recommandation IAM (roles/recommender.iamViewer) ou Examinateur de sécurité IAM (roles/iam.securityReviewer)

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 plus permissif.

Appliquer et ignorer les recommandations

Pour appliquer et ignorer les recommandations de l'outil de recommandation IAM, vous devez disposer des autorisations suivantes pour le projet que vous gérez :

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Pour obtenir ces autorisations tout en respectant le principe du moindre privilège, demandez à votre administrateur de vous accorder les rôles prédéfinis suivants :

  • Lecteur de rôles (roles/iam.roleViewer)
  • Administrateur de l'outil de recommandation IAM (roles/recommender.iamAdmin)
  • Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin)

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 plus permissif.

Étapes suivantes