Ao implantar no Google Kubernetes Engine (GKE), a conta de serviço de execução padrão do Cloud Deploy tem acesso a todos os namespaces no cluster de destino. É possível configurar essa conta de serviço para implantação em apenas um namespace.
Verifique se a conta de serviço de execução não tem o papel
roles/container.developerdo IAM.Conceda à conta de serviço o papel
roles/container.clusterViewer.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Esse papel permite que a conta de serviço se autentique no cluster, mas não faça mais nada.
Crie uma função RBAC do Kubernetes que conceda acesso de administrador ao namespace.
O papel de RBAC neste exemplo tem permissões amplas, equivalentes ao papel do IAM
clouddeploy.developer. Para minimizar o risco de escalonamento de privilégios, recomendamos que você mude essas permissões para o mínimo necessário para seus aplicativos. Para instruções, consulte a documentação do RBAC para GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Crie um
RoleBindingque vincule essa função de RBAC no namespace escolhido à conta de serviço de execução do 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.ioEsse manifesto define uma vinculação de política de RBAC que vincula a função
adminà sua conta de serviço de execução.NAMESPACEé o namespace em que você quer conceder acesso à conta de serviço. A conta de serviço não pode acessar nenhum outro namespace no cluster.Aplique o manifesto RBAC ao cluster:
kubectl apply -f YAML_NAME