Lorsque vous déployez 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 déploie 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 ne lui permet pas d'effectuer d'autres actions.
Créez un rôle Kubernetes RBAC qui accorde un accès administrateur à l'espace de noms.
Dans cet exemple, le rôle RBAC dispose d'autorisations étendues, équivalentes au rôle IAM
clouddeploy.developer. 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 un
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 liaison de stratégie RBAC entre le rôle
adminet votre compte de service d'exécution.NAMESPACEest l'espace de noms auquel 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