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 reautentiquen con mayor frecuencia.
  • Configura sesiones más largas para ciertas aplicaciones: Permite que las aplicaciones compatibles, como la consola de Cloud de Confiance , el SDK de Google Cloud o las apps específicas de OAuth, tengan duraciones de sesión más largas para conservar la gran ventana de contexto necesaria 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 debe ser 0s o estar entre 1 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 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 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 GcpUserAccessBinding.

  • sessionLength es la duración de la sesión en segundos. El valor debe ser 0s o estar entre 1 y 24 horas, con el formato de una cantidad de segundos seguida de s (por ejemplo, 3600s, que corresponde a una duración de sesión de 1 hora).
  • 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, 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 antigü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 coincide con la solicitud para resolver la configuración de control de sesión.

Ejemplo de configuración de políticas

En el siguiente ejemplo, se muestra cómo crear un control de sesión que requiere la reautenticació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 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 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 los parámetros de 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 \
    --level=DEFAULT_ACCESS_LEVEL \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

Reemplaza lo siguiente:

  • ORG_ID: El ID de la organización
  • GROUP_ID: La clave del grupo
  • BINDING_FILE_PATH: Es la ruta de acceso del archivo de vinculación.
  • DEFAULT_ACCESS_LEVEL: El nivel de acceso predeterminado
  • SESSION_LENGTH: La duración de la sesión, por ejemplo,18h

API de REST

Ejemplo de cuerpo JSON de la solicitud a la API:

{
  "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
          }
        ]
      }
    }
  ]

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.

Terraform

Para especificar una duración de sesión para las solicitudes de acceso de los usuarios que provienen de "Clave de grupo" en todas las aplicaciones, 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 = "3600s"
        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 Cloud de Confiance , 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 = "3600s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

Ejemplo de configuración de políticas para aplicaciones Cloud de Confiance by S3NS

Puedes configurar controles de reautenticación específicos de la aplicación para las aplicaciones de Cloud de Confiance by S3NS , por ejemplo, requerir SECURITY_KEY para el SDK de Google Cloud y LOGIN para la consola de Cloud de Confiance . En el siguiente ejemplo, se muestra cómo crear un control de sesión que requiere la reautenticación cada hora para el SDK de Google Cloud con SECURITY_KEY y cada 4 horas para la consola de Cloud de Confiance 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 Cloud de Confiance con el campo name para identificar estas aplicaciones.

Para eximir 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 los parámetros de 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
  • GROUP_ID: La clave del grupo
  • BINDING_FILE_PATH: Es la ruta de acceso del archivo de vinculación.

API de REST

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.

Terraform

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

    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 = "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
          }
        }
      }
    }