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
ClusterRoleBindingoRoleBindinga unClusterRolepredefinido.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
ProjectRoley elProjectRoleBindingcorrespondiente. Este proceso propaga un KubernetesRoleyRoleBindinga un KubernetesNamespaceen el clúster, que corresponde alProjectcon el que se asocianProjectRoleyProjectRoleBinding.Para el acceso en todo el clúster: Para otorgar acceso a todos los espacios de nombres dentro del clúster, crea un
OrganizationRoley elOrganizationRoleBindingcorrespondiente. Este proceso propaga un KubernetesClusterRoleyClusterRoleBindinga 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.
- Descarga e instala la CLI de gdcloud, si aún no lo hiciste.
- Para usar la API con
kubectl, se requiere una configuración adicional:
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
- Accede a la consola de GDC.
- 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.
- En el menú de navegación, haz clic en Identidad y acceso > Acceso.
- Haz clic en Agregar miembro.
- En la lista Proveedor de identidad, selecciona un proveedor de identidad.
- Elige si deseas agregar usuarios o grupos individuales.
- 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.
- 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.
- Haz clic en Agregar.
El miembro aparece en la lista Miembro autorizado.
gdcloud
Asegúrate de tener instalada la CLI de gdcloud.
Accede con el comando
gdcloud auth loginpara autenticarte con tu proveedor de identidad. Para obtener más información, consulta la autenticación de la CLI de gdcloud.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/ROLEReemplaza 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: elClusterRole,RoleoOrganizationRolepara el que configuras la vinculación de funciones.ROLE: El nombre de la función predefinida o personalizada que deseas asignar al usuario (comoproject-creator).
Configura las vinculaciones de funciones para un proyecto:
gdcloud projects add-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLEReemplaza 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: elRoleoProjectRolepara el que configuras la vinculación de funciones.ROLE: El nombre de la función predefinida o personalizada que deseas asignar al usuario (comoproject-viewer).
API
Exporta la credencial de usuario que usas:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporta 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_EMAILExporta 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_NAMEAsigna un usuario a un
ClusterRole,Role,ProjectRole, oOrganizationRole: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
ClusterRolerequiera unRoleBindingen lugar de unClusterRoleBinding, consulta las Definiciones de funciones para averiguar qué tipo de vinculación necesita la función y crea un RoleBinding en el espacio de nombresgpc-systemen su lugar:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-systemAsigna un usuario a un
Role:Exporta el espacio de nombres en el que se debe crear la vinculación:
export BINDING_NAMESPACE=BINDING_NAMESPACEEjecuta 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: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: USERNAMEReemplaza lo siguiente:
BINDING_NAME: Un nombre para la vinculación que el usuario puede personalizar (comouser-project-creator-binding).PROJECT_NAME: El nombre del proyecto al que le otorgas la función.ROLE_NAME: El nombre delProjectRoleque le asignas al usuario.USER_KIND: El tipo de usuario, que puede serUser,GroupoServiceAccount.USERNAME: La dirección de correo electrónico del usuario para la que asignas la función, incluido el prefijo del proveedor de identidad (comoidpprefix-paul@example.com). Debe coincidir con elUSERNAMEexportado.
Aplica el archivo
projectrolebinding.yaml:kubectl create -f projectrolebinding.yaml
Asigna un usuario a un
OrganizationRole: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: USERNAMEReemplaza lo siguiente:
BINDING_NAME: Un nombre para la vinculación que el usuario puede personalizar (comouser-organization-creator-binding).ROLE_NAME: El nombre delOrganizationRoleque le asignas al usuario.USER_KIND: El tipo de usuario, que puede serUser,GroupoServiceAccount.USERNAME: La dirección de correo electrónico del usuario para la que asignas la función, incluido el prefijo del proveedor de identidad (comoidpprefix-paul@example.com). Debe coincidir con elUSERNAMEexportado.
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
- Accede a la consola de GDC.
- En el menú de navegación, haz clic en Identidad y acceso > Acceso.
- En la lista Miembros autorizados, selecciona un miembro.
- Haz clic en Quitar miembro.
- Cuando se te solicite, haz clic en Quitar miembro para confirmar.
gdcloud
Asegúrate de tener instalada la CLI de gdcloud.
Accede con el comando
gdcloud auth loginpara autenticarte con tu proveedor de identidad. Para obtener más información, consulta la autenticación de la CLI de gdcloud.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/ROLEReemplaza 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: elClusterRole,RoleoOrganizationRolepara 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 (comoproject-creator).
Quita las vinculaciones de funciones para un proyecto:
gdcloud projects remove-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLEReemplaza 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: elRoleoProjectRolepara 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 (comoproject-viewer).
API
Exporta la credencial de usuario que usas:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporta 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_EMAILExporta el espacio de nombres en el que se quita la vinculación:
export BINDING_NAMESPACE=BINDING_NAMESPACEBorra el
ClusterRoleBinding,RoleBinding,ProjectRoleBinding, oOrganizationRoleBindingpara revocar el permiso otorgado a la cuenta de usuario:Quita el
ClusterRoleBindingde una cuenta de usuario:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-paQuita el
RoleBindingde una cuenta de usuario:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Quita el
ProjectRoleBindingde una cuenta de usuario:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Quita el
OrganizationRoleBindingde 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:
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).Revoca el acceso del usuario:
gdcloud admin auth revoke --accounts USER_EMAILReemplaza 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.comEn este ejemplo, la variable NUMBER hace referencia a la cantidad de sesiones activas que tenía el usuario.
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