Cómo otorgar y revocar el acceso

Cada sujeto (un usuario o un grupo) sigue un proceso de dos pasos para obtener acceso al servidor de la API de Management y al clúster de Kubernetes:

  • Acceso al servidor de la API de Management: Otorga a un sujeto permisos en el servidor de la API de Management con ClusterRoleBinding o RoleBinding a un ClusterRole predefinido.

  • Acceso al clúster de Kubernetes: Otorga acceso específico del espacio de nombres o acceso en todo el clúster.

    • Para el acceso específico del espacio de nombres: Para otorgar acceso al espacio de nombres de un proyecto específico dentro del clúster, crea un ProjectRole y el ProjectRoleBinding correspondiente. Este proceso propaga un Kubernetes Role y RoleBinding a un Kubernetes Namespace en el clúster, que corresponde al Project con el que se asocian ProjectRole y ProjectRoleBinding.

    • Para el acceso en todo el clúster: Para otorgar acceso a todos los espacios de nombres dentro del clúster, crea un OrganizationRole y el OrganizationRoleBinding correspondiente. Este proceso propaga un Kubernetes ClusterRole y ClusterRoleBinding a todo el clúster de Kubernetes.

Esta página está destinada a públicos dentro del grupo de administradores de la plataforma que administran permisos dentro de su organización.

Tanto el administrador de IAM de la organización como el administrador de IAM del proyecto pueden crear más funciones y vinculaciones de funciones del proyecto para otorgar permisos adicionales específicos del proyecto. Sin embargo, los administradores de IAM de la organización pueden crear funciones y vinculaciones de funciones del proyecto para cualquier proyecto. Por otro lado, los administradores de IAM del proyecto solo pueden crear funciones y vinculaciones de funciones del proyecto para los proyectos a los que tienen permiso para acceder.

Antes de comenzar

Antes de administrar las vinculaciones de funciones o revocar el acceso, debes solicitar los permisos necesarios y preparar tu entorno. Las funciones específicas requeridas dependen de si administras las vinculaciones de funciones o revocas el acceso del usuario.

Solicita funciones de IAM

Comunícate con tu administrador de IAM de la organización para solicitar las funciones según las tareas que necesites realizar:

  • Administrador de IAM de la organización (organization-iam-admin): Crea, actualiza y borra vinculaciones de funciones a nivel de la organización y del proyecto.
  • Administrador de sesiones de la organización (org-session-admin): Revoca las sesiones activas y el acceso de un usuario dentro de una zona específica.

Prepara el entorno

Para usar las herramientas de línea de comandos para administrar las vinculaciones de funciones o revocar el acceso, completa la siguiente configuración.

Configura las vinculaciones de funciones

Puedes configurar vinculaciones de funciones que les den a los miembros del equipo acceso a los recursos a nivel de la organización o del proyecto.

Para obtener los permisos que necesitas para configurar las vinculaciones de funciones, pídele a tu administrador de IAM de la organización que te otorgue la función de administrador de IAM de la organización.

Para asignar una función a un miembro autorizado, sigue estos pasos:

Console

  1. Accede a la consola de GDC.
  2. Haz clic en Seleccionar proyecto para seleccionar una organización o un proyecto.
    • Para configurar vinculaciones de funciones para una organización, selecciona una organización.
    • Para configurar vinculaciones de funciones para un proyecto, selecciona un proyecto.
  3. En el menú de navegación, haz clic en Identidad y acceso > Acceso.
  4. Haz clic en Agregar miembro.
  5. En la lista Proveedor de identidad, selecciona un proveedor de identidad.
  6. Elige si deseas agregar usuarios o grupos individuales.
  7. En el campo Nombre de usuario o alias del grupo , ingresa el nombre de usuario, la dirección de correo electrónico o el alias.
  8. En la lista Función, selecciona la función que deseas asignar al usuario o grupo, como Visualizador de la organización a nivel de la organización o Creador del proyecto a nivel del proyecto.
  9. Haz clic en Agregar.

El miembro aparece en la lista Miembro autorizado.

gdcloud

  1. Asegúrate de tener instalada la CLI de gdcloud.

  2. Accede con el comando gdcloud auth login para autenticarte con tu proveedor de identidad. Para obtener más información, consulta la autenticación de la CLI de gdcloud.

  3. Configura las vinculaciones de funciones.

    • Configura las vinculaciones de funciones para una organización:

      gdcloud organizations add-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Reemplaza las siguientes variables:

      • USER_ACCOUNT: La cuenta de usuario a la que deseas otorgar la función. Esta marca acepta una dirección de correo electrónico del usuario con el prefijo del proveedor de identidad (user:idpprefix-user@example.com) o un nombre de cuenta de servicio con el proyecto de la cuenta de servicio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: el ClusterRole, Role o OrganizationRole para el que configuras la vinculación de funciones.
      • ROLE: El nombre de la función predefinida o personalizada que deseas asignar al usuario (como project-creator).
    • Configura las vinculaciones de funciones para un proyecto:

      gdcloud projects add-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Reemplaza las siguientes variables:

      • PROJECT: El nombre del proyecto para el que configuras la vinculación de funciones.
      • USER_ACCOUNT: La cuenta de usuario a la que deseas otorgar la función. Esta marca acepta una dirección de correo electrónico del usuario con el prefijo del proveedor de identidad (user:idpprefix-user@example.com) o un nombre de cuenta de servicio con el proyecto de la cuenta de servicio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: el Role o ProjectRole para el que configuras la vinculación de funciones.
      • ROLE: El nombre de la función predefinida o personalizada que deseas asignar al usuario (como project-viewer).

API

  1. Exporta la credencial de usuario que usas:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporta la cuenta de usuario para la que deseas asignar la función, incluido el prefijo del proveedor de identidad (como idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Exporta el nombre de la función que necesita el usuario, como project-creator. Consulta Definiciones de funciones para obtener detalles sobre la función.

    export ROLE_NAME=ROLE_NAME
    
  4. Asigna un usuario a un ClusterRole, Role, ProjectRole, o OrganizationRole:

    • Asigna un usuario a un ClusterRole:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME}
      

      En los casos en que un ClusterRole requiera un RoleBinding en lugar de un ClusterRoleBinding, consulta las Definiciones de funciones para averiguar qué tipo de vinculación necesita la función y crea un RoleBinding en el espacio de nombres gpc-system en su lugar:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-system
      
    • Asigna un usuario a un Role:

      1. Exporta el espacio de nombres en el que se debe crear la vinculación:

        export BINDING_NAMESPACE=BINDING_NAMESPACE
        
      2. Ejecuta los siguientes comandos para crear un RoleBinding:

        kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
        rolebinding ${USERNAME}-${ROLE_NAME}-binding \
        --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
        
    • Asigna un usuario a un ProjectRole:

      1. Crea un archivo projectrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: ProjectRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: PROJECT_NAME
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: ProjectRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: USERNAME
        

        Reemplaza lo siguiente:

        • BINDING_NAME: Un nombre para la vinculación que el usuario puede personalizar (como user-project-creator-binding).
        • PROJECT_NAME: El nombre del proyecto al que le otorgas la función.
        • ROLE_NAME: El nombre del ProjectRole que le asignas al usuario.
        • USER_KIND: El tipo de usuario, que puede ser User, Group o ServiceAccount.
        • USERNAME: La dirección de correo electrónico del usuario para la que asignas la función, incluido el prefijo del proveedor de identidad (como idpprefix-paul@example.com). Debe coincidir con el USERNAME exportado.
      2. Aplica el archivo projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Asigna un usuario a un OrganizationRole:

      1. Crea un archivo organizationrolebinding.yaml:

        apiVersion: resourcemanager.gdc.goog/v1
        kind: OrganizationRoleBinding
        metadata:
          name: BINDING_NAME
          namespace: gpc-system
        spec:
          roleRef:
            apiGroup: resourcemanager.gdc.goog
            kind: OrganizationRole
            name: ROLE_NAME
          subjects:
          - apiGroup: rbac.authorization.k8s.io
            kind: USER_KIND
            name: USERNAME
        

        Reemplaza lo siguiente:

        • BINDING_NAME: Un nombre para la vinculación que el usuario puede personalizar (como user-organization-creator-binding).
        • ROLE_NAME: El nombre del OrganizationRole que le asignas al usuario.
        • USER_KIND: El tipo de usuario, que puede ser User, Group o ServiceAccount.
        • USERNAME: La dirección de correo electrónico del usuario para la que asignas la función, incluido el prefijo del proveedor de identidad (como idpprefix-paul@example.com). Debe coincidir con el USERNAME exportado.
      2. Aplica el archivo YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Quita vinculaciones de funciones

Cuando ya no se requiera el acceso, quita un miembro y sus funciones, permisos y acceso asociados.

Para quitar miembros, sigue estos pasos:

Console

  1. Accede a la consola de GDC.
  2. En el menú de navegación, haz clic en Identidad y acceso > Acceso.
  3. En la lista Miembros autorizados, selecciona un miembro.
  4. Haz clic en Quitar miembro.
  5. Cuando se te solicite, haz clic en Quitar miembro para confirmar.

gdcloud

  1. Asegúrate de tener instalada la CLI de gdcloud.

  2. Accede con el comando gdcloud auth login para autenticarte con tu proveedor de identidad. Para obtener más información, consulta la autenticación de la CLI de gdcloud.

  3. Quita las vinculaciones de funciones.

    • Quita las vinculaciones de funciones para una organización:

      gdcloud organizations remove-iam-policy-binding root \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Reemplaza las siguientes variables:

      • USER_ACCOUNT: La cuenta de usuario de la que deseas quitar la función. Esta marca acepta una dirección de correo electrónico del usuario con el prefijo del proveedor de identidad (user:idpprefix-user@example.com) o un nombre de cuenta de servicio con el proyecto de la cuenta de servicio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: el ClusterRole, Role o OrganizationRole para el que quitas la vinculación de funciones.
      • ROLE: El nombre de la función predefinida o personalizada que deseas quitar de la cuenta de usuario (como project-creator).
    • Quita las vinculaciones de funciones para un proyecto:

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Reemplaza las siguientes variables:

      • PROJECT: El nombre del proyecto del que quitas la vinculación de funciones.
      • USER_ACCOUNT: La cuenta de usuario de la que deseas quitar la función. Esta marca acepta una dirección de correo electrónico del usuario con el prefijo del proveedor de identidad (user:idpprefix-user@example.com) o un nombre de cuenta de servicio con el proyecto de la cuenta de servicio (serviceAccount:projectName:serviceAccountName).
      • ROLE_TYPE: el Role o ProjectRole para el que quitas la vinculación de funciones.
      • ROLE: El nombre de la función predefinida o personalizada que deseas quitar de la cuenta de usuario (como project-viewer).

API

  1. Exporta la credencial de usuario que usas:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporta la cuenta de usuario de la que deseas quitar la función, incluido el prefijo del proveedor de identidad (como idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Exporta el espacio de nombres en el que se quita la vinculación:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    
  4. Borra el ClusterRoleBinding, RoleBinding, ProjectRoleBinding, o OrganizationRoleBinding para revocar el permiso otorgado a la cuenta de usuario:

    • Quita el ClusterRoleBinding de una cuenta de usuario:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Quita el RoleBinding de una cuenta de usuario:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Quita el ProjectRoleBinding de una cuenta de usuario:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Quita el OrganizationRoleBinding de una cuenta de usuario:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete organizationrolebinding ${USERNAME}-pa \
      --namespace=gpc-system
      

Revoca el acceso del usuario

Si un miembro abandona tu organización o equipo, puedes revocar su acceso al dispositivo aislado de Google Distributed Cloud (GDC). Revocar el acceso de un usuario lo desconecta del dispositivo aislado de GDC y quita sus funciones y permisos. También puedes enumerar la actividad y las sesiones del usuario desde la hora de inicio y finalización.

Para revocar el acceso de un usuario, haz lo siguiente:

  1. Obtén los permisos que necesitas para revocar usuarios. Pídele a tu administrador de IAM de la organización que te otorgue la función de administrador de sesiones de la organización (org-session-admin).

  2. Revoca el acceso del usuario:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Reemplaza USER_EMAIL por el correo electrónico del usuario para revocar el acceso.

    Después de ejecutar el comando, verás un resultado similar al siguiente. En este ejemplo, se revoca el acceso del usuario ariel@example.com:

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    En este ejemplo, la variable NUMBER hace referencia a la cantidad de sesiones activas que tenía el usuario.

  3. Para confirmar que revocaste el acceso del usuario, vuelve a ejecutar el comando gdcloud admin auth revoke. Si la operación se realiza correctamente, verás lo siguiente:

    No sessions found for account: ariel@example.com
    

Enumera todos los usuarios revocados

Para ver todos los usuarios revocados y su actividad y sesiones, haz lo siguiente:

  • Enumera todos los usuarios revocados desde la hora de inicio y finalización:

    gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"
    

    Si la operación se realiza correctamente, verás un resultado similar al siguiente:

    account,identity_provider,creation_time,expiration_time
    ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52