Lorsque vous effectuez un déploiement sur Google Kubernetes Engine (GKE), le compte de service d'exécution Cloud Deploy par défaut a accès à tous les espaces de noms du cluster cible. Vous pouvez configurer ce compte de service pour qu'il ne soit déployé que dans un seul espace de noms.
Assurez-vous que le compte de service d'exécution ne dispose pas du rôle IAM
roles/container.developer.Attribuez le rôle
roles/container.clusterViewerau compte de service.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Ce rôle permet au compte de service de s'authentifier sur le cluster, mais rien de plus.
Créez un rôle RBAC Kubernetes qui accorde un accès administrateur à l'espace de noms.
Le rôle RBAC de cet exemple dispose d'autorisations étendues, équivalentes au
clouddeploy.developerrôle IAM. Pour minimiser le risque d'escalade des privilèges, nous vous recommandons de modifier ces autorisations pour qu'elles correspondent au minimum requis pour vos applications. Pour obtenir des instructions, consultez la documentation RBAC pour GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Créez une
RoleBindingqui lie ce rôle RBAC dans l'espace de noms de votre choix au compte de service d'exécution Cloud Deploy :kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE subjects: # Google Cloud user account - kind: User name: SERVICE_ACCOUNT roleRef: kind: Role name: admin apiGroup: rbac.authorization.k8s.ioCe fichier manifeste définit une stratégie RBAC liant le rôle
adminà votre compte de service d'exécution.NAMESPACEest l'espace de noms pour lequel vous souhaitez accorder l'accès au compte de service. Le compte de service ne peut accéder à aucun autre espace de noms du cluster.Appliquez le fichier manifeste RBAC au cluster :
kubectl apply -f YAML_NAME