Créer des stratégies d'autorisation IAM


Cette page explique comment créer des stratégies d'autorisation Identity and Access Management (IAM) pour l'autorisation dans Google Kubernetes Engine (GKE).

Présentation

Chaque appel d'API Google Cloud, GKE et Kubernetes nécessite que le compte à l'origine de la requête dispose des autorisations nécessaires. Par défaut, personne, à l'exception de vous-même, ne peut accéder à votre projet ou à ses ressources. Vous pouvez utiliser Cloud IAM pour déterminer quels utilisateurs peuvent accéder à votre projet et ce qu’ils sont autorisés à y faire. Les autorisations Cloud IAM fonctionnent en association avec le système Kubernetes RBAC qui permet un contrôle précis sur l'accès à des objets spécifiques dans un cluster ou un espace de noms. IAM met davantage l'accent sur les autorisations au niveau du projet et de l'organisation, bien qu'elle fournisse des rôles prédéfinis spécifiques à GKE.

Pour accorder à des utilisateurs et à des comptes de service l'accès à votre projet Google Cloud, vous devez les ajouter en tant que membres de l'équipe du projet, puis leur attribuer des rôles. Les rôles déterminent les ressources Google Cloud auxquelles un compte est autorisé à accéder et les opérations qu'il peut effectuer.

Dans GKE, vous pouvez également utiliser IAM pour gérer les utilisateurs et les comptes de service autorisés à accéder à vos clusters et à y effectuer des opérations.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Interaction avec le système Kubernetes RBAC

Kubernetes dispose d'un mécanisme de contrôle d'accès intégré, le contrôle des accès basé sur les rôles (RBAC). Le RBAC contrôle l'accès au niveau du cluster et de l'espace de noms, tandis qu'IAM fonctionne au niveau du projet.

IAM et RBAC peuvent fonctionner ensemble. Une entité doit disposer des autorisations RBAC et IAM suffisantes pour pouvoir utiliser les ressources de votre cluster.

Rôles IAM

Les sections suivantes décrivent les rôles IAM disponibles dans Google Cloud.

Rôles GKE prédéfinis

IAM fournit des rôles prédéfinis qui accordent l'accès à des ressources Google Cloud spécifiques et empêchent les accès non autorisés aux autres ressources.

IAM propose les rôles prédéfinis suivants pour GKE.

Role Title Description Lowest resource
roles/container.admin Kubernetes Engine Admin

Provides access to full management of clusters and their Kubernetes API objects.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterAdmin Kubernetes Engine Cluster Admin

Provides access to management of clusters.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Beta Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser Kubernetes Engine Host Service Agent User

Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project.

roles/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Pour obtenir la liste complète des autorisations individuelles dans chaque rôle, consultez la section Rôles Google Kubernetes Engine. Vous pouvez également afficher les autorisations dans chaque rôle IAM à l'aide de gcloud CLI ou de la console Google Cloud. Pour obtenir des instructions, reportez-vous à la section Afficher les autorisations accordées par les rôles IAM.

Rôles IAM de base

Les rôles IAM de base accordent aux utilisateurs un accès global, au niveau du projet, à toutes les ressources Google Cloud. Pour sécuriser votre projet et vos clusters, utilisez autant que possible des rôles prédéfinis.

Pour en savoir plus sur les rôles de base, consultez la section Rôles de base dans la documentation IAM.

Rôle Utilisateur du compte de service

Le rôle Utilisateur du compte de service accorde aux utilisateurs le droit d'effectuer certaines tâches à l'aide d'un compte de service Google Cloud.

  • L'attribution du rôle iam.serviceAccountUser à un utilisateur pour un projet lui donne tous les rôles accordés à tous les comptes de service de ce projet, y compris les comptes de service pouvant être créés ultérieurement.

  • L'attribution du rôle iam.serviceAccountUser à un utilisateur pour un compte de service spécifique lui donne tous les rôles accordés à ce compte de service.

Ce rôle inclut les autorisations suivantes :

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Pour plus d'informations sur le rôle ServiceAccountUser, consultez la section ServiceAccountUser de la documentation IAM.

La commande suivante indique la syntaxe à utiliser pour attribuer le rôle Utilisateur du compte de service :

gcloud iam service-accounts add-iam-policy-binding \
  SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --member=user:USER \
  --role=roles/iam.serviceAccountUser

Remplacez l'élément suivant :

  • SA_NAME : nom du compte de service.
  • PROJECT_ID : ID de votre projet Google Cloud
  • USER : adresse e-mail de l'utilisateur.

Rôle Utilisateur de l'agent de service hôte

Le rôle Utilisateur de l'agent de service hôte n'est utilisé que dans les clusters de VPC partagé. Ce rôle inclut les autorisations suivantes :

  • compute.firewalls.get
  • container.hostServiceAgent.*
  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone

Rôles personnalisés

Si les rôles prédéfinis ne répondent pas à vos besoins, vous pouvez créer des rôles personnalisés avec les autorisations que vous définissez.

Pour apprendre à créer et à attribuer des rôles personnalisés, consultez la page Créer et gérer des rôles personnalisés.

Afficher les autorisations accordées par les rôles IAM

Vous pouvez afficher les autorisations accordées par chaque rôle à l'aide de gcloud CLI ou de la console Google Cloud.

gcloud

Pour afficher les autorisations accordées par un rôle spécifique, exécutez la commande suivante :

gcloud iam roles describe roles/ROLE

Remplacez ROLE par n'importe quel rôle IAM. Les rôles GKE sont précédés du préfixe roles/container, par exemple gcloud iam roles describe roles/container.admin.

Console

Pour afficher les autorisations accordées par un rôle spécifique, procédez comme suit :

  1. Accédez à la section Rôles de la page IAM et administration dans la console Google Cloud.

    Accéder à IAM et administration

  2. Pour connaître les rôles de GKE, saisissez Kubernetes Engine dans le champ Filtrer le tableau.

  3. Sélectionnez le rôle que vous souhaitez afficher. La description du rôle et une liste des autorisations attribuées s'affichent.

Gérer les rôles IAM

Pour apprendre à gérer les rôles et les autorisations IAM pour les utilisateurs humains, consultez la page Attribuer, modifier et révoquer les accès des membres du projet dans la documentation IAM.

Pour les comptes de service, consultez la page Attribuer des rôles aux comptes de service.

Exemples

Voici quelques exemples de la manière dont IAM fonctionne avec GKE :

  • Un nouvel employé rejoint une entreprise. Il doit être ajouté au projet Google Cloud, mais il a uniquement besoin d'afficher les clusters du projet et les autres ressources Google Cloud. Le propriétaire du projet lui attribue le rôle Lecteur de Compute au niveau du projet. Ce rôle fournit un accès en lecture seule permettant d'obtenir et de répertorier les nœuds, qui sont des ressources Compute Engine.
  • L'employé travaille dans une division opérationnelle et doit mettre à jour un cluster à l'aide de gcloud ou de la console Google Cloud. Cette opération nécessite l'autorisation container.clusters.update. Par conséquent, le propriétaire du projet lui attribue le rôle Administrateur de cluster Kubernetes Engine. L'employé bénéficie désormais des rôles Administrateur de cluster Kubernetes Engine et Lecteur de Compute.
  • L'employé doit rechercher les causes de problèmes rencontrés avec un objet de déploiement. Il doit exécuter kubectl get pods pour voir les pods qui s'exécutent sur le cluster. L'employé possède déjà le rôle Lecteur de Compute, qui n'est pas suffisant pour répertorier les pods. Il a besoin du rôle Lecteur de Kubernetes Engine.
  • L'employé doit créer un cluster. Le propriétaire du projet lui attribue le rôle Utilisateur du compte de service pour le compte de service PROJECT_NUMBER-compute@developer.gserviceaccount.com afin que son compte puisse accéder au compte de service par défaut de Compute Engine. Ce compte de service dispose du rôle Éditeur, qui comporte un large ensemble d'autorisations.

Étapes suivantes