Gli utenti e gli account di servizio Kubernetes devono avere le autorizzazioni per gestire le risorse Config Connector. Con Config Connector, il piano di controllo del progetto può essere gestito da identità che utilizzano il controllo dell'accesso basato sui ruoli di Kubernetes. Puoi anche fare riferimento ai criteri di gestione di identità e accessi (IAM).
Le risorse che possono fare riferimento a IAMPolicy e IAMPolicyMember sono elencate nella sezione Resource reference. La proprietà di queste risorse può essere utilizzata come "IAMPolicy/IAMPolicyMember".
Questo argomento spiega come proteggere l'accesso alle risorse di Google Cloud utilizzando Identity and Access Management.
Prima di iniziare
Per completare i passaggi descritti in questa pagina, devi prima installare Config Connector nel cluster.
Protezione dell'accesso al piano di controllo con RBAC
In questo esempio, creerai un account di servizio e concederai le autorizzazioni per gestire un PubSubTopic
. Questo account di servizio non può gestire altri tipi di risorse di Config Connector.
Crea un file denominato
pubsub-topic-service-account.yaml
con il seguente contenuto:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Applica questo passaggio per creare l'account di servizio
pubsub-topic-service-account
:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi Config Connector per gestire le risorse.Conferma che
pubsub-topic-service-account
non può crearePubSubTopic
risorse verificando l'output del seguente comando contieneno
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
A questo punto, crea un elemento
ClusterRole
che consenta la creazione di argomenti Pub/Sub.ClusterRole può gestire solo le risorse i cui valori sono specificati in
rules.apiGroups
erules.resources
. Per trovare i valori diapiGroups
eresources
, consulta il riferimento per le risorse.Crea un file denominato
pubsub-topic-editor-role.yaml
con il seguente contenuto:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: pubsub-topic-editor rules: - apiGroups: - pubsub.cnrm.cloud.google.com resources: - pubsubtopics verbs: - get - list - watch - create - update - patch - delete
Applica
pubsub-topic-editor.yaml
per creare ilClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi Config Connector per gestire le risorse.Quindi, crea un RoleBinding tra il ClusterRole e l'account di servizio. Crea un file denominato
pubsub-topic-editor-rolebinding.yaml
con il seguente contenuto:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pubsub-topic-editor-rolebinding. subjects: - kind: ServiceAccount name: pubsub-topic-service-account roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pubsub-topic-editor
Applica
pubsub-topic-editor-rolebinding.yaml
al tuo cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi Config Connector per gestire le risorse.Conferma che l'app
pubsub-topic-service-account
sia autorizzata a creare risorsePubSubTopic
confermando che l'output del seguente comando èyes
:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Pulizia
Utilizza kubectl delete
per rimuovere l'account di servizio, il ruolo IAM e l'associazione dei ruoli.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-editor-role.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-service-account.yaml --namespace <var>CC_NAMESPACE</var>
Sostituisci CC_NAMESPACE
con lo spazio dei nomi Config Connector
per gestire le risorse.
Protezione del piano dati con i criteri IAM
In questo esempio vengono utilizzate le autorizzazioni concesse in precedenza per creare un elemento
PubSubTopic
e limitarne l'accesso con una risorsa IAMPolicyMember
.
Crea un file denominato
pubsub-topic-sample.yaml
con il seguente contenuto:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Applica
pubsub-topic-sample.yaml
conkubectl
:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi Config Connector per gestire le risorse.Crea un file denominato
iampolicymember.yaml
con il seguente contenuto, sostituendoEMAIL_ADDRESS
con l'indirizzo email del tuo account Google Cloud:apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-sample spec: resourceRef: apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic name: pubsubtopic-sample role: roles/pubsub.admin member: "user:EMAIL_ADDRESS"
Applica l'
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi Config Connector per gestire le risorse.Conferma che il criterio sia stato applicato a Google Cloud eseguendo questo comando e cercando il tuo indirizzo email nell'output, sostituendo
PROJECT_ID
con l'ID progetto.gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
Ora l'accesso ai tuoi argomenti Pub/Sub è protetto con un IAMPolicyMember
.
Pulizia
Utilizza kubectl delete
per rimuovere l'argomento Pub/Sub e IAMPolicyMember dal tuo progetto Google Cloud.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Passaggi successivi
Utilizza i Secret per trasmettere in modo sicuro le informazioni alle risorse Google Cloud.