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
oRoleBinding
a unClusterRole
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 elProjectRoleBinding
correspondiente. Este proceso propaga unRole
y unRoleBinding
de Kubernetes a unNamespace
de Kubernetes en el clúster, que corresponde alProject
con el que se asocian elProjectRole
y elProjectRoleBinding
.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 unOrganizationRoleBinding
correspondiente. Este proceso propaga unClusterRole
y unClusterRoleBinding
de Kubernetes a todo el clúster de Kubernetes.
Los arquetipos (IO, PA, AO) no son roles, sino colecciones de roles de usuario asignados a permisos específicos y asignados a usuarios individuales.
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 de proyecto para cualquier proyecto. Por otro lado, los administradores de IAM de proyectos solo pueden crear roles y vinculaciones de roles de proyectos para los proyectos a los que tienen permiso de acceso.
Configura vinculaciones de roles
Puedes configurar vinculaciones de roles 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 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
- Accede a la consola de GDC.
- Haz clic en Seleccionar proyecto para seleccionar 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.
- 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 quieres agregar usuarios individuales o grupos.
- 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.
- 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 proyecto a nivel del proyecto.
- Haz clic en Agregar.
El miembro aparecerá en la lista Miembro autorizado.
gdcloud
Asegúrate de tener instalada la CLI de gcloud.
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.Configura las vinculaciones de roles.
Configura 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 elClusterRole
,Role
oOrganizationRole
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 elRole
o elProjectRole
para el que configuras la vinculación de rol.ROLE
: Es el nombre del rol predefinido o personalizado que deseas asignar al usuario (por ejemplo,project-viewer
).
API
Exporta la credencial de usuario que usas:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
Exporta la cuenta de usuario a la que deseas asignar el rol, incluido el prefijo del proveedor de identidad (como
idpprefix-paul@example.com
):export USERNAME=IDP_PREFIX-USER_EMAIL
Exporta el nombre del rol que necesita el usuario, como
project-creator
. Consulta Definiciones de roles para obtener detalles sobre el rol.export ROLE_NAME=ROLE_NAME
Asigna 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
ClusterRole
requiere unRoleBinding
en lugar de unClusterRoleBinding
, consulta las definiciones de roles para averiguar qué tipo de vinculación necesita el rol y crear un RoleBinding en el espacio de nombresgpc-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
:Exporta el espacio de nombres en el que se debe crear la vinculación:
export BINDING_NAMESPACE=BINDING_NAMESPACE
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
: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
: Es un nombre para la vinculación que el usuario puede personalizar (comouser-project-creator-binding
).PROJECT_NAME
: Es el nombre del proyecto al que le otorgas el rol.ROLE_NAME
: Es el nombre delProjectRole
que le asignas al usuario.USER_KIND
: Es el tipo de usuario, que puede serUser
,Group
oServiceAccount
.USERNAME
: Es la dirección de correo electrónico del usuario al que le asignas el rol, incluido el prefijo del proveedor de identidad (comoidpprefix-paul@example.com
). Debe coincidir con elUSERNAME
exportado.
Aplica el archivo
projectrolebinding.yaml
:kubectl create -f projectrolebinding.yaml
Sigue estos pasos para asignar 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: USERNAME
Reemplaza lo siguiente:
BINDING_NAME
: Es un nombre para la vinculación que el usuario puede personalizar (comouser-organization-creator-binding
).ROLE_NAME
: Es el nombre delOrganizationRole
que le asignas al usuario.USER_KIND
: Es el tipo de usuario, que puede serUser
,Group
oServiceAccount
.USERNAME
: Es la dirección de correo electrónico del usuario al que le asignas el rol, incluido el prefijo del proveedor de identidad (comoidpprefix-paul@example.com
). Debe coincidir con elUSERNAME
exportado.
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
- 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 gcloud.
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.Quita las 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 elClusterRole
,Role
oOrganizationRole
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 elRole
oProjectRole
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
Exporta la credencial de usuario que usas:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
Exporta la cuenta de usuario de la que deseas quitar el rol, incluido el prefijo del proveedor de identidad (como
idpprefix-paul@example.com
):export USERNAME=IDP_PREFIX-USER_EMAIL
Exporta el espacio de nombres en el que se quita la vinculación:
export BINDING_NAMESPACE=BINDING_NAMESPACE
Borra
ClusterRoleBinding
,RoleBinding
,ProjectRoleBinding
oOrganizationRoleBinding
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 del usuario
Si un miembro abandona tu organización o equipo, puedes revocar su acceso al dispositivo aislado de Google Distributed Cloud (GDC). Cuando se revoca el acceso de un usuario, se cierra su sesión en el dispositivo aislado de GDC y se quitan 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:
Obtén los permisos que necesitas para revocar usuarios. Solicita 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
).Para revocar el acceso del usuario, sigue estos pasos:
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.
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, 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