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 otorgue acceso y si se requiere un acceso completo, solo una contraseña o una llave de seguridad física.

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

  • Aplica la reautenticación frecuente para los usuarios con privilegios: Exige que los usuarios con privilegios elevados, como los propietarios de proyectos y los administradores de facturación, se vuelvan a autenticar con más frecuencia.
  • Configura sesiones más largas para ciertas aplicaciones: Permite que las aplicaciones compatibles, como la consola de Google Cloud , el SDK de Google Cloud o apps de OAuth específicas, tengan sesiones más largas para conservar la ventana de contexto grande 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

  • Establece controles de sesión predeterminados para todas las aplicaciones

    Usa la marca --session-length para establecer la duración de la sesión. El valor debe ser 0s o estar entre 1 hora y 24 horas. Especifica la duración en horas. Por ejemplo, usa "12h" para establecer una sesión de 12 horas. Usa la marca --session-reauth-method para especificar el método de reautenticación. Por ejemplo, puedes establecer una duración de la sesión de 3 horas (3h) 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 parámetros de configuración específicos de la aplicación.

  • Establece 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 de REST

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 de GcpUserAccessBinding.

  • sessionLength es la duración de la sesión en segundos, con el formato de la cantidad de segundos seguida de s (por ejemplo, 3600s). El valor debe ser 0s o de 3600s (1 hora) a 86400s (24 horas). Si se establece en 0s, sessionLengthEnabled debe establecerse en false o dejarse sin establecer. No puedes establecer sessionLength como 0s ni sessionLengthEnabled como true.
  • sessionReauthMethod puede ser LOGIN, PASSWORD o SECURITY_KEY.
  • Usa scopedAccessSettings para definir controles de sesión específicos de la aplicación. Consulta Define parámetros de configuración para aplicaciones específicas para obtener más detalles.

Terraform

En el recurso de vinculación de acceso de usuario de Google Cloud de Terraform, establece 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 los usuarios:

  • session_length: Es la duración de la sesión en segundos. Por ejemplo, 3600s establece la duración de la sesión en 1 hora. El s al final es obligatorio.
  • 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 edad máxima de OIDC, que se especifica si la credencial de autenticación es un token de OAuth.

Cuando se definen los controles de sesión, solo se usa la vinculación de acceso creada más recientemente que coincida con la solicitud cuando se resuelven los parámetros de configuración del control de sesión.

Ejemplo de configuración de política

En el siguiente ejemplo, se muestra cómo crear un control de sesión que requiera 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 de JSON para 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.

La configuración específica de la aplicación en scopedAccessSettings anula por completo los controles de sesión predeterminados (globales). Si se define un parámetro de configuración con alcance para una aplicación, los controles de sesión predeterminados no se aplican a esa aplicación.

Para eximir a ciertas aplicaciones del control de sesiones cuando los controles globales están activos, debes agregarlas de forma explícita a scopedAccessSettings y establecer el campo sessionLength en 0s y sessionLengthEnabled en false.

gcloud

En el siguiente ejemplo, se muestra la configuración de la sesión:

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 \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

Reemplaza lo siguiente:

  • ORG_ID: el ID de la organización de Google Cloud

  • GROUP_ID: el ID único del grupo de Cloud Identity

  • BINDING_FILE_PATH: Es la ruta de acceso del archivo de vinculación.

  • SESSION_LENGTH: Es la duración de la sesión, por ejemplo, 18h.

Para obtener el ID único del grupo, ejecuta el siguiente comando:

gcloud identity groups describe GROUP_EMAIL

Reemplaza GROUP_EMAIL por la dirección de correo electrónico de tu grupo. El ID de grupo único es el valor que se muestra después de groups/ en el campo name en el resultado. Por ejemplo, el ID de grupo único en groups/01gf8i8311xalqg es 01gf8i8311xalqg.

API de REST

A continuación, se muestra un ejemplo de cuerpo JSON de la solicitud a la API:

{
  "groupKey": "GROUP_ID",
  "sessionSettings": {
    "sessionLength": "64800s",
    "sessionReauthMethod": "LOGIN",
    "sessionLengthEnabled": true
  },
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7200s",
          "sessionReauthMethod": "SECURITY_KEY",
          "sessionLengthEnabled": true
        }
      }
    }
  ]
}

Crea la solicitud POST con el siguiente formato:

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

Reemplaza ORG_ID por el ID de la organización de Google Cloud .

Terraform

Para especificar los controles de sesión que se aplican de forma global y a aplicaciones específicas, establece los argumentos session_settings y scoped_access_settings:

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      session_settings {
        session_length = "64800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              client_id = "CLIENT_ID"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "7200s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
    }

Reemplaza lo siguiente:

  • ORG_ID: Es el ID numérico de la organización de Google Cloud.

  • GROUP_ID: Es el ID del grupo de la API de Directory de Cloud Identity o Google Workspace sin procesar. No uses una dirección de correo electrónico de grupo ni un nombre de recurso de "groups/...". En su lugar, pasa el ID sin procesar o usa trimprefix(google_cloud_identity_group.example.id, "groups/").

  • CLIENT_ID: Es el ID de cliente de OAuth 2.0 de la aplicación.

Ejemplo de configuración de políticas para aplicaciones de Google Cloud

Puedes configurar controles de reautenticación específicos de la aplicación para las aplicaciones de Google Cloud , por ejemplo, exigir SECURITY_KEY para el SDK de Google Cloud y LOGIN para la consola de Google Cloud . En el siguiente ejemplo, se muestra cómo crear un control de sesión que requiera una nueva autenticación cada hora para el SDK de Google Cloud con SECURITY_KEY y cada 4 horas para la consola de Google Cloud con LOGIN.

La sección scopedAccessSettings del archivo YAML (o cuerpo JSON) te permite anular la configuración predeterminada para aplicaciones específicas. En este ejemplo, establecemos un requisito de reautenticación de una hora con SECURITY_KEY para el SDK de Google Cloud y un requisito de reautenticación de cuatro horas con LOGIN para la consola de Google Cloud con el campo name para identificar estas aplicaciones.

Para eximir a ciertas aplicaciones del control de sesiones, establece el campo sessionLength en 0s o sessionLengthEnabled en false. Luego, se ignorará el método sessionReauthMethod.

gcloud

En el siguiente ejemplo, se muestra la configuración de la sesión:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      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

Reemplaza lo siguiente:

  • ORG_ID: el ID de la organización de Google Cloud

  • GROUP_ID: el ID único del grupo de Cloud Identity

  • BINDING_FILE_PATH: Es la ruta de acceso del archivo de vinculación.

API de REST

A continuación, se muestra un ejemplo de cuerpo JSON de la solicitud a la API:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

Crea la solicitud POST con el siguiente formato:

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

Reemplaza ORG_ID por el ID de la organización de Google Cloud .

Terraform

Para especificar la configuración de la duración de la sesión del SDK de Google Cloud y la consola de Google Cloud , establece el argumento scoped_access_settings adecuado:

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Reemplaza lo siguiente:

  • ORG_ID: Es el ID numérico de la organización de Google Cloud.

  • GROUP_ID: Es el ID del grupo de la API de Directory de Cloud Identity o Google Workspace sin procesar. No uses una dirección de correo electrónico de grupo ni un nombre de recurso de "groups/...". En su lugar, pasa el ID sin procesar o usa trimprefix(google_cloud_identity_group.example.id, "groups/").

Anula la duración predeterminada de 16 horas de la sesión para las aplicaciones de Google Cloud

A partir de junio de 2026, se introdujo una duración de sesión predeterminada de 16 horas para un subconjunto de organizaciones de Google Cloud . Esta política predeterminada no es visible en la Consola del administrador de Google, y las organizaciones de Google Cloud afectadas deben usar la API de Access Context Manager para anularla para sus usuarios.

Para anular esta política predeterminada y eximir a estas aplicaciones del control de sesiones (lo que hace que la duración de la sesión sea infinita), puedes crear una vinculación de Cloud con scopedAccessSettings, en la que sessionLengthEnabled se establezca en false para las aplicaciones del SDK de Google Cloud y de la consola de Google Cloud ("consola de Cloud").

gcloud

En el siguiente ejemplo, se muestra la configuración de YAML para inhabilitar los controles de sesión de estas aplicaciones:

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false

Crea o actualiza la vinculación de acceso con este archivo:

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

Reemplaza lo siguiente:

  • ORG_ID: el ID de la organización de Google Cloud

  • GROUP_ID: el ID único del grupo de Cloud Identity (por ejemplo, el ID de un grupo que contiene todos los usuarios a los que deseas que se aplique esta anulación)

  • BINDING_FILE_PATH: Es la ruta de acceso del archivo de vinculación.

API de REST

A continuación, se muestra un ejemplo de cuerpo JSON de la solicitud a la API:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    }
  ]
}

Crea la solicitud POST con el siguiente formato:

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

Reemplaza ORG_ID por el ID de la organización de Google Cloud .

Terraform

Para especificar que los controles de sesión están inhabilitados para el SDK de Google Cloud y la consola de Google Cloud , establece el argumento scoped_access_settings adecuado con session_length_enabled = false:

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "ORG_ID"
      group_key = "GROUP_ID"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Reemplaza lo siguiente:

  • ORG_ID: Es el ID numérico de la organización de Google Cloud.

  • GROUP_ID: Es el ID del grupo de la API de Directory de Cloud Identity o Google Workspace sin procesar. No uses una dirección de correo electrónico de grupo ni un nombre de recurso de "groups/...". En su lugar, pasa el ID sin procesar o usa trimprefix(google_cloud_identity_group.example.id, "groups/").