En esta página, se explica cómo administrar usuarios en Distributed Cloud.
Cuando creas un clúster de Distributed Cloud, solo la cuenta de usuario que usaste para crear el clúster tiene acceso a él. Para otorgar acceso al clúster a más usuarios, puedes realizar una de las siguientes acciones:
- Otorga los permisos necesarios con el RBAC de Kubernetes
- Usa la puerta de enlace de Connect para acceder al clúster
Otorga los permisos necesarios con el RBAC de Kubernetes
En esta sección, se describe cómo otorgar los permisos que requiere un usuario según sus necesidades comerciales a la cuenta del usuario con el control de acceso basado en roles (RBAC) de Kubernetes. Estos permisos se encuentran encapsulados en varios roles. Después de otorgar el rol adecuado a una cuenta de usuario, puedes agregar esa cuenta al clúster de Distributed Cloud de destino.
Distributed Cloud no admite grupos de Identity and Access Management ni proveedores de identidad de terceros para usarlos con el RBAC de Kubernetes en clústeres de Distributed Cloud.
Debes usar los siguientes recursos de Kubernetes para otorgar roles a los usuarios:
ClusterRole: Te permite aplicar un conjunto de permisos a cualquier espacio de nombres del clúster y también otorga acceso a los recursos de todo el clúster.ClusterRoleBinding: Vincula un recursoClusterRolea una cuenta de usuario.Role: Te permite aplicar un conjunto de permisos a un espacio de nombres específico.RoleBinding: Vincula un recursoRoleoClusterRolea una cuenta de usuario en un espacio de nombres específico.
Otorga permisos para un administrador del clúster
Cuando creas un clúster de Distributed Cloud, la cuenta de usuario que usas para hacerlo se convierte automáticamente en administrador del clúster. Para otorgar permisos de administrador del clúster a usuarios adicionales, vincula la cuenta de usuario objetivo al rol cluster-admin creando un recurso ClusterRoleBinding y aplícalo al clúster:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de destino.
También puedes usar el siguiente comando de kubectl:
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de destino.
Otorga permisos a un desarrollador de aplicaciones
Para otorgar a un desarrollador de aplicaciones los permisos necesarios para implementar cargas de trabajo en el clúster de destino, haz lo siguiente:
Crea un recurso
Roleque otorgue los permisos para crear y administrar Pods, Services y Deployment en el espacio de nombres de destino, y aplícalo al clúster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Reemplaza lo siguiente:
NAMESPACE: Es el nombre del espacio de nombres de destino.ROLE_NAME: Es un nombre que identifica de forma única este rol.
Crea un recurso
RoleBindingque vincule las cuentas de usuario objetivo al rol que creaste en el paso anterior y aplícalo al clúster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME kind: User name: ACCOUNT_NAME roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.NAMESPACE: Es el nombre del espacio de nombres de destino.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de destino.ROLE_NAME: Es el nombre del rol de destino.
Otorga permisos para un agente de servicio de Cloud Build
Para otorgar a un agente de servicio de Cloud Build los permisos necesarios para implementar cargas de trabajo en el clúster de destino, haz lo siguiente:
Crea un recurso
Roleque otorgue los permisos para crear y administrar Pods, Services y Deployment en el espacio de nombres de destino, y aplícalo al clúster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Reemplaza lo siguiente:
NAMESPACE: Es el nombre del espacio de nombres de destino.ROLE_NAME: Es un nombre que identifica de forma única este rol.
Crea un recurso
RoleBindingque vincule la cuenta de agente de servicio de Cloud Build de destino al rol que creaste en el paso anterior y aplícalo al clúster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: PROJECT_ID@cloudbuild.gserviceaccount.com roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.NAMESPACE: Es el nombre del espacio de nombres de destino.PROJECT_ID: Es el ID del proyecto Google Cloud de destino.ROLE_NAME: Es el nombre del rol de destino.
Si necesitas otorgar permisos al agente de servicio de Cloud Build para implementar y administrar cargas de trabajo en todos los espacios de nombres del clúster de destino, crea un recurso ClusterRole y un recurso ClusterRoleBinding en lugar de los recursos Role y RoleBinding.
Otorga permisos para ver la información del clúster
Para otorgar los permisos necesarios para ver información detallada sobre el clúster en la consola de Google Cloud , haz lo siguiente:
Crea un recurso de
ClusterRoleque permita que el agente de Connect suplante al usuario que necesita ver la información del clúster en la consola de Google Cloud :apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
Reemplaza lo siguiente:
ROLE_NAME: Es el nombre del rol de destino.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de destino.
Crea un recurso
ClusterRoleBindingque vincule la cuenta del agente de servicio de Connect Agent al rol que creaste en el paso anterior y aplícalo al clúster:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: ServiceAccount name: ACCOUNT_NAME roleRef: kind: ClusterRole name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de servicio de destino.ROLE_NAME: Es el nombre del rol de destino.
Debes crear un par de recursos ClusterRole y ClusterRoleBinding independientes para cada usuario afectado.
También puedes usar la herramienta de línea de comandos de kubectl para otorgar los permisos necesarios para ver la información del clúster de la siguiente manera:
Crea un recurso de
ClusterRoleque permita que el agente de Connect suplante al usuario que necesita ver la información del clúster en la consola de Google Cloud :kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
Reemplaza lo siguiente:
ROLE_NAME: Es el nombre del rol de destino.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de servicio de destino.
Crea un recurso
ClusterRoleBindingque vincule la cuenta del agente de servicio de Connect Agent al rol que creaste en el paso anterior y aplícalo al clúster:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
Reemplaza lo siguiente:
BINDING_NAME: Es un nombre que identifica de forma única esta vinculación de rol.ACCOUNT_NAME: Es el nombre de la cuenta de usuario de servicio de destino.ROLE_NAME: Es el nombre del rol de destino.
Usa la puerta de enlace de Connect para acceder a los clústeres de Distributed Cloud
Tienes la opción de usar la puerta de enlace de Connect para acceder a tus clústeres de Distributed Cloud. Un usuario de la puerta de enlace de Connect necesita uno o más de los siguientes roles según sus requisitos comerciales:
- Administrador de Connect Gateway (
roles/gkehub.gatewayAdmin): Otorga acceso a la API de Connect Gateway. Esto permite el uso de la herramienta de línea de comandos dekubectlpara administrar el clúster. - Editor de Gateway (
roles/gkehub.gatewayEditor): Otorga acceso de lectura y escritura al clúster. - Lector de puerta de enlace de Connect (
roles/gkehub.gatewayReader): Otorga acceso de solo lectura al clúster. - Visualizador de GKE Hub (
roles/gkehub.viewer): Otorga la capacidad de recuperar archivoskubeconfigdel clúster.
Para obtener más información sobre el uso de la puerta de enlace de Connect, consulta lo siguiente: