Configura la duración de sesión extendida para la federación de identidades de personal

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:

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 scopedAccessSettings con 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ónico name.
    • 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 campo name.
  • 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 en true.
    • session_length: Duración requerida entre 1 hora (3600s) y 90 días (7776000s).
    • session_reauth_method: Debe anularse o establecerse en LOGIN.
    • use_oidc_max_age: Debe anularse o establecerse en false.
    • max_inactivity: Debe anularse (o el valor predeterminado 0s). Los tiempos de espera de sesión inactiva no son compatibles con las vinculaciones restricted_project ni restricted_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_access para 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.
  • 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 permisos restricted_project y restricted_client_application en la lista scopedAccessSettings de 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 sessionSettings de nivel superior directamente en GcpUserAccessBinding no es compatible con las vinculaciones de grupos de personal; la configuración debe definirse dentro de scopedAccessSettings.activeSettings.sessionSettings.

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:

  1. 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.
  2. En Google Cloud, agrega offline_access a 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:

  1. Configura un tenant de SCIM para tu proveedor de grupos de personal.
  2. 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 de s. Por ejemplo, 7776000s especifica una sesión de 90 días.
  • sessionLengthEnabled: Se establece en true.
  • sessionReauthMethod: Se establece en LOGIN (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 de s. Por ejemplo, 7776000s especifica una sesión de 90 días.
  • sessionLengthEnabled: Se establece en true.
  • sessionReauthMethod: Se establece en LOGIN (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 de s (entre 3600s y 7776000s).
  • sessionLengthEnabled: Se establece en true.
  • sessionReauthMethod: Se establece en LOGIN (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 de s. Por ejemplo, 7776000s especifica una sesión de 90 días.
  • sessionLengthEnabled: Se establece en true.
  • sessionReauthMethod: Se establece en LOGIN (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

  1. 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: LOGIN
    
  2. Aplica 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.yaml a 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 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=true pará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á.