Configura 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 otorga acceso y si se requiere un acceso completo, solo con contraseña o con una llave de seguridad de hardware.

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

  • Aplicar la reautenticación frecuente para los usuarios con privilegios: Solicita a los usuarios con privilegios elevados, como los propietarios de proyectos y los administradores de facturación, que se vuelvan a autenticar con mayor frecuencia.
  • Configura sesiones más largas para ciertas aplicaciones: Permite que ciertas aplicaciones, como las aplicaciones basadas en IA contextual como Gemini, tengan duraciones de sesión más largas para conservar la gran ventana de contexto que se requiere para un rendimiento óptimo.

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

Puedes definir controles de sesión cuando creas una vinculación de Access Context Manager. Para obtener más información sobre los controles de sesión, consulta Aplica políticas a grupos de usuarios con vinculaciones de acceso.

gcloud

  • Cómo establecer la configuración predeterminada de los controles de sesión para todas las aplicaciones

    Usa la marca --session-length para establecer la duración de la sesión. El valor puede variar de 0 a 24 horas. Especifica la duración con el formato de duración ISO 8601. Por ejemplo, usa "12H30M5S" para establecer una sesión de 12 horas, 30 minutos y 5 segundos de duración. Usa la marca --session-reauth-method para especificar el método de reautenticación. Por ejemplo, puedes establecer un tiempo de duración de la sesión de 30 minutos (30 min) y un método de reautenticación LOGIN, PASSWORD o SECURITY_KEY.

    Esto se aplicará a todas las aplicaciones, a menos que se anule con la configuración específica de la aplicación.

  • Cómo establecer 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 específicas con clientId. Esto te permite anular los controles de sesión predeterminados para esas aplicaciones. Luego, puedes pasar el archivo YAML con --binding-file flag.

API

Define los campos sessionLength y sessionReauthMethod dentro del objeto sessionSettings en el cuerpo JSON de tu solicitud POST para crear o actualizar una vinculación GcpUserAccessBinding.

  • sessionLength es la duración de la sesión entre 0 y 24 horas. El valor debe ser una cadena y constar de 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. Consulta Cómo definir configuraciones para aplicaciones específicas para obtener más detalles.

Terraform

Dentro del recurso Terraform Google Cloud User Access Binding, completa 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: Es la duración de la sesión en segundos. Por ejemplo, 900 s establece la duración de la sesión en 15 minutos. La "s" al final es obligatoria.
  • session_length_enabled: Se establece en falso para inhabilitar la configuración de sesión especificada.
  • session_reauth_method: Es el tipo de desafío de autenticación que se usa para actualizar las credenciales. Las opciones son LOGIN, PASSWORD o SECURITY_KEY.
  • use_oidc_max_age: Es un campo avanzado que se usa para configurar si la sesión respeta un parámetro opcional de antigüedad máxima de OIDC, que se especifica si la credencial de autenticación es un token de OAuth.

Consideraciones clave para definir los controles de sesión:

  • Cuando se resuelven los parámetros de configuración de control de sesión, solo se usa la vinculación de acceso creada más recientemente que coincide con la solicitud.

Ejemplo de configuración de política

En el siguiente ejemplo, se muestra cómo crear un control de sesión que requiere volver a autenticarse 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 en el comando de Google Cloud CLI (o los campos correspondientes en el cuerpo JSON de la llamada a la API) establecen el comportamiento predeterminado para todas las aplicaciones que no se definen de forma explícita en scopedAccessSettings.

Configuración específica de la aplicación

La sección scopedAccessSettings del archivo YAML (o cuerpo JSON) te permite anular la configuración predeterminada para aplicaciones específicas. En el ejemplo, establecemos 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 ciertas apps del control de sesiones, configura el campo sessionLength como 0s o sessionLengthEnabled como false. Luego, se ignorará el método sessionReauthMethod.

gcloud

La configuración de los parámetros es la siguiente:

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

Crea la vinculación 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 una duración de sesión para las solicitudes de acceso de los usuarios que provienen de "Group Key" en todas las apps, haz lo siguiente:

    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 la sesión para las solicitudes de usuarios que provienen de un Grupo de Google específico y que usan una app específica, como la consola de Google Cloud , completa el argumento scoped_access_settings adecuado con un argumento session_settings en active_settings. Los argumentos secundarios dentro 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
          }
        }
      }
    }