Administra usuarios de Distributed Cloud

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

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 recurso ClusterRole a una cuenta de usuario.
  • Role: Te permite aplicar un conjunto de permisos a un espacio de nombres específico.
  • RoleBinding: Vincula un recurso Role o ClusterRole a 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:

  1. Crea un recurso Role que 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.
  2. Crea un recurso RoleBinding que 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:

  1. Crea un recurso Role que 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.
  2. Crea un recurso RoleBinding que 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:

  1. Crea un recurso de ClusterRole que 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.
  2. Crea un recurso ClusterRoleBinding que 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:

  1. Crea un recurso de ClusterRole que 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.
  2. Crea un recurso ClusterRoleBinding que 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 de kubectl para 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 archivos kubeconfig del clúster.

Para obtener más información sobre el uso de la puerta de enlace de Connect, consulta lo siguiente: