De forma predeterminada, las sesiones de la federación de identidades de personal tienen una duración máxima de 12 horas. La duración de sesión extendida permite que las organizaciones configuren sesiones duraderas de hasta 90 días para los clientes de Looker (Google Cloud Core).
Con la duración de sesión extendida, los usuarios de tu personal mantienen una conexión ininterrumpida a Looker (Google Cloud Core) sin necesidad de volver a autenticarse diariamente en tu proveedor de identidad (IdP) externo. La interacción del usuario en Looker (Google Cloud Core) sigue regida por la configuración de la duración de la sesión de Looker (Google Cloud Core). Para mantener la seguridad durante las sesiones extendidas, Google Cloud sincroniza periódicamente los atributos del usuario y las membresías de grupo directamente desde tu proveedor de identidad (IdP) externo en segundo plano.
En este documento, se describe cómo definir políticas de sesión extendida con la API de Access Context Manager con controles de alcance del proyecto, configurar tu proveedor de grupo de personal y administrar vinculaciones activas.
Descripción general
La federación de identidades de personal usa vinculaciones de acceso de Access Context Manager Google Cloud para configurar la duración extendida de la sesión:
- Vinculación de acceso deGoogle Cloud : Los administradores definen una política de duración de la sesión con Access Context Manager que se aplica en toda la organización y en todos los grupos de trabajadores de tu organización. Con el alcance
restricted_project, la política otorga sesiones extendidas de hasta 90 días, lo que solo afecta a las instancias de Looker (Google Cloud Core) que son propiedad de ese proyecto. - Sincronización de atributos en segundo plano:
- OIDC: Se admite con un flujo de código de autorización de OIDC con el permiso
offline_access(con tokens de actualización para actualizar periódicamente los atributos del usuario y las pertenencias a grupos desde tu IdP externo en segundo plano) o a través del aprovisionamiento de SCIM. - SAML: En el caso de los proveedores de SAML, los atributos de usuario y las membresías de grupo se mantienen actualizados con el aprovisionamiento de SCIM.
- OIDC: Se admite con un flujo de código de autorización de OIDC con el permiso
- Protección contra la obsolescencia: Si los atributos del usuario no se pueden actualizar desde el IdP externo en un plazo de 24 horas (por ejemplo, si se desaprovisiona al usuario o se revocan las credenciales en el IdP), Google Cloud se cierra la sesión.
Antes de comenzar
Antes de configurar la duración extendida de la sesión, asegúrate de tener los permisos de Identity and Access Management y las APIs habilitadas necesarios:
Roles y permisos requeridos
Para obtener los permisos que necesitas para configurar la duración extendida de la sesión, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Configura proveedores de grupos de identidades de personal: Administrador de grupos de trabajadores (
roles/iam.workforcePoolAdmin) en el grupo de trabajadores o la organización. - Administrar vinculaciones de acceso a Cloud de Access Context Manager: Administrador de vinculaciones de acceso a Cloud (
roles/accesscontextmanager.gcpAccessAdmin) a nivel de la organización. Este rol proporciona los permisos necesarios para crear, ver, actualizar y borrar vinculaciones de acceso de Access Context Manager.
Habilita las APIs
Habilita las APIs de Access Context Manager y de IAM en tu proyecto:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Limitaciones y requisitos
Antes de configurar la duración extendida de la sesión, revisa los siguientes requisitos y limitaciones:
- Aplicación compatible: La duración extendida de la sesión se aplica exclusivamente a Looker (Google Cloud Core).
- Alcance obligatorio del proyecto (
restricted_project): La configuración de la sesión debe establecerse enscopedAccessSettingscon el alcance del clienterestricted_projectque especifica el proyecto Google Cloud que posee la instancia de Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}).- La política de ESL solo afecta a las aplicaciones de Looker (Google Cloud Core) que pertenecen al proyecto designado.
- La política no afecta a ninguna otra aplicación (ni a las aplicaciones de Looker (Google Cloud Core) que pertenecen a otros proyectos).
- Intervalo de duración de la sesión: La duración de la sesión debe ser de un mínimo de 1 hora (
3600s) y un máximo de 90 días (7776000s). - Requisitos de los parámetros de configuración de la sesión:
session_length_enabled: Se debe configurar comotrue.session_length: Duración obligatoria entre 1 hora (3600s) y 90 días (7776000s).session_reauth_method: Debe estar sin configurar o establecerse enLOGIN.use_oidc_max_age: Debe estar sin configurar o establecerse enfalse.max_inactivity: Debe anularse (o el valor predeterminado0s). Los tiempos de espera de sesión inactiva no se admiten para las vinculaciones derestricted_project.
- Proveedores de identidad admitidos:
- OIDC: Requiere un proveedor de OIDC configurado con el flujo de código de autorización y el alcance
offline_accesspara emitir tokens de actualización, o bien configurado con el aprovisionamiento de SCIM. - SAML 2.0: Requiere que el aprovisionamiento de SCIM esté habilitado en el proveedor de grupos de personal.
- OIDC: Requiere un proveedor de OIDC configurado con el flujo de código de autorización y el alcance
- Umbral de inactividad del atributo: Se aplica un umbral de inactividad de 24 horas fijo. Si Google Cloud no puede actualizar los atributos del usuario desde tu IdP en un plazo de 24 horas, se invalidará la sesión y el usuario deberá volver a autenticarse.
- Restricciones de Access Context Manager:
- Vinculación organizacional única: Las vinculaciones de duración de sesión extendida para los grupos de personal deben segmentarse para el principal "todos los grupos de personal" de la organización (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool). Debido a que este identificador de principal federado se aplica a toda la organización en todos los grupos de personal de tu organización, solo puede existir una vinculación de este tipo por organización. Para configurar sesiones extendidas para varios proyectos de Looker (Google Cloud Core) en todos los grupos de trabajadores, incluye varios bloques de alcancerestricted_projectdentro de la listascopedAccessSettingsde la única vinculación. - Los niveles de acceso (
access_levels,dry_run_access_levels) no se admiten en las vinculaciones de grupos de personal. - Los
sessionSettingsde nivel superior directamente en elGcpUserAccessBindingno admitidos con las vinculaciones de grupos de trabajadores; la configuración se debe definir dentro descopedAccessSettings.activeSettings.sessionSettings.
- Vinculación organizacional única: Las vinculaciones de duración de sesión extendida para los grupos de personal deben segmentarse para el principal "todos los grupos de personal" de la organización (
Configura el proveedor de grupos de trabajadores
Para permitir una duración de sesión extendida, tu proveedor de grupos de personal debe estar configurado para admitir la actualización de atributos en segundo plano. Puedes configurar el proveedor para que use el protocolo OIDC o SAML.
Configura un proveedor de OIDC
La actualización del atributo de segundo plano para los proveedores de OIDC se puede controlar con tokens de actualización (alcance de offline_access) o con el aprovisionamiento de SCIM. Si usas la actualización de atributos basada en tokens, haz lo siguiente:
- En tu IdP externo, configura una aplicación de OIDC con el flujo de código de autorización y habilita el acceso sin conexión para que se devuelva un token de actualización.
- En Google Cloud, agrega
offline_accessa los permisos adicionales de tu proveedor de grupos de trabajadores de OIDC.
El acceso sin conexión debe configurarse en todos los grupos de identidades de personal de tu organización de Google Cloud para que la política de duración de sesión extendida tenga el efecto previsto.
gcloud
Si tu proveedor ya tiene alcances adicionales existentes, inclúyelos junto con offline_access para que no se reemplacen:
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
Reemplaza lo siguiente:
PROVIDER_ID: Es el nombre de tu proveedor de grupos de identidades de personal.WORKFORCE_POOL_NAME: Es el nombre de tu grupo de identidades de personal.EXISTING_ADDITIONAL_SCOPES: Son los permisos adicionales separados por comas que se configuraron anteriormente en el proveedor. Si no tienes permisos adicionales existentes, omite este parámetro.
API de REST
Envía una solicitud PATCH para actualizar el proveedor. Incluye los alcances adicionales existentes junto con offline_access:
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
Cuerpo de la solicitud:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
Reemplaza lo siguiente:
WORKFORCE_POOL_NAME: Es el nombre de tu grupo de identidades de personal.PROVIDER_ID: Es el ID de tu proveedor de grupo de identidades de personal.
Configura un proveedor de SAML
En el caso de los proveedores de SAML, la actualización de atributos en segundo plano requiere el aprovisionamiento de SCIM:
- Configura un usuario de SCIM para tu proveedor de grupos de personal.
- Configura el aprovisionamiento de usuarios y grupos desde tu proveedor de identidad de SAML al extremo de SCIM.
Para obtener instrucciones paso a paso, consulta Aprovisionamiento de SCIM para la federación de identidades de personal.
Ejemplo de configuración de políticas para Looker (Google Cloud Core)
Crea un recurso GcpUserAccessBinding que asigne la política de duración de sesión extendida al grupo de trabajadores de tu organización y que defina el alcance de la política para el proyecto que aloja tu instancia de Looker (Google Cloud Core).
gcloud
Define la política en un archivo YAML llamado esl-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
Crea la vinculación de acceso:
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
Reemplaza lo siguiente:
ORG_ID: Tu ID de organización Google Cloud (por ejemplo,123456789012)PROJECT_NUMBER: Es el número del proyecto propietario de la instancia de Looker (Google Cloud Core) de destino (por ejemplo,987654321098). Solo las aplicaciones de Looker (Google Cloud Core) que pertenecen a este proyecto reciben la duración de sesión extendida.sessionLength: Es la duración de la sesión en segundos, seguida des. Por ejemplo,7776000sespecifica una sesión de 90 días.sessionLengthEnabled: Configurado comotrue.sessionReauthMethod: Se establece enLOGIN(o se deja sin configurar).
API de REST
Envía una solicitud POST a la API de Access Context Manager:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
Cuerpo de la solicitud JSON:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Reemplaza lo siguiente:
ORG_ID: Tu ID de organización Google Cloud (por ejemplo,123456789012)PROJECT_NUMBER: Es el número del proyecto propietario de la instancia de Looker (Google Cloud Core) de destino (por ejemplo,987654321098). Solo las aplicaciones de Looker (Google Cloud Core) que pertenecen a este proyecto reciben la duración de sesión extendida.sessionLength: Es la duración de la sesión en segundos, seguida des. Por ejemplo,7776000sespecifica una sesión de 90 días.sessionLengthEnabled: Configurado comotrue.sessionReauthMethod: Se establece enLOGIN(o se deja sin configurar).
Cómo ver y enumerar vinculaciones
Dado que la vinculación se aplica a todos los grupos de trabajadores de la organización, hay, como máximo, una vinculación de acceso por organización.
Enumera las vinculaciones activas
Para mostrar la vinculación de acceso al grupo de personal de tu organización, usa el filtro principal:federatedPrincipal:
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
API de REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
Obtén detalles de la vinculación
Para ver los detalles de una vinculación de acceso a un grupo de personal específico, haz lo siguiente:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
Reemplaza BINDING_NAME por el nombre completo del recurso de la vinculación (por ejemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890).
API de REST
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Reemplaza lo siguiente:
ORG_ID: Tu ID de organización Google Cloud (por ejemplo,123456789012)BINDING_ID: Es el ID de tu vinculación de acceso (por ejemplo,b1234567890).
Actualiza una vinculación de acceso
Puedes actualizar una vinculación de acceso a un grupo de trabajadores existente para modificar la duración de las sesiones, agregar nuevos alcances del proyecto o quitar los existentes.
gcloud
Define la política actualizada en un archivo YAML llamado
updated-esl-binding.yaml:scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGINAplica la política actualizada:
- Reemplazar la configuración de acceso con alcance: Para reemplazar los alcances del proyecto existentes por la configuración definida en
updated-esl-binding.yaml, haz lo siguiente:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- Agregar a la configuración existente: Para agregar los permisos del proyecto definidos en
updated-esl-binding.yamla los permisos existentes del proyecto de la vinculación sin sobrescribirlos, pasa la marca--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Reemplazar la configuración de acceso con alcance: Para reemplazar los alcances del proyecto existentes por la configuración definida en
Reemplaza lo siguiente:
* BINDING_NAME: Es el nombre completo del recurso de la vinculación (por ejemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER: Es el número del proyecto propietario de la instancia de Looker (Google Cloud Core) de destino.
* sessionLength: Es la duración actualizada de la sesión (por ejemplo, 2592000s para 30 días).
API de REST
Envía una solicitud PATCH para actualizar la vinculación.
- Reemplazar la configuración de acceso con alcance: Para reemplazar los alcances del proyecto existentes, haz lo siguiente:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Agregar a la configuración existente: Para agregar permisos nuevos del proyecto sin reemplazar los existentes, establece el parámetro de búsqueda
append=true:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
Cuerpo de la solicitud JSON:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Reemplaza lo siguiente:
* ORG_ID: El ID de tu organización Google Cloud (por ejemplo, 123456789012).
* BINDING_ID: El ID de tu vinculación de acceso (por ejemplo, b1234567890).
* PROJECT_NUMBER: El número del proyecto propietario de la instancia de Looker (Google Cloud Core) de destino.
* sessionLength: Es la duración actualizada de la sesión (por ejemplo, 2592000s para 30 días).
Borra una vinculación de acceso
Si borras la vinculación de acceso al grupo de trabajadores, se inhabilitará la duración extendida de la sesión para todos los grupos de trabajadores de tu organización.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Reemplaza BINDING_NAME por el nombre completo del recurso de la vinculación.
API de REST
Envía una solicitud DELETE para quitar la vinculación:
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
Reemplaza lo siguiente:
ORG_ID: Es el ID de tu organización Google Cloud .BINDING_ID: Es el ID de la vinculación de acceso que se borrará.