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 de larga duración de hasta 90 días para Looker (Google Cloud Core) y la app de Gemini Enterprise para dispositivos móviles:
Looker (Google Cloud Core): Se configura con permisos de proyecto (
restricted_project). Las sesiones extendidas permiten que los usuarios del personal mantengan una conexión ininterrumpida a Looker (Google Cloud Core) sin necesidad de volver a autenticarse diariamente en tu proveedor de identidad externa (IdP). La interacción del usuario dentro de Looker (Google Cloud Core) sigue regida por la configuración de la duración de la sesión de Looker (Google Cloud Core).La app de Gemini Enterprise para dispositivos móviles: Se configura con permisos de aplicación (
restricted_client_application). Las sesiones extendidas permiten que los usuarios del personal mantengan una conexión ininterrumpida a la app de Gemini Enterprise para dispositivos móviles sin necesidad de volver a autenticarse diariamente en tu proveedor de identidad externa (IdP).
Para mantener la seguridad durante las sesiones extendidas, Google Cloud sincroniza periódicamente los atributos de usuario y las pertenencias a grupos directamente desde tu proveedor de identidad externa (IdP) en segundo plano.
En este documento, se describe cómo definir políticas de sesiones extendidas con la API de Access Context Manager con controles de alcance de proyecto (para Looker (Google Cloud Core)) y controles de alcance de aplicación (para la app de Gemini Enterprise para dispositivos móviles), configurar tu proveedor de grupos de personal y administrar las 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 de sesión extendida:
Google Cloud Vinculación de acceso: Los administradores definen una política de duración de sesión con Access Context Manager que se aplica en toda la organización en todos los grupos de personal de tu organización. Las políticas otorgan sesiones extendidas de hasta 90 días con una de las siguientes opciones:
Alcance del proyecto (
restricted_project): Aplica sesiones extendidas a las instancias de Looker (Google Cloud Core) en el proyecto designado.Alcance de la aplicación (
restricted_client_application): Aplica sesiones extendidas a la app de Gemini Enterprise para dispositivos móviles.
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 de usuario y las membresías de grupos desde tu IdP externo en segundo plano) o a través del aprovisionamiento de SCIM.SAML: Para los proveedores de SAML, los atributos de usuario y las membresías de grupos se mantienen actualizados con el aprovisionamiento de SCIM.
Protección contra la inactividad: Si no puede actualizar los atributos de usuario desde el IdP externo en un plazo de 24 horas (por ejemplo, si se anula el aprovisionamiento del usuario o se revocan las credenciales en el IdP), Google Cloud finaliza la sesión.
Antes de comenzar
Antes de configurar la duración de sesión extendida, asegúrate de tener los permisos necesarios de Identity and Access Management y las APIs habilitadas:
Roles y permisos requeridos
Para obtener los permisos que necesitas para configurar la duración de sesión extendida, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Configurar proveedores de grupos de identidades de personal: Administrador de grupos de personal (
roles/iam.workforcePoolAdmin) en el grupo de personal o la organización. - Administrar vinculaciones de acceso a la nube 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 IAM en tu proyecto:
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
Limitaciones y requisitos
Antes de configurar la duración de sesión extendida, revisa los siguientes requisitos y limitaciones:
- Aplicaciones compatibles: La duración de sesión extendida se aplica exclusivamente a lo siguiente:
- Looker (Google Cloud Core) (configurado con permisos de proyecto)
- La app de Gemini Enterprise para dispositivos móviles (configurada con permisos de aplicación)
- Requisito de lista de entidades permitidas para la app de Gemini Enterprise para dispositivos móviles: La duración de sesión extendida para la app de Gemini Enterprise para dispositivos móviles solo está disponible a través de la lista de entidades permitidas. Para solicitar acceso a la lista de entidades permitidas durante la versión preliminar, comunícate con tu Google Cloud punto de contacto (PDC) de asistencia.
- Tipos de permisos: La configuración de la sesión debe configurarse dentro de
scopedAccessSettingscon uno de los siguientes permisos de cliente:- Alcance del proyecto (
restricted_project): Especifica el Google Cloud proyecto que posee la instancia de Looker (Google Cloud Core) (projects/{PROJECT_NUMBER}). Solo se ven afectadas las instancias de Looker (Google Cloud Core) que pertenecen al proyecto designado. - Alcance de la aplicación (
restricted_client_application): Especifica la aplicación por su nombre canóniconame. - Para configurar los permisos de aplicación para la app de Gemini Enterprise para dispositivos móviles, debes usar explícitamente uno o ambos de los siguientes nombres de aplicación exactos:
"Gemini Enterprise mobile Android""Gemini Enterprise mobile IOS"
- El alcance por ID de cliente de OAuth (
clientId) no es compatible con las vinculaciones de la federación de identidades de personal y se rechazará. Debes identificar la aplicación con el camponame.
- Alcance del proyecto (
- Intervalo de duración de la sesión: La duración de la sesión debe estar entre un mínimo de 1 hora (
3600s) y un máximo de 90 días (7776000s). - Requisitos de parámetros de configuración de la sesión:
session_length_enabled: Debe establecerse entrue.session_length: Duración requerida entre 1 hora (3600s) y 90 días (7776000s).session_reauth_method: Debe anularse o establecerse enLOGIN.use_oidc_max_age: Debe anularse o establecerse enfalse.max_inactivity: Debe anularse (o el valor predeterminado0s). Los tiempos de espera de sesión inactiva no son compatibles con las vinculacionesrestricted_projectnirestricted_client_application.
- Proveedores de identidad compatibles:
- OIDC: Requiere un proveedor de OIDC configurado con el flujo de código de autorización y el permiso
offline_accesspara emitir tokens de actualización, o configurado con el aprovisionamiento de SCIM. - SAML 2.0: Requiere el aprovisionamiento de SCIM 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 permiso
- Umbral de inactividad de atributos: Se aplica un umbral de inactividad fijo de 24 horas. Si Google Cloud no puede actualizar los atributos de usuario desde tu IdP en un plazo de 24 horas, la sesión se invalida y el usuario debe volver a autenticarse.
- Restricciones de Access Context Manager:
- Vinculación organizativa única: Las vinculaciones de duración de sesión extendida para grupos de personal deben orientarse a la 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 en 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), la app de Gemini Enterprise para dispositivos móviles o una combinación de ambos, incluye varios bloques de permisosrestricted_projectyrestricted_client_applicationen la listascopedAccessSettingsde la vinculación única. - Los niveles de acceso (
access_levels,dry_run_access_levels) no son compatibles con las vinculaciones de grupos de personal. - El elemento
sessionSettingsde nivel superior directamente enGcpUserAccessBindingno es compatible con las vinculaciones de grupos de personal; la configuración debe definirse dentro descopedAccessSettings.activeSettings.sessionSettings.
- Vinculación organizativa única: Las vinculaciones de duración de sesión extendida para grupos de personal deben orientarse a la principal "todos los grupos de personal" de la organización (
Configura el proveedor de grupos de personal
Para permitir la duración de sesión extendida, tu proveedor de grupos de personal debe configurarse 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 de atributos en segundo plano para proveedores de OIDC se puede controlar con tokens de actualización (permiso offline_access) o 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 en tu proveedor de grupos de personal de OIDC.
El acceso sin conexión debe configurarse en todos los grupos de identidades de personal de tu Google Cloud organización para que la política de duración de sesión extendida tenga el efecto deseado.
gcloud
Si tu proveedor ya tiene permisos 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: El nombre de tu proveedor de grupos de identidades de personal.WORKFORCE_POOL_NAME: El nombre de tu grupo de identidades de personal.EXISTING_ADDITIONAL_SCOPES: Cualquier permiso adicional separado por comas configurado 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 permisos 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: El nombre de tu grupo de identidades de personal.PROVIDER_ID: El ID de tu proveedor de grupos de identidades de personal.
Configura un proveedor de SAML
Para los proveedores de SAML, la actualización de atributos en segundo plano requiere el aprovisionamiento de SCIM:
- Configura un tenant de SCIM para tu proveedor de grupos de personal.
- Configura el aprovisionamiento de usuarios y grupos desde tu proveedor de identidad de SAML hasta el 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 personal de tu organización y que limite la política al 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: El ID de tu Google Cloud organización (por ejemplo,123456789012).PROJECT_NUMBER: El número de proyecto que posee 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: La duración de la sesión en segundos seguida des. Por ejemplo,7776000sespecifica una sesión de 90 días.sessionLengthEnabled: Se establece entrue.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: El ID de tu Google Cloud organización (por ejemplo,123456789012).PROJECT_NUMBER: El número de proyecto que posee 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: La duración de la sesión en segundos seguida des. Por ejemplo,7776000sespecifica una sesión de 90 días.sessionLengthEnabled: Se establece entrue.sessionReauthMethod: Se establece enLOGIN(o se deja sin configurar).
Ejemplo de configuración de políticas para la app de Gemini Enterprise para dispositivos móviles
Crea un recurso GcpUserAccessBinding que asigne la política de duración de sesión extendida al grupo de personal de tu organización y que limite la política a la app de Gemini Enterprise para dispositivos móviles con el permiso restricted_client_application. Debes identificar las aplicaciones con sus nombres visibles canónicos exactos: "Gemini Enterprise mobile Android" y "Gemini Enterprise mobile IOS".
gcloud
Define la política en un archivo YAML llamado esl-app-binding.yaml:
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile Android"
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
- scope:
clientScope:
restrictedClientApplication:
name: "Gemini Enterprise mobile IOS"
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-app-binding.yaml"
Reemplaza lo siguiente:
ORG_ID: El ID de tu Google Cloud organización (por ejemplo,123456789012).name: Debe ser"Gemini Enterprise mobile Android"o"Gemini Enterprise mobile IOS". La identificación de aplicaciones por ID de cliente de OAuth (clientId) no es compatible con los grupos de personal.sessionLength: La duración de la sesión en segundos seguida des(entre3600sy7776000s).sessionLengthEnabled: Se establece entrue.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": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile Android"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Gemini Enterprise mobile IOS"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
Reemplaza lo siguiente:
ORG_ID: El ID de tu Google Cloud organización (por ejemplo,123456789012).name: Debe ser"Gemini Enterprise mobile Android"o"Gemini Enterprise mobile IOS". La identificación de aplicaciones por ID de cliente de OAuth (clientId) no es compatible con los grupos de personal.sessionLength: La duración de la sesión en segundos seguida des. Por ejemplo,7776000sespecifica una sesión de 90 días.sessionLengthEnabled: Se establece entrue.sessionReauthMethod: Se establece enLOGIN(o se deja sin configurar).
Visualiza y enumera vinculaciones
Debido a que la vinculación se aplica en todos los grupos de personal de la organización, hay como máximo una vinculación de acceso por organización.
Enumera las vinculaciones activas
Para enumerar 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 de 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: El ID de tu Google Cloud organización (por ejemplo,123456789012).BINDING_ID: 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 personal existente para modificar las duraciones de las sesiones, agregar permisos de proyecto o aplicación nuevos, o quitar los permisos 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:
- Reemplaza la configuración de acceso con permisos: Para reemplazar los permisos existentes con 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"- Agrega a la configuración existente: Para agregar los permisos definidos en
updated-esl-binding.yamla los permisos existentes de la vinculación sin reemplazarlos, pasa la marca--append:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- Reemplaza la configuración de acceso con permisos: Para reemplazar los permisos existentes con la configuración definida en
Reemplaza lo siguiente: * BINDING_NAME: El nombre completo de recurso de la vinculación (por ejemplo, organizations/123456789012/gcpUserAccessBindings/b1234567890). * PROJECT_NUMBER: El número de proyecto que posee la instancia de Looker (Google Cloud Core) de destino.
* sessionLength: La duración de la sesión actualizada (por ejemplo, 2592000s durante 30 días).
API de REST
Envía una solicitud PATCH para actualizar la vinculación.
- Reemplaza la configuración de acceso con permisos: Para reemplazar los permisos existentes, haz lo siguiente:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- Agrega a la configuración existente: Para agregar permisos nuevos sin reemplazar los existentes, establece el
append=trueparámetro de consulta:
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 Google Cloud organización (por ejemplo, 123456789012).
* BINDING_ID: El ID de tu vinculación de acceso (por ejemplo, b1234567890).
* PROJECT_NUMBER: El número de proyecto que posee la instancia de Looker (Google Cloud Core) de destino.
* sessionLength: La duración de la sesión actualizada (por ejemplo, 2592000s durante 30 días).
Borra una vinculación de acceso
Si borras la vinculación de acceso al grupo de personal, se inhabilitará la duración de sesión extendida para todos los grupos de personal de tu organización.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
Reemplaza BINDING_NAME por el nombre completo de 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: El ID de tu Google Cloud organización.BINDING_ID: El ID de la vinculación de acceso que se borrará.