Protezione dell'accesso alle risorse con IAM
Gli utenti e gli account di servizio Kubernetes devono disporre delle autorizzazioni per gestire le risorse di Config Connector. Con Config Connector, il piano di controllo del progetto può essere gestito da identità che utilizzano il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes. Puoi anche fare riferimento ai criteri IAM (Identity and Access Management).
Le risorse che possono fare riferimento a IAMPolicy e IAMPolicyMember sono elencate nel riferimento alle risorse. Queste risorse hanno la proprietà "Can Be Referenced by IAMPolicy/IAMPolicyMember".
Questo argomento spiega come proteggere l'accesso alle Google Cloud risorse utilizzando Identity and Access Management.
Prima di iniziare
Per completare i passaggi in questa pagina, installa Config Connector sul cluster.
Protezione dell'accesso al control plane con RBAC
In questo esempio, creerai un account di servizio e gli 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 questa istruzione 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 da cui Config Connector gestisce le risorse.Verifica che
pubsub-topic-service-account
non possa creare risorsePubSubTopic
controllando che l'output del seguente comando contengano
:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Successivamente, crea un
ClusterRole
che consenta la creazione di argomenti Pub/Sub.ClusterRole può gestire solo le risorse con valori specificati in
rules.apiGroups
erules.resources
. Per trovare i valori diapiGroups
eresources
, consulta la documentazione di riferimento per le tue risorse.Crea un file denominato
pubsub-topic-editor-role.yaml
con i seguenti contenuti: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 creareClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi da cui Config Connector gestisce le risorse.Successivamente, crea un RoleBinding tra il ClusterRole e il tuo 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 da cui Config Connector gestisce le risorse.Verifica che
pubsub-topic-service-account
sia autorizzato a creare risorsePubSubTopic
controllando che l'output del seguente comando siayes
: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 la associazione di 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 da cui Config Connector gestisce le risorse.
Protezione del piano dati con i criteri IAM
In questo esempio, utilizzi le autorizzazioni concesse in precedenza per creare un
PubSubTopic
e limitarne l'accesso con una risorsa IAMPolicyMember
.
Crea un file denominato
pubsub-topic-sample.yaml
con i seguenti contenuti: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 da cui Config Connector gestisce le risorse.Crea un file denominato
iampolicymember.yaml
con i seguenti contenuti, sostituendoEMAIL_ADDRESS
con l'indirizzo email del tuo Google Cloud account: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 il
iampolicymember.yaml
.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACE
con lo spazio dei nomi da cui Config Connector gestisce le risorse.Verifica che il criterio sia stato applicato a Google Cloud eseguendo questo comando e cercando il tuo indirizzo email nell'output, sostituendo
PROJECT_ID
con il tuo ID progetto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
L'accesso ai tuoi argomenti Pub/Sub è ora protetto con un IAMPolicyMember
.
Pulizia
Utilizza kubectl delete
per rimuovere l'argomento Pub/Sub e l'elemento IAMPolicyMember
dal tuo Google Cloud progetto.
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 sicurezza le informazioni alle risorse Google Cloud .