Configurar 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 vuelvan a autenticar 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 de mayor duración para conservar la ventana de contexto grande que necesitan para ofrecer 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. El valor puede oscilar entre 0 y 24 horas. Especifica la duración con el formato de duración ISO 8601. Por ejemplo, usa "12H30M5S" para definir una sesión que dure 12 horas, 30 minutos y 5 segundos. Usa 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 reautenticación 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 mediante --binding-file flag.

API

Define los campos sessionLength y sessionReauthMethod en el objeto sessionSettings del cuerpo JSON de tu solicitud POST para crear o actualizar un enlace GcpUserAccessBinding.

  • sessionLength es la duración de la sesión, que puede ser de entre 0 y 24 horas. El valor debe ser una cadena formada por un número entero entre 0 y 86400, seguido inmediatamente de la letra "s".
  • sessionReauthMethod puede ser LOGIN, PASSWORD o SECURITY_KEY.
  • 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.

Terraform

En el recurso Terraform Google Cloud User Access Binding, rellena el argumento session_settings para configurar los controles generales de duración de la sesión que se aplican a todo el tráfico de usuarios:

  • session_length: duración de la sesión en segundos. Por ejemplo, 900s define la duración de la sesión en 15 minutos. Es obligatorio incluir la letra "s" al final.
  • session_length_enabled: asigna el valor false para inhabilitar los ajustes de sesión especificados.
  • session_reauth_method: El tipo de reto de autenticación que se usa para actualizar las credenciales. Las opciones son LOGIN, PASSWORD o SECURITY_KEY.
  • use_oidc_max_age: campo avanzado que se usa para configurar si la sesión respeta un parámetro de antigüedad máxima de OIDC opcional, que se especifica si la credencial de autenticación es un token de OAuth.

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

  • 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

En el siguiente ejemplo se muestra cómo crear un control de sesión que requiera una nueva autenticación cada 18 horas 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 la configuración predeterminada 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

Terraform

Para especificar la duración de la sesión de las solicitudes de acceso de los usuarios que procedan de "Clave de grupo" en todas las aplicaciones, sigue estos pasos:

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      session_settings {
        session_length = "1800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

Para especificar la duración de las sesiones de las solicitudes de los usuarios que proceden de un grupo de Google concreto mediante una aplicación específica, como la consola Google Cloud , rellena el argumento scoped_access_settings correspondiente con un argumento session_settings en active_settings. Los subargumentos de session_settings son idénticos al argumento de nivel superior.

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "1800s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }