Reautenticación de IAP

La reautenticación de IAP permite que los propietarios de servicios y aplicaciones o los administradores de Google Cloud exijan que los usuarios finales autenticados vuelvan a autenticarse después de un período específico cuando accedan a un servicio o una aplicación protegidos por IAP. Limita el intervalo de tiempo durante el cual un usuario puede acceder al servicio o la aplicación protegidos por IAP antes de que se le solicite volver a autenticarse.

La reautenticación de IAP está diseñada con el fin de aplicar políticas de reautenticación para servicios y aplicaciones protegidos por IAP. Puedes hacer esto para servicios y aplicaciones esenciales que manejan información confidencial. Por ejemplo, puedes especificar que los usuarios que acceden a una aplicación de RR.HH. crítica vuelvan a autenticarse cada hora mediante un segundo factor.

Métodos de reautenticación admitidos

Puedes usar los siguientes métodos para administrar la configuración de reautenticación:

  • Acceso: IAP fuerza la reautenticación de la aplicación protegida, y los usuarios deben acceder nuevamente.
  • Clave segura: Los usuarios finales deben volver a autenticarse con su autenticación de dos factores basada en claves de seguridad configurada.
  • Métodos de autenticación de dos factores inscritos: Los usuarios finales deben volver a autenticarse mediante uno de los métodos de autenticación de dos factores inscritos.

Para obtener más información, consulta IapSettings.

Cómo configurar una política de reautenticación

Las reauthSettings son parte de IapSettings y, por lo tanto, se pueden configurar en cualquier tipo de recurso en la jerarquía de recursos. Para aplicar restricciones, puedes configurar reauthSettings en un servicio o una aplicación a nivel de la organización, la carpeta, el proyecto o el servicio. Por ejemplo, puedes limitar la duración de la sesión a un máximo de una hora para todas las aplicaciones de una organización o para una aplicación específica.

Existen dos tipos de políticas que puedes usar para configurar la reautenticación:

  • Mínima: Si el tipo de política se establece en MINIMUM en un recurso, como una organización, se combinarán los dos parámetros de configuración cuando se evalúe la configuración de reautenticación en un recurso de nivel inferior, como una carpeta. Si el recurso de nivel inferior no tiene una configuración de reautenticación, el resultado de la combinación es la configuración no vacía del recurso de nivel superior. De lo contrario, la combinación toma la duración de la sesión más corta y el método de reautenticación de mayor precedencia entre los dos recursos. El tipo de política siempre será MINIMUM. La configuración de reautenticación combinada se usará para combinarla con la del siguiente recurso de nivel inferior, como un proyecto.

    El orden de prioridad de los tres métodos admitidos de mayor a menor es Secure key, Enrolled second factors y Login.

  • Predeterminado: Si el tipo de política se establece como DEFAULT en un recurso, como una organización, cuando se evalúa el parámetro de configuración de reautenticación en el recurso de nivel inferior (como una carpeta), se usa el parámetro de configuración de recursos de nivel inferior si está configurado; de lo contrario, se aplica el parámetro de reautenticación de recursos de nivel superior.

Para ambos tipos de políticas, el proceso de evaluación se repite a fin de determinar el reauthSettings para el servicio o la aplicación de destino. En los siguientes ejemplos, se muestra la configuración antes y después de la evaluación. Durante la evaluación, la carpeta y la organización reauthSettings se combinan, lo que cambia el tipo de política de la carpeta a MINIMUM. Luego, la configuración combinada se usa para combinarla con el servicio o la aplicación reauthSettings.

Organización IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

Carpeta IapSettings:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "1200s"
    policyType: "DEFAULT"

Servicio o aplicación IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "7200s"
    policyType: "DEFAULT"

Configuración después de la combinación:

Organización IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

Carpeta IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "1200s"
    policyType: "MINIMUM"

Servicio o aplicación IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "1200s"
    policyType: "MINIMUM"

En el ejemplo, si el tipo de política de cada recurso se establece como DEFAULT, se usa el reauthSettings del servicio o la aplicación.

MaxAge

Usa el parámetro MaxAge para especificar la frecuencia con la que un usuario final debe volver a autenticarse, indicado en segundos. Por ejemplo, para establecer una política de reautenticación de una hora, establece los segundos en 3600, como se muestra en el siguiente ejemplo:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

El valor mínimo de maxAge es de cinco minutos.

Para establecer una política de reautenticación, completa los siguientes pasos.

Consola

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Selecciona un proyecto y, luego, el recurso en el que deseas establecer una política de reautenticación.

  3. Abre la Configuración del recurso y, en Política de reautenticación, selecciona Configurar la reautenticación.

  4. Especifica la configuración de reautenticación y, luego, haz clic en Guardar.

gcloud

Puedes establecer una política de reautenticación en los recursos y servicios a nivel de la organización, el proyecto y la carpeta. A continuación, se incluyen algunos comandos de ejemplo para configurar una política de reautenticación.

Para obtener más información, consulta gcloud iap settings set.

Ejecuta el siguiente comando:

gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

Para establecer una política de reautenticación en los recursos de una organización, ejecuta el siguiente comando:

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

Para establecer una política de reautenticación en los recursos de una carpeta, ejecuta el siguiente comando:

gcloud iap settings set SETTING_FILE --folder=FOLDER

Para establecer una política de reautenticación en todos los recursos de tipo web dentro de un proyecto, ejecuta el siguiente comando:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web

Para establecer una política de reautenticación en un servicio de App Engine dentro de un proyecto, ejecuta el siguiente comando:

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE

En el ejemplo anterior, SETTING_FILE es:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

Reemplaza lo siguiente:

  • FOLDER: El ID de la carpeta
  • ORGANIZATION: El ID de la organización.
  • PROJECT: el ID del proyecto
  • RESOURCE_TYPE: Es el tipo de recurso de IAP. Debe ser app-engine, iap_web, compute, organization o folder.
  • SERVICE: el nombre del servicio Esto es opcional cuando resource-type es compute o app-engine.
  • VERSION: Es el nombre de la versión. Esto no se aplica a compute y es opcional cuando resource-type es app-engine.

API

Ejecuta el siguiente comando para preparar un archivo iap_settings.json. Actualiza los valores según sea necesario.

cat << EOF > iap_settings.json
{
  "access_settings": {
      "reauth_settings": {
            "method": "LOGIN",
            "maxAge": "300s",
            "policy_type": "DEFAULT"
        }
    }
}
EOF

Para obtener el nombre del recurso, ejecuta el comando gcloud iap settings get. Copia el campo de nombre del resultado. Necesitarás el nombre en el siguiente paso.

gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]

Reemplaza RESOURCE_NAME en el siguiente comando por el nombre del paso anterior. Se actualizará la IapSettings.

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.reauthSettings"

Información sobre las credenciales de reautenticación

Después de una reautenticación exitosa, IAP crea una cookie en el navegador del usuario final. Para evitar que los usuarios tengan que volver a autenticarse con demasiada frecuencia cuando usan apps similares, la cookie se establece en el dominio privado de nivel superior y es válida para todo el dominio privado.

Por ejemplo, foo.example.com es un recurso protegido por IAP y tiene una política de reautenticación de IAP. Después de una reautenticación exitosa, IAP configura una cookie en example.com, ya que ese es el dominio privado de nivel superior. Las apps del mismo dominio privado de nivel superior, como bar.example.com, usan las mismas credenciales de reautenticación y no le solicitan al usuario que vuelva a autenticarse, siempre que las credenciales sean válidas.

Ten en cuenta que, para URLs como myapp.appspot.com, appspot.com es un dominio público, por lo que el dominio privado de nivel superior es myapp.appspot.com.

Limitaciones conocidas

  • La reautenticación solo se admite en los flujos de navegadores. No se admite el acceso programático a la cuenta de usuario. Por ejemplo, las aplicaciones para dispositivos móviles y computadoras de escritorio no tienen forma de volver a autenticar usuarios, ya que los recursos que requieren reautenticación son inaccesibles.
  • IAP-TCP y las cuentas de servicio están exentos de los requisitos de reautenticación.
  • La reautenticación no funciona con el tipo de miembro de IAM allUsers.
  • Las identidades externas a través de Identity Platform no son compatibles con la reautenticación, ya que no se puede acceder a los recursos que requieren reautenticación.