Créer des stratégies IAM

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

Aperçu

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

Si le message d'erreur One of [--zone, --region] must be supplied: Please specify location s'affiche, effectuez les tâches ci-dessous.

  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 contrôle l'accès au niveau du cluster et de l'espace de noms, tandis que IAM fonctionne au niveau du projet.

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 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 :

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.

Pour définir un compte de service sur des nœuds, vous devez également attribuer le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser).

Projet
roles/container.clusterAdmin Administrateur de clusters Kubernetes Engine

Permet la gestion des clusters.

Pour définir un compte de service sur des nœuds, vous devez également attribuer le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser).

Projet
roles/container.clusterViewer Lecteur de cluster Kubernetes Engine Permet d'accéder aux clusters GKE et de les répertorier.
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 IAM, consultez la section 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

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

    Accéder à la page 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 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 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