Les charges de travail GKE doivent accéder aux API GCP sans gérer les clés de compte de service.
→Activer et configurer Workload Identity sur le cluster GKE. Mapper les comptes de service Kubernetes (KSA) aux comptes de service Google (GSA).
Pourquoi: Élimine le risque de fuite des clés de compte de service en utilisant des identifiants de courte durée, automatiquement renouvelés et dérivés des tokens KSA.
Référence↗
Fournir un accès aux applications web internes depuis n'importe quel réseau, basé sur l'identité de l'utilisateur et la posture de l'appareil, sans VPN.
→Utiliser Identity-Aware Proxy (IAP) avec Access Context Manager. Définir les niveaux d'accès basés sur l'IP, l'état de l'appareil (via Endpoint Verification) et l'identité de l'utilisateur.
Pourquoi: Déplace le contrôle d'accès du périmètre réseau vers les utilisateurs et appareils individuels, appliquant les principes du zéro-trust.
Référence↗
Une pipeline CI/CD (par exemple, GitHub Actions, GitLab) doit accéder aux ressources GCP sans identifiants de longue durée.
→Utiliser Workload Identity Federation. Créer un pool de fournisseurs pour l'IdP externe (par exemple, GitHub OIDC) et configurer des conditions d'attribut pour restreindre l'accès à des dépôts ou branches spécifiques.
Pourquoi: Authentification sans clé pour les charges de travail externes. Le système externe fournit son propre token, qui est échangé contre un token GCP de courte durée.
Appliquer des politiques de sécurité IAM à l'échelle de l'organisation, telles que la prévention de la création de clés de compte de service ou la restriction des autorisations IAM à des domaines spécifiques.
→Utiliser les contraintes de politique d'organisation telles que `iam.disableServiceAccountKeyCreation` et `iam.allowedPolicyMemberDomains`.
Pourquoi: Les politiques d'organisation sont héritées et ne peuvent pas être outrepassées par les propriétaires de projets, garantissant une posture de sécurité cohérente.
Un utilisateur a besoin d'un accès administratif temporaire, auditable et soumis à approbation à un environnement de production pour un incident.
→Utiliser Privileged Access Manager (PAM) pour un accès juste-à-temps (JIT). L'utilisateur demande un rôle spécifique pour une durée limitée, ce qui passe par un flux de travail d'approbation.
Pourquoi: Élimine les privilèges permanents, un risque de sécurité majeur. L'accès est limité dans le temps, justifié et entièrement audité.
Plusieurs équipes partagent un cluster GKE. Chaque équipe doit uniquement gérer les ressources au sein de son propre namespace.
→Accorder le rôle IAM `roles/container.clusterViewer` au niveau du projet. Utiliser les `Role` et `RoleBinding` RBAC de Kubernetes au sein de chaque namespace pour accorder des permissions spécifiques (par exemple, éditer, visualiser).
Pourquoi: Sépare l'authentification au niveau du cluster (IAM) de l'autorisation au niveau du namespace (Kubernetes RBAC), offrant un contrôle multi-locataire granulaire.
Les API doivent être appelées à l'aide d'identifiants de courte durée au lieu de clés statiques.
→Utiliser l'usurpation d'identité de compte de service. Accorder à un principal le rôle `roles/iam.serviceAccountTokenCreator` sur un compte de service cible pour générer des tokens d'accès OAuth 2.0 de courte durée.
Pourquoi: Évite de distribuer et de gérer des clés de longue durée. Les tokens expirent automatiquement (par défaut 1 heure), réduisant les risques en cas de compromission.
Un contractuel a besoin d'accéder à des ressources spécifiques, mais l'accès doit expirer automatiquement après 30 jours.
→Accorder le rôle IAM nécessaire avec une condition IAM basée sur le temps, par exemple, `request.time < timestamp("YYYY-MM-DDTHH:MM:SSZ")`.
Pourquoi: Automatise la révocation de l'accès, évitant le nettoyage manuel et garantissant que l'accès n'est pas prolongé par inadvertance.
Autoriser uniquement les images conteneur signées par la pipeline CI/CD à être déployées sur les clusters GKE de production.
→Implémenter Binary Authorization. Créer une attestation dans la pipeline CI pour signer les images. Configurer une politique Binary Authorization sur le cluster GKE pour exiger cette attestation.
Pourquoi: Applique une chaîne d'approvisionnement logicielle sécurisée en empêchant les images non vérifiées ou altérées de s'exécuter en production.
Référence↗
Accorder des permissions aux ressources basées sur leurs tags attribués, et non sur des noms de ressources individuels.
→Utiliser les conditions IAM avec des expressions de tag de ressource, comme `resource.matchTag("123456789/env", "prod")`.
Pourquoi: Permet un contrôle d'accès basé sur les attributs (ABAC) évolutif. Les permissions sont dynamiques et s'appliquent automatiquement à mesure que les ressources sont taguées.
Permettre à un projet de service de déployer des VM dans un projet hôte Shared VPC sans accorder de droits d'administrateur réseau.
→Dans le projet hôte, accorder au compte de service du projet de service le rôle `roles/compute.networkUser` sur le ou les sous-réseaux spécifiques qu'il doit utiliser.
Pourquoi: Suit le principe du moindre privilège. Les projets de service peuvent utiliser le réseau mais ne peuvent pas le modifier (par exemple, changer les règles de pare-feu), celui-ci restant géré de manière centralisée.
Un utilisateur avec `storage.admin` ne peut pas créer de bucket. Vous devez identifier la cause première.
→Vérifier l'existence d'une politique de refus IAM à un niveau supérieur (dossier, organisation) qui refuse la permission `storage.buckets.create`.
Pourquoi: Les politiques de refus IAM outrepassent toujours toutes les politiques d'autorisation. C'est un outil puissant pour faire respecter des limites de sécurité non négociables.
Activer l'SSO pour les utilisateurs d'Active Directory sur site afin qu'ils accèdent à la console Google Cloud.
→Utiliser Google Cloud Directory Sync (GCDS) pour synchroniser les identités vers Cloud Identity. Configurer la fédération (SAML) entre Cloud Identity et AD FS (ou un autre IdP).
Pourquoi: Maintient AD comme source de vérité pour les identités tout en offrant une expérience SSO fédérée et transparente aux utilisateurs.