Proteger el acceso a los recursos con IAM
Los usuarios y las cuentas de servicio de Kubernetes necesitan permisos para gestionar recursos de Config Connector. Con Config Connector, el plano de control de tu proyecto se puede gestionar mediante identidades que usen el control de acceso basado en roles (RBAC) de Kubernetes. También puedes consultar las políticas de gestión de identidades y accesos (IAM).
Los recursos que pueden hacer referencia a IAMPolicy y IAMPolicyMember se indican en la referencia de recursos. Estos recursos tienen la propiedad "Can Be Referenced by IAMPolicy/IAMPolicyMember".
En este tema se explica cómo proteger el acceso a los Google Cloud recursos mediante Gestión de Identidades y Accesos.
Antes de empezar
Instala Config Connector en tu clúster.
Proteger el acceso al plano de control con RBAC
En este ejemplo, crearás una cuenta de servicio y le concederás permisos para gestionar un PubSubTopic. Esta cuenta de servicio no puede gestionar 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 este paso para crear la cuenta de servicio de
pubsub-topic-service-account:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACEpor el espacio de nombres desde el que Config Connector gestiona los recursos.Confirma que
pubsub-topic-service-accountno puede crear recursos dePubSubTopicverificando que el resultado 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 crear temas de Pub/Sub.ClusterRole solo puede gestionar recursos que tengan valores especificados en
rules.apiGroupsyrules.resources. Para encontrar los valores deapiGroupsyresources, consulta la referencia de tus recursos.Crea un archivo llamado
pubsub-topic-editor-role.yamlcon el siguiente contenido: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
Sustituye
CC_NAMESPACEpor el espacio de nombres desde el que Config Connector gestiona los recursos.A continuación, crea un RoleBinding entre el ClusterRole y tu 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.yamla tu clúster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACEpor el espacio de nombres desde el que Config Connector gestiona los recursos.Confirma que
pubsub-topic-service-accounttiene permiso para crear recursosPubSubTopiccomprobando que el resultado del siguiente comando esyes:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Eliminar los recursos utilizados
Usa kubectl delete para quitar la cuenta de servicio, el rol de gestión de identidades y accesos y 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
Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.
Proteger el plano de datos con políticas de gestión de identidades y accesos
En este ejemplo, usas los permisos concedidos anteriormente 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
Sustituye
CC_NAMESPACEpor el espacio de nombres desde el que Config Connector gestiona los recursos.Crea un archivo llamado
iampolicymember.yamlcon el siguiente contenido y sustituyeEMAIL_ADDRESSpor la dirección de correo de tu Google Cloud cuenta: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 el
iampolicymember.yaml.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACEpor el espacio de nombres desde el que Config Connector gestiona los recursos.Confirma que la política se ha aplicado a Google Cloud ejecutando este comando y buscando tu dirección de correo en el resultado. Sustituye
PROJECT_IDpor el ID de tu proyecto:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
Ahora, el acceso a tus temas de Pub/Sub está protegido con un IAMPolicyMember.
Eliminar los recursos utilizados
Usa kubectl delete para quitar el tema de Pub/Sub y el elemento IAMPolicyMember de tu Google Cloud proyecto.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Siguientes pasos
Usa Secretos para transferir información de forma segura a los Google Cloud recursos.