Asegura el acceso a los recursos con IAM
Los usuarios de Kubernetes y las cuentas de servicio necesitan permisos para administrar los recursos de Config Connector. Con Config Connector, el plano de control de tu proyecto se puede administrar con identidades que usan el control de acceso basado en roles (RBAC) de Kubernetes. También puedes hacer referencia a las políticas de Identity and Access Management (IAM).
Los recursos que pueden hacer referencia a IAMPolicy y a IAMPolicyMember se enumeran en la referencia de recursos. Estos recursos tienen la propiedad “Puede ser referenciado por IAMPolicy/IAMPolicyMember”.
En este tema, se explica cómo proteger el acceso a los recursos de Google Cloud con Identity and Access Management.
Antes de comenzar
Instala Config Connector en tu clúster.
Asegura el acceso al plano de control con RBAC
En este ejemplo, creas una cuenta de servicio y le otorgas permisos para administrar un PubSubTopic. Esta cuenta de servicio no puede administrar otros tipos de recursos de Config Connector.
Crea un archivo llamado
pubsub-topic-service-account.yamlcon el siguiente contenido:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: defaultAplica esto para crear la cuenta de servicio
pubsub-topic-service-account:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.Confirma que
pubsub-topic-service-accountno puedes crear recursosPubSubTopicverificando que la salida del siguiente comando contieneno:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
A continuación, crea un
ClusterRoleque permita la creación de temas Pub/Sub.ClusterRole solo puede administrar recursos que tengan valores especificados en
rules.apiGroupsyrules.resources. Si deseas encontrar valores paraapiGroupsyresources, consulta la referencia de los recursos.Crea un archivo llamado
pubsub-topic-editor-role.yamlcon los siguientes contenidos: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 - deleteAplica
pubsub-topic-editor.yamlpara crear elClusterRole:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.A continuación, crea una función RoleBinding entre ClusterRole y la cuenta de servicio. Crea un archivo llamado
pubsub-topic-editor-rolebinding.yamlcon el siguiente contenido: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-editorAplica
pubsub-topic-editor-rolebinding.yamlal clúster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.Confirma que
pubsub-topic-service-accounttienes permiso para crear recursosPubSubTopicconfirmando que la salida del siguiente comando esyes:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Limpieza
Usa kubectl delete para quitar la cuenta de servicio, la función de IAM y la 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
Reemplaza CC_NAMESPACE con el espacio de nombres que administra Config Connector.
Asegura el plano de datos con las políticas de IAM
En este ejemplo, usa los permisos otorgados antes para crear un PubSubTopic y limitar el acceso a él con un recurso IAMPolicyMember.
Crea un archivo llamado
pubsub-topic-sample.yamlcon el siguiente contenido:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sampleAplica
pubsub-topic-sample.yamlconkubectl:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.Crea un archivo llamado
iampolicymember.yamlcon el siguiente contenido y reemplazaEMAIL_ADDRESSpor la dirección de correo electrónico de tu cuenta de 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"Aplica
iampolicymember.yaml.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.Para confirmar que la política se aplicó a Google Cloud , ejecuta este comando y busca tu dirección de correo electrónico en el resultado. Reemplaza
PROJECT_IDpor el ID de tu proyecto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
El acceso a los temas Pub/Sub ahora está protegido con un IAMPolicyMember.
Realiza una limpieza
Usa kubectl delete para borrar el tema de Pub/Sub y IAMPolicyMember de tu proyecto Google Cloud .
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
¿Qué sigue?
Usa Secrets para pasar información de forma segura a los recursos de Google Cloud .