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 al espacio de nombres o acceso a 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 Role y un RoleBinding de Kubernetes a un Namespace de Kubernetes en el clúster, que corresponde al Project con el que se asocian el ProjectRole y el ProjectRoleBinding.

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

Esta página está destinada a los públicos dentro del grupo de administradores de la plataforma que administran los 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 roles y vinculaciones de roles del proyecto para otorgar permisos adicionales específicos del proyecto. Sin embargo, los administradores de IAM de la organización pueden crear roles y vinculaciones de roles del proyecto para cualquier proyecto. Por otro lado, los administradores de IAM del proyecto solo pueden crear roles y vinculaciones de roles del proyecto para los proyectos a los que tienen permiso de acceso.

Antes de comenzar

Antes de administrar las vinculaciones de roles o revocar el acceso, debes solicitar los permisos necesarios y preparar tu entorno. Los roles específicos necesarios dependen de si administras vinculaciones de roles o revocas el acceso de los usuarios.

Solicita roles de IAM

Comunícate con el administrador de IAM de tu organización para solicitar los roles según las tareas que debas realizar:

  • Administrador de IAM de la organización (organization-iam-admin): Crea, actualiza y borra vinculaciones de roles a nivel de la organización y del proyecto.
  • Administrador de sesión 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 vinculaciones de roles o revocar el acceso, completa la siguiente configuración.

Configura vinculaciones de roles

Puedes configurar vinculaciones de roles que les otorguen 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 roles, pídele al administrador de IAM de la organización que te otorgue el rol de administrador de IAM de la organización.

Para asignar un rol a un miembro autorizado, sigue estos pasos:

Console

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

El miembro aparecerá 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 roles.

    • Sigue estos pasos para configurar vinculaciones de roles para una organización:

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

      Reemplaza las siguientes variables:

      • USER_ACCOUNT: Es la cuenta de usuario a la que deseas otorgar el rol. 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: Es el ClusterRole, Role o OrganizationRole para el que configuras la vinculación del rol.
      • ROLE: Es el nombre del rol predefinido o personalizado que deseas asignar al usuario (por ejemplo, project-creator).
    • Configura vinculaciones de roles para un proyecto:

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

      Reemplaza las siguientes variables:

      • PROJECT: Es el nombre del proyecto para el que configuras la vinculación del rol.
      • USER_ACCOUNT: Es la cuenta de usuario a la que deseas otorgar el rol. 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: Es el Role o ProjectRole para el que configuras la vinculación del rol.
      • ROLE: Es el nombre del rol predefinido o personalizado que deseas asignar al usuario (por ejemplo, project-viewer).

API

  1. Exporta las variables de entorno para la vinculación del rol:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    export USERNAME=IDP_PREFIX-USERNAME
    export ROLE_NAME=ROLE_NAME
    export USER_EMAIL=IDP_PREFIX-USER_EMAIL
    

    Reemplaza lo siguiente:

    • YOUR_IAM_ADMIN_KUBECONFIG: Es la ruta al archivo kubeconfig del administrador de IAM.
    • IDP_PREFIX: Es el prefijo del proveedor de identidad.
    • USERNAME: Es la parte del nombre de usuario de la dirección de correo electrónico del usuario que se encuentra antes del símbolo @ (como paul de paul@example.com).
    • ROLE_NAME: Es el nombre del rol que necesita el usuario (por ejemplo, project-creator). Consulta Definiciones de roles para obtener detalles sobre el rol.
    • USER_EMAIL: Es la dirección de correo electrónico de la cuenta de usuario a la que deseas asignar el rol (por ejemplo, paul@example.com).
  2. Asigna un usuario a un ClusterRole, Role, ProjectRole o OrganizationRole:

    • Sigue estos pasos para asignar un usuario a un ClusterRole:

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

      En los casos en que un ClusterRole requiere un RoleBinding en lugar de un ClusterRoleBinding, consulta las definiciones de roles para averiguar qué tipo de vinculación necesita el rol y crear un RoleBinding en el espacio de nombres gpc-system:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USER_EMAIL} --namespace=gpc-system
      
    • Sigue estos pasos para asignar 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=${USER_EMAIL} --namespace=${BINDING_NAMESPACE}
        
    • Sigue estos pasos para asignar 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: IDP_PREFIX-USER_EMAIL
        

        Reemplaza lo siguiente:

        • BINDING_NAME: Es un nombre para la vinculación que el usuario puede personalizar (como user-project-creator-binding).
        • PROJECT_NAME: Es el nombre del proyecto al que le otorgas el rol.
        • ROLE_NAME: Es el nombre del ProjectRole que le asignas al usuario.
        • USER_KIND: Es el tipo de usuario, que puede ser User, Group o ServiceAccount.
        • IDP_PREFIX: Es el prefijo del proveedor de identidad.
        • USER_EMAIL: Es la dirección de correo electrónico de la cuenta de usuario a la que deseas asignar el rol (por ejemplo, paul@example.com).
      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: IDP_PREFIX-USER_EMAIL
        

        Reemplaza lo siguiente:

        • BINDING_NAME: Es un nombre para la vinculación que el usuario puede personalizar (como user-organization-creator-binding).
        • ROLE_NAME: Es el nombre del OrganizationRole que le asignas al usuario.
        • USER_KIND: Es el tipo de usuario, que puede ser User, Group o ServiceAccount.
        • IDP_PREFIX: Es el prefijo del proveedor de identidad.
        • USER_EMAIL: Es la dirección de correo electrónico de la cuenta de usuario a la que deseas asignar el rol (por ejemplo, paul@example.com).
      2. Aplica el archivo YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Quita vinculaciones de roles

Cuando ya no se requiera el acceso, quita a un miembro y sus roles, 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 Identity and Access > Access.
  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 vinculaciones de roles.

    • Para quitar vinculaciones de roles de una organización, haz lo siguiente:

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

      Reemplaza las siguientes variables:

      • USER_ACCOUNT: Es la cuenta de usuario de la que deseas quitar el rol. 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: Es el ClusterRole, Role o OrganizationRole para el que quitas la vinculación del rol.
      • ROLE: Es el nombre del rol predefinido o personalizado que deseas quitar de la cuenta de usuario (por ejemplo, project-creator).
    • Quita las vinculaciones de roles de un proyecto:

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

      Reemplaza las siguientes variables:

      • PROJECT: Es el nombre del proyecto del que quitarás la vinculación del rol.
      • USER_ACCOUNT: Es la cuenta de usuario de la que deseas quitar el rol. 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: Es el Role o ProjectRole para el que quitas la vinculación del rol.
      • ROLE: Es el nombre del rol predefinido o personalizado que deseas quitar de la cuenta de usuario (por ejemplo, project-viewer).

API

  1. Exporta las variables de entorno para la vinculación del rol:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    export USERNAME=IDP_PREFIX-USERNAME
    export BINDING_NAMESPACE=BINDING_NAMESPACE
    

    Reemplaza lo siguiente:

    • YOUR_IAM_ADMIN_KUBECONFIG: Es la ruta al archivo kubeconfig del administrador de IAM.
    • IDP_PREFIX: Es el prefijo del proveedor de identidad.
    • USERNAME: Es la parte del nombre de usuario de la dirección de correo electrónico del usuario que se encuentra antes del símbolo @ (como paul de paul@example.com).
    • BINDING_NAMESPACE: Es el espacio de nombres en el que se quita la vinculación.
  2. Borra ClusterRoleBinding, RoleBinding, ProjectRoleBinding o OrganizationRoleBinding para revocar el permiso otorgado a la cuenta de usuario:

    • Para quitar el ClusterRoleBinding de una cuenta de usuario, haz lo siguiente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Para quitar el RoleBinding de una cuenta de usuario, haz lo siguiente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Para quitar el ProjectRoleBinding de una cuenta de usuario, haz lo siguiente:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Para quitar el OrganizationRoleBinding de una cuenta de usuario, haz lo siguiente:

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

Cómo revocar el acceso de un usuario

Si un miembro deja 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 roles y permisos. También puedes enumerar la actividad y las sesiones del usuario desde su 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 el acceso de los usuarios. Pídele al administrador de IAM de la organización que te otorgue el rol de administrador de sesión 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 al que se le 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 tuvo el usuario.

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

    No sessions found for account: ariel@example.com
    

Enumera todos los usuarios revocados

Para ver todos los usuarios revocados, así como su actividad y sus sesiones, haz lo siguiente:

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

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

    Si se ejecuta de forma correcta, 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