Lorsque vous créez un projet Google Cloud, vous êtes le seul utilisateur du projet. Par défaut, aucun autre utilisateur n'a accès à votre projet ou à ses ressources, y compris aux ressources Google Kubernetes Engine (GKE). GKE accepte plusieurs options de gestion de l'accès aux ressources de votre projet et de ses clusters par le biais du contrôle des accès basé sur les rôles (RBAC, Role-Based Access Control).
Ces mécanismes présentent des fonctionnalités communes, mais ils ciblent différents types de ressources. Chaque mécanisme est expliqué dans une section ci-dessous, mais pour résumer :
Kubernetes RBAC est intégré à Kubernetes et permet d'accorder des autorisations précises pour des objets de clusters Kubernetes. Les autorisations existent en tant qu'objets ClusterRole ou Role dans le cluster. Les objets RoleBinding attribuent des rôles auxutilisateurs Kubernetes, aux utilisateurs Google Cloud, aux comptes de service IAM ou à des Google Groupes.
Si vous utilisez principalement GKE et que vous avez besoin de contrôler avec précision chaque objet et opération de votre cluster, Kubernetes RBAC constitue le meilleur choix.
IAM gère les ressources Google Cloud, y compris les clusters, et les types d'objets dans les clusters. Les autorisations sont attribuées aux comptes principaux IAM.
Aucun mécanisme ne permet d'accorder des autorisations pour des objets Kubernetes spécifiques dans IAM. Par exemple, vous pouvez autoriser un utilisateur à créer des objets CustomResourceDefinition (CRD). Toutefois, vous ne pouvez pas lui accorder le droit de créer un seul objet CRD spécifique, ni limiter la création à un espace de noms ou à un cluster spécifique du projet. Un rôle IAM octroie des droits sur tous les clusters du projet, ou bien sur tous les clusters de tous les projets enfants s'il est appliqué au niveau du dossier.
Si vous utilisez plusieurs composants Google Cloud et que vous n'avez pas besoin de gérer de façon précise des autorisations spécifiques à Kubernetes, IAM constitue un bon choix.
Kubernetes RBAC
Kubernetes étant compatible avec RBAC, vous pouvez créer des rôles ultraprécis qui existent dans le cluster Kubernetes. Un rôle peut être limité à un objet Kubernetes spécifique ou à un type d'objet Kubernetes, et il définit les actions (appelées verbes) que le rôle autorise concernant cet objet. Un RoleBinding est également un objet Kubernetes, et il attribue des rôles aux utilisateurs. Un utilisateur GKE peut être n'importe lequel des suivants :
- Utilisateur Google Cloud
- Compte de service IAM
- Compte de service Kubernetes
- Utilisateur Google Workspace
- Groupe Google Workspace
- Utilisateurs authentifiés à l'aide de certificats clients X509
Pour en savoir plus, consultez la page Contrôle des accès basé sur les rôles.
IAM
Cloud IAM vous permet d'attribuer des rôles aux comptes principaux. Un rôle est un ensemble d'autorisations qui, lorsqu'il est attribué à un compte principal, contrôle les accès à une ou plusieurs ressources Google Cloud. Vous pouvez utiliser les types de rôles suivants :
- Les rôles de base fournissent des autorisations générales limitées au propriétaire, à l'éditeur et au lecteur.
- Les rôles prédéfinis, tels que les rôles prédéfinis pour GKE, fournissent un accès plus précis que les rôles de base et traitent de nombreux cas d'utilisation courants.
- Les rôles personnalisés vous permettent de créer des combinaisons uniques d'autorisations.
Un compte principal peut être l'un des éléments suivants :
- Compte utilisateur
- Compte de service
- Groupe Google Workspace
- Domaine Google Workspace
- Domaine Cloud Identity
Types de stratégies IAM
IAM est compatible avec les types de stratégies suivants :
- Stratégies d'autorisation : attribuez des rôles aux comptes principaux. Pour en savoir plus, consultez la section Stratégies d'autorisation.
- Stratégies de refus : empêchez les comptes principaux d'utiliser des autorisations IAM spécifiques, quels que soient les rôles qui leur sont attribués. Pour en savoir plus, consultez la section Stratégies de refus.
Utilisez des stratégies de refus pour empêcher des comptes principaux spécifiques d'effectuer des actions spécifiques dans votre projet, dossier ou organisation, même si une stratégie d'autorisation IAM accorde à ces comptes principaux un rôle contenant les autorisations appropriées.
Recommandations IAM
Envisagez d'utiliser les rôles IAM prédéfinis suivants pour faciliter les scénarios courants :
- Lecteur de cluster Kubernetes Engine (
roles/container.clusterViewer
) : DevOps, ingénieurs et développeurs d'applications qui n'ont besoin que de se connecter au cluster. - Administrateur de cluster Kubernetes Engine (
roles/container.clusterAdmin
) : administrateurs de plate-forme et opérateurs de cluster qui doivent gérer un ou plusieurs clusters dans un projet Google Cloud.
Pour obtenir la liste des rôles IAM prédéfinis disponibles, consultez la section Rôles GKE prédéfinis.
Vous pouvez également envisager de créer un compte de service IAM personnalisé pour vos nœuds à utiliser à la place du compte de service Compute Engine par défaut. Accordez au compte de service personnalisé les autorisations minimales requises pour que GKE fonctionne. Pour obtenir des instructions, consultez la section Utiliser le principe du moindre privilège pour les comptes de service IAM.
Interaction d'IAM avec Kubernetes RBAC
IAM et Kubernetes RBAC fonctionnent conjointement pour vous aider à gérer les 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. Une entité doit disposer d'autorisations suffisantes, à ces deux niveaux, pour travailler sur les ressources du cluster.
Étape suivante
- Consultez la présentation de la sécurité dans GKE.
- Apprenez à utiliser Kubernetes RBAC.
- Découvrez comment créer des stratégies IAM pour GKE.
- Apprenez à utiliser les conditions IAM pour les équilibreurs de charge.