Quando esegui il deployment su Google Kubernetes Engine (GKE), l'account di servizio di esecuzione Cloud Deploy predefinito ha accesso a tutti gli spazi dei nomi nel cluster di destinazione. Puoi configurare l'account di servizio per il deployment in un solo spazio dei nomi.
Assicurati che il account di servizio di esecuzione non disponga del ruolo IAM
roles/container.developer.Concedi all'account di servizio il ruolo
roles/container.clusterViewer.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Questo ruolo consente al account di servizio di autenticarsi sul cluster, ma non di fare altro.
Crea un ruolo Kubernetes RBAC che conceda l'accesso amministrativo allo spazio dei nomi.
Il ruolo RBAC in questo esempio dispone di autorizzazioni generali, equivalenti al ruolo IAM
clouddeploy.developer. Per ridurre al minimo il rischio di escalation dei privilegi, ti consigliamo di modificare queste autorizzazioni impostando il valore minimo richiesto per le tue applicazioni. Per istruzioni, consulta la documentazione RBAC per GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Crea un
RoleBindingche associa il ruolo RBAC nello spazio dei nomi scelto al account di servizio di esecuzione di 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.ioQuesto manifest definisce un binding delle policy RBAC che associa il ruolo
adminal account di servizio di esecuzione.NAMESPACEè lo spazio dei nomi per cui vuoi concedere l'accesso al account di servizio. Il account di servizio non può accedere a nessun altro spazio dei nomi nel cluster.Applica il manifest RBAC al cluster:
kubectl apply -f YAML_NAME