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, la red de tu proyecto plano de control pueden administrarse con identidades que usan Kubernetes Control de acceso basado en roles (RBAC). 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 la administración de identidades y accesos.
Antes de comenzar
Para completar los pasos en esta página, primero 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.yaml
con el siguiente contenido:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Aplica esto para crear la cuenta de servicio
pubsub-topic-service-account
:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACE
con el espacio de nombres que administra Config Connector.Confirma que
pubsub-topic-service-account
no puedes crear recursosPubSubTopic
verificando 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
ClusterRole
que permita la creación de temas Pub/Sub.ClusterRole solo puede administrar recursos que tengan valores especificados en
rules.apiGroups
yrules.resources
. Si deseas encontrar valores paraapiGroups
yresources
, consulta la referencia de los recursos.Crea un archivo llamado
pubsub-topic-editor-role.yaml
con 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 - delete
Aplica
pubsub-topic-editor.yaml
para crear elClusterRole
:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACE
con 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.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
al clúster.kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Reemplaza
CC_NAMESPACE
con el espacio de nombres que administra Config Connector.Confirma que
pubsub-topic-service-account
tienes permiso para crear recursosPubSubTopic
confirmando 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 <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>
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.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
Reemplaza
CC_NAMESPACE
con el espacio de nombres que administra Config Connector.Crea un archivo llamado
iampolicymember.yaml
con el siguiente contenido y reemplazaEMAIL_ADDRESS
por 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_NAMESPACE
con 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_ID
por el ID del 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
.
Limpieza
Usa kubectl delete
para borrar el tema Pub/Sub y IAMPolicyMember de Google Cloud Project.
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 manera segura a los recursos de Google Cloud.