Cette page explique comment créer des stratégies 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 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 :
- Assurez-vous d'avoir activé l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Assurez-vous d'avoir installé le SDK Cloud.
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.
-
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
- Suivez les instructions pour autoriser
gcloud
à utiliser votre compte Google Cloud. - Créez ou sélectionnez une configuration.
- Choisissez un projet Google Cloud.
- 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 utilisez 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/ |
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 ( |
Projet |
roles/ |
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 ( |
Projet |
roles/ |
Lecteur de cluster Kubernetes Engine | Permet d'accéder aux clusters GKE et de les répertorier. | |
roles/ |
Développeur sur Kubernetes Engine | Fournit un accès aux objets de l'API Kubernetes dans les clusters. | Projet |
roles/ |
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/ |
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
Remplacez l'élément suivant :
SA_NAME
: nom du compte de service.PROJECT_ID
: ID de votre projet Google CloudUSER
: 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.*
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
Remplacez ROLE
par 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 :
Accédez à la section Rôles de la page IAM dans Cloud Console.
Pour connaître les rôles de GKE, saisissez
Kubernetes Engine
dans le champ Filtrer le tableau.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'autorisationcontainer.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
- Consultez la section de Présentation du contrôle des accès.
- Découvrez les bonnes pratiques applicables aux stratégies IAM.