Configurar los controles de sesión para la reautenticación

Los controles de sesión te permiten configurar la frecuencia con la que los usuarios deben volver a autenticarse después de que se les haya concedido acceso, así como si se requiere un inicio de sesión completo, solo una contraseña o una llave de seguridad de hardware.

Puedes aplicar controles de sesión para hacer lo siguiente:

  • Implementar la reautenticación frecuente para usuarios con privilegios: requiere que los usuarios con privilegios superiores, como los propietarios de proyectos y los administradores de facturación, se reautentiquen con más frecuencia.
  • Configurar sesiones más largas para determinadas aplicaciones: permite que ciertas aplicaciones, como las aplicaciones de IA basadas en el contexto (por ejemplo, Gemini), tengan sesiones más largas para conservar la gran ventana de contexto necesaria para un rendimiento óptimo.

Definir la duración de la sesión y los métodos de reautenticación

Puedes definir controles de sesión al crear un enlace de Administrador de contextos de acceso. Para obtener más información sobre los controles de sesión, consulta el artículo Aplicar políticas a grupos de usuarios mediante enlaces de acceso.

gcloud

  • Definir los controles de sesión predeterminados para todas las aplicaciones

    Usa la marca --session-length para definir la duración de la sesión y la marca --session-reauth-method para especificar el método de reautenticación. Por ejemplo, puedes definir una duración de sesión de 30 minutos (30m) y un método de autenticación de nuevo LOGIN, PASSWORD o SECURITY_KEY.

    Se aplicará a todas las aplicaciones, a menos que se anule con ajustes específicos de la aplicación.

  • Definir controles de sesión específicos de la aplicación

    Define scopedAccessSettings en un archivo YAML para especificar los controles de sesión de aplicaciones concretas mediante clientId. De esta forma, puedes anular los controles de sesión predeterminados de esas aplicaciones. Después, puedes transferir el archivo YAML con --binding-file flag.

API

Define los campos sessionLength y sessionReauthMethod en el sessionSettings object del cuerpo JSON de tu solicitud POST para crear o actualizar un enlace GcpUserAccessBinding. Usa scopedAccessSettings para definir controles de sesión específicos de la aplicación. Para obtener más información, consulta Definir configuraciones para aplicaciones específicas.

Aspectos clave que debes tener en cuenta al definir los controles de sesión:

  • No puedes especificar la consola Google Cloud con clientId. Para aplicar controles de sesión en la consola Google Cloud , defínelos como predeterminados y, a continuación, crea excepciones para otras aplicaciones.
  • Al resolver los ajustes de control de sesión, solo se usa la vinculación de acceso creada más recientemente que coincida con la solicitud.

Ejemplo de configuración de una política

A continuación, se muestra un ejemplo de cómo crear un control de sesión que requiera una nueva autenticación cada 18 horas de forma predeterminada con LOGIN y cada dos horas para una aplicación específica (SENSITIVE_APP_ID) con SECURITY_KEY.

Configuración predeterminada

Las marcas --level, --session-length y --session-reauth-method del comando de la interfaz de línea de comandos de Google Cloud (o los campos correspondientes del cuerpo JSON de la llamada a la API) definen el comportamiento predeterminado de todas las aplicaciones que no se hayan definido explícitamente en scopedAccessSettings.

Ajustes específicos de la aplicación

La sección scopedAccessSettings del archivo YAML (o del cuerpo JSON) te permite anular los ajustes predeterminados de aplicaciones concretas. En el ejemplo, hemos definido un requisito de reautenticación de dos horas con SECURITY_KEY para la aplicación con el ID de cliente SENSITIVE_APP_ID.

Para eximir a determinadas aplicaciones del control de sesiones, asigna el valor 0s o sessionLengthEnabled al campo sessionLength de false. El método sessionReauthMethod se ignorará.

gcloud

Configuración de los ajustes:

scopedAccessSettings:
  scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

Crea el enlace de acceso:

gcloud access-context-manager cloud-bindings create \
    --organization ORG_ID \
    --group-key GROUP_ID \
    --binding-file BINDING_FILE_PATH \
    --level DEFAULT_ACCESS_LEVEL
    --session-length 18h \
    --session-reauth-method LOGIN

API

Cuerpo JSON:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

Solicitud POST:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings