Protezione dell'accesso alle risorse con IAM
Gli utenti e i service account Kubernetes hanno bisogno delle autorizzazioni per gestire le risorse Config Connector. Con Config Connector, il control plane del tuo 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 risorse utilizzando Identity and Access Management. Google Cloud
Prima di iniziare
Installa Config Connector sul cluster.
Proteggere l'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 Config Connector.
Crea un file denominato
pubsub-topic-service-account.yamlcon il seguente contenuto:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: defaultApplica questa procedura per creare l'account di servizio
pubsub-topic-service-account:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.Verifica che
pubsub-topic-service-accountnon possa creare risorsePubSubTopiccontrollando che l'output del seguente comando contengano:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Successivamente, crea un
ClusterRoleche consenta la creazione di argomenti Pub/Sub.ClusterRole può gestire solo le risorse con valori specificati in
rules.apiGroupserules.resources. Per trovare i valori diapiGroupseresources, consulta il riferimento per le tue risorse.Crea un file denominato
pubsub-topic-editor-role.yamlcon 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 - deleteApplica
pubsub-topic-editor.yamlper creareClusterRole:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.Successivamente, crea un RoleBinding tra ClusterRole e il tuo account di servizio. Crea un file denominato
pubsub-topic-editor-rolebinding.yamlcon 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-editorApplica
pubsub-topic-editor-rolebinding.yamlal tuo cluster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.Verifica che
pubsub-topic-service-accountpossa creare risorsePubSubTopicconfermando 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 il service account, il ruolo IAM e
il RoleBinding.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
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.yamlcon i seguenti contenuti:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sampleApplica
pubsub-topic-sample.yamlconkubectl:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACEcon lo spazio dei nomi da cui Config Connector gestisce le risorse.Crea un file denominato
iampolicymember.yamlcon i seguenti contenuti, sostituendoEMAIL_ADDRESScon 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 il
iampolicymember.yaml.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Sostituisci
CC_NAMESPACEcon 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_IDcon il tuo ID progetto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
L'accesso agli argomenti Pub/Sub è ora protetto da un IAMPolicyMember.
Pulizia
Utilizza kubectl delete per rimuovere l'argomento Pub/Sub e 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 Secret per trasmettere informazioni in modo sicuro alle risorse Google Cloud .