Conceder 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 Management y al clúster de Kubernetes:

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

  • Acceso al clúster de Kubernetes: concede acceso específico a un espacio de nombres o acceso a todo el clúster.

    • Para acceder a un espacio de nombres específico: para conceder acceso al espacio de nombres de un proyecto específico en el clúster, crea un ProjectRole y un 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 están asociados el ProjectRole y el ProjectRoleBinding.

    • Para obtener acceso a todo el clúster: para conceder acceso a todos los espacios de nombres del clúster, crea un OrganizationRole y un OrganizationRoleBinding correspondiente. Este proceso propaga un ClusterRolede Kubernetes ClusterRoleBinding a todo el clúster de Kubernetes.

Los perfiles (IO, PA y AO) no son roles, sino conjuntos de roles de usuario asignados a permisos específicos y a usuarios concretos.

Tanto el administrador de gestión de identidades y accesos de la organización como el administrador de gestión de identidades y accesos del proyecto pueden crear más roles de proyecto y vinculaciones de roles de proyecto para conceder permisos adicionales específicos del proyecto. Sin embargo, los administradores de gestión de identidades y accesos de la organización pueden crear roles de proyecto y vinculaciones de roles de proyecto para cualquier proyecto. Por otro lado, los administradores de gestión de identidades y accesos de proyectos solo pueden crear roles y enlaces de roles de proyectos para los proyectos a los que tienen permiso de acceso.

Configurar vinculaciones de roles

Puedes configurar enlaces de rol que den acceso a los miembros del equipo a los recursos a nivel de organización o de proyecto.

Para obtener los permisos que necesitas para configurar las vinculaciones de roles, pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de administrador de gestión de identidades y accesos de la organización.

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

Consola

  1. Inicia sesión en la consola de GDC.
  2. Haz clic en Seleccionar proyecto para seleccionar una organización o un proyecto.
    • Para configurar las vinculaciones de roles de una organización, selecciona una organización.
    • Para configurar las vinculaciones de roles de un proyecto, selecciona un proyecto.
  3. En el menú de navegación, haz clic en Identidad y acceso > Acceso.
  4. Haz clic en Añadir miembro.
  5. En la lista Proveedor de identidades, seleccione un proveedor.
  6. Elige si quieres añadir usuarios concretos o grupos.
  7. En el campo Nombre de usuario o alias de grupo, introduce el nombre de usuario, la dirección de correo o el alias.
  8. En la lista Rol, selecciona el rol que quieras asignar al usuario o al grupo (por ejemplo, Lector de la organización a nivel de organización o Creador de proyectos a nivel de proyecto).
  9. Haz clic en Añadir.

El miembro aparecerá en la lista Miembro autorizado.

gdcloud

  1. Asegúrate de que tienes instalada la CLI de gdcloud.

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

  3. Configura las vinculaciones de roles.

    • Configura las asignaciones de roles de una organización:

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

      Sustituye las siguientes variables:

      • USER_ACCOUNT: la cuenta de usuario a la que quieres asignar el rol. Esta marca acepta una dirección de correo de usuario con el prefijo del proveedor de identidades (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 vas a configurar el enlace de rol.
      • ROLE: el nombre del rol predefinido o personalizado que quieras asignar al usuario (por ejemplo, project-creator).
    • Configura las vinculaciones de roles de un proyecto:

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

      Sustituye las siguientes variables:

      • PROJECT: el nombre del proyecto para el que estás configurando la vinculación de roles.
      • USER_ACCOUNT: la cuenta de usuario a la que quieres asignar el rol. Esta marca acepta una dirección de correo de usuario con el prefijo del proveedor de identidades (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 estás configurando el enlace de rol.
      • ROLE: el nombre del rol predefinido o personalizado que quieras asignar al usuario (por ejemplo, project-viewer).

API

  1. Exporta la credencial de usuario que utilices:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporta la cuenta de usuario a la que quieras asignar el rol, incluido el prefijo del proveedor de identidades (por ejemplo, idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. Exporta el nombre del rol que necesita el usuario, como project-creator. Consulta las definiciones de roles para obtener más información sobre el rol.

    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 los que un ClusterRole requiera un RoleBinding en lugar de un ClusterRoleBinding, consulta las definiciones de roles para saber qué tipo de enlace necesita el rol y crea 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=${USERNAME} --namespace=gpc-system
      
    • Asigna un usuario a un Role:

      1. Exporta el espacio de nombres en el que se debe crear el enlace:

        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
        

        Haz los cambios siguientes:

        • BINDING_NAME: nombre de la vinculación que el usuario puede personalizar (por ejemplo, user-project-creator-binding).
        • PROJECT_NAME: el nombre del proyecto al que vas a conceder el rol.
        • ROLE_NAME: El nombre del ProjectRole que vas a asignar al usuario.
        • USER_KIND: el tipo de usuario, que puede ser User, Group o ServiceAccount.
        • USERNAME: la dirección de correo del usuario al que vas a asignar el rol, incluido el prefijo del proveedor de identidades (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
        

        Haz los cambios siguientes:

        • BINDING_NAME: nombre de la vinculación que el usuario puede personalizar (por ejemplo, user-organization-creator-binding).
        • ROLE_NAME: El nombre del OrganizationRole que vas a asignar al usuario.
        • USER_KIND: el tipo de usuario, que puede ser User, Group o ServiceAccount.
        • USERNAME: la dirección de correo del usuario al que vas a asignar el rol, incluido el prefijo del proveedor de identidades (como idpprefix-paul@example.com). Debe coincidir con el USERNAME exportado.
      2. Aplica el archivo YAML organizationrolebinding.yaml:

        kubectl create -f organizationrolebinding.yaml
        

Quitar vinculaciones de roles

Cuando ya no se necesite el acceso, quita al miembro y sus roles, permisos y acceso asociados.

Para quitar miembros, sigue estos pasos:

Consola

  1. Inicia sesión en 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 indique, haz clic en Quitar miembro para confirmar la acción.

gdcloud

  1. Asegúrate de que tienes instalada la CLI de gdcloud.

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

  3. Quitar vinculaciones de roles.

    • Para quitar vinculaciones de roles de una organización, sigue estos pasos:

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

      Sustituye las siguientes variables:

      • USER_ACCOUNT: la cuenta de usuario de la que quieres quitar el rol. Esta marca acepta una dirección de correo de usuario con el prefijo del proveedor de identidades (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 del que vas a quitar el enlace de rol.
      • ROLE: el nombre del rol predefinido o personalizado que quieras quitar de la cuenta de usuario (por ejemplo, project-creator).
    • Para quitar vinculaciones de roles de un proyecto, sigue estos pasos:

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

      Sustituye las siguientes variables:

      • PROJECT: el nombre del proyecto del que quieres quitar la vinculación de roles.
      • USER_ACCOUNT: la cuenta de usuario de la que quieres quitar el rol. Esta marca acepta una dirección de correo de usuario con el prefijo del proveedor de identidades (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 del que quieres quitar el enlace de rol.
      • ROLE: el nombre del rol predefinido o personalizado que quieras quitar de la cuenta de usuario (por ejemplo, project-viewer).

API

  1. Exporta la credencial de usuario que utilices:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporta la cuenta de usuario de la que quieras quitar el rol, incluido el prefijo del proveedor de identidades (por ejemplo, idpprefix-paul@example.com):

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

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

    • Para quitar el ClusterRoleBinding de una cuenta de usuario, sigue estos pasos:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Para quitar el RoleBinding de una cuenta de usuario, sigue estos pasos:

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

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

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

Revocar el acceso de un usuario

Si un miembro abandona tu organización o equipo, puedes revocar su acceso al dispositivo aislado de Google Distributed Cloud (GDC). Si revocas el acceso de un usuario, se cerrará su sesión en el dispositivo aislado de GDC y se eliminarán sus roles y permisos. También puedes consultar la actividad y las sesiones del usuario por hora de inicio y de finalización.

Para revocar el acceso de un usuario, sigue estos pasos:

  1. Obtén los permisos que necesitas para revocar el acceso de los usuarios. Pídele al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de administrador de sesiones de la organización (org-session-admin).

  2. Revoca el acceso del usuario:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Sustituye USER_EMAIL por el correo del usuario al que quieras revocar el acceso.

    Después de ejecutar el comando, verá 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 al número de sesiones activas que ha tenido el usuario.

  3. Confirma que has revocado el acceso del usuario ejecutando de nuevo el comando gdcloud admin auth revoke. Si la acción se realiza correctamente, verá lo siguiente:

    No sessions found for account: ariel@example.com
    

Mostrar todos los usuarios revocados

Para ver todos los usuarios a los que se les ha revocado el acceso, así como su actividad y sus sesiones, haz lo siguiente:

  • Lista de todos los usuarios revocados con sus horas 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