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.yaml
con el siguiente contenido:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Aplica 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_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.Confirma que
pubsub-topic-service-account
no puede crear recursos dePubSubTopic
verificando 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
ClusterRole
que permita crear temas de Pub/Sub.ClusterRole solo puede gestionar recursos que tengan valores especificados en
rules.apiGroups
yrules.resources
. Para encontrar los valores deapiGroups
yresources
, consulta la referencia de tus recursos.Crea un archivo llamado
pubsub-topic-editor-role.yaml
con 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 - delete
Aplica
pubsub-topic-editor.yaml
para crear elClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACE
por 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.yaml
con 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-editor
Aplica
pubsub-topic-editor-rolebinding.yaml
a tu clúster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.Confirma que
pubsub-topic-service-account
tiene permiso para crear recursos dePubSubTopic
comprobando 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.yaml
con el siguiente contenido:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Aplica
pubsub-topic-sample.yaml
conkubectl
:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.Crea un archivo llamado
iampolicymember.yaml
con el siguiente contenido y sustituyeEMAIL_ADDRESS
por 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_NAMESPACE
por 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_ID
por 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 una 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.