Créer des stratégies IAM Cloud

Cette page explique comment créer des stratégies Cloud Identity and Access Management (Cloud 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. La fonctionnalité Cloud IAM met davantage l'accent sur les autorisations au niveau du projet et de l'organisation Google Cloud, 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 utilisez Cloud 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 :

Configurez les paramètres gcloud par défaut à l'aide de l'une des méthodes suivantes :

  • Utilisez gcloud init pour suivre les instructions permettant de définir les paramètres par défaut.
  • Utilisez gcloud config pour définir individuellement l'ID, la zone et la région de votre projet.

Utiliser gcloud init

  1. Exécutez gcloud init et suivez les instructions :

    gcloud init

    Si vous utilisez SSH sur un serveur distant, utilisez l'option --console-only pour empêcher la commande d'ouvrir un navigateur :

    gcloud init --console-only
  2. Suivez les instructions pour autoriser gcloud à utiliser votre compte Google Cloud.
  3. Créez ou sélectionnez une configuration.
  4. Choisissez un projet Google Cloud.
  5. Choisissez une zone Compute Engine par défaut.

Utiliser gcloud config

  • Définissez votre ID de projet par défaut :
    gcloud config set project project-id
  • Si vous travaillez avec des clusters zonaux, définissez votre zone de calcul par défaut :
    gcloud config set compute/zone compute-zone
  • Si vous utilisez des clusters régionaux, définissez votre région de calcul par défaut :
    gcloud config set compute/region compute-region
  • Mettez à jour gcloud vers la dernière version :
    gcloud components update

Interaction avec le système Kubernetes RBAC

Le système de contrôle des accès basé sur les rôles (RBAC) natif de Kubernetes gère également l'accès à votre cluster. RBAC (Role-Based Access Control) contrôle l'accès au niveau du cluster et de l'espace de noms, tandis que Cloud IAM fonctionne au niveau du projet.

Cloud IAM et le contrôle RBAC peuvent fonctionner de concert, et une entité doit disposer d'autorisations suffisantes, dans les deux cadres, pour travailler sur les ressources du cluster.

Rôles Cloud IAM

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

Rôles GKE prédéfinis

Cloud 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.

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

Rôle Titre Description Ressource la plus basse
roles/container.admin Administrateur Kubernetes Engine Permet la gestion complète des clusters et de leurs objets API Kubernetes. Projet
roles/container.clusterAdmin Administrateur de clusters Kubernetes Engine Fournit un accès à la gestion des clusters. Projet
roles/container.clusterViewer Lecteur de cluster Kubernetes Engine Accès en lecture seule aux clusters Kubernetes.
roles/container.developer Développeur sur Kubernetes Engine Fournit un accès aux objets de l'API Kubernetes dans les clusters. Projet
roles/container.hostServiceAgentUser Utilisateur de l'agent de service hôte Kubernetes Engine Permet au compte de service Kubernetes Engine du projet hôte de configurer des ressources réseau partagées pour la gestion des clusters. Fournit également un accès permettant d'inspecter les règles de pare-feu dans le projet hôte.
roles/container.viewer Lecteur Kubernetes Engine Fournit un accès en lecture seule aux ressources GKE. Projet

Pour connaître les autorisations accordées par chaque rôle Cloud IAM, consultez la section Autorisations accordées par les rôles Cloud IAM.

Rôles Cloud IAM primitifs

Les rôles Cloud IAM primitifs 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 primitifs, reportez-vous à la section Rôles primitifs de la documentation Cloud 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 dans la documentation Cloud 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

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.*

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 Cloud IAM

Vous pouvez afficher les autorisations accordées par chaque rôle à l'aide de l'outil de ligne de commande gcloud ou de Cloud Console.

gcloud

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

gcloud iam roles describe roles/role

role correspond à n'importe quel rôle Cloud IAM. Les rôles GKE sont précédés par roles/container. :

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 "Cloud IAM" dans Cloud Console.

    Accéder à la page "Cloud IAM"

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

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

Gérer les rôles Cloud IAM

Pour apprendre à gérer les rôles et les autorisations Cloud IAM pour les utilisateurs humains, consultez la page Attribuer, modifier et révoquer les accès des membres du projet dans la documentation Cloud 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 Cloud 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 Google Cloud Console. 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.

Étape suivante