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 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.
  • 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:

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 en scopedAccessSettings con el alcance del cliente restricted_project que 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 como true.
    • session_length: Duración obligatoria entre 1 hora (3600s) y 90 días (7776000s).
    • session_reauth_method: Debe estar sin configurar o establecerse en LOGIN.
    • use_oidc_max_age: Debe estar sin configurar o establecerse en false.
    • max_inactivity: Debe anularse (o el valor predeterminado 0s). Los tiempos de espera de sesión inactiva no se admiten para las vinculaciones de restricted_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_access para 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.
  • 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 alcance restricted_project dentro de la lista scopedAccessSettings de 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 sessionSettings de nivel superior directamente en el GcpUserAccessBinding no admitidos con las vinculaciones de grupos de trabajadores; la configuración se debe definir dentro de scopedAccessSettings.activeSettings.sessionSettings.

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:

  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 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:

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

  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:

    • 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.yaml a 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
    

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á.