Reautenticación de IAP

La reautenticación de IAP permite a los propietarios o administradores de servicios y aplicaciones requerir que los usuarios finales autenticados vuelvan a autenticarse tras un periodo determinado cuando accedan a un servicio o a una aplicación protegidos por IAP.Google Cloud Limita el periodo durante el cual un usuario puede acceder al servicio o a la aplicación protegidos por IAP antes de que se le pida que vuelva a autenticarse.

La reautenticación de compras en aplicaciones se ha diseñado para aplicar políticas de reautenticación en servicios y aplicaciones protegidos por compras en aplicaciones. Puedes hacerlo con servicios y aplicaciones críticos que gestionen información confidencial. Por ejemplo, puedes especificar que los usuarios que accedan a una aplicación de RR. HH. crítica se vuelvan a autenticar cada hora con un segundo factor.

Métodos de reautenticación admitidos

Puedes usar los siguientes métodos para gestionar los ajustes de reautenticación:

  • Inicio de sesión: IAP fuerza la reautenticación de la aplicación protegida y los usuarios deben volver a iniciar sesión.
  • Clave segura: los usuarios finales deben volver a autenticarse con la autenticación de dos factores basada en la llave de seguridad que hayan configurado.
  • Segundos factores registrados: los usuarios finales deben volver a autenticarse con uno de los métodos de autenticación de dos factores registrados.

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

Configurar una política de reautenticación

reauthSettings forman parte de IapSettings y, por lo tanto, se pueden definir en cualquier tipo de recurso de la jerarquía de recursos. Puedes definir reauthSettings en un servicio o una aplicación a nivel de organización, carpeta, proyecto o servicio para aplicar restricciones. 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.

Hay dos tipos de políticas que puedes usar para definir la reautenticación:

  • Mínimo: si el tipo de política se define como MINIMUM en un recurso, como una organización, al evaluar los ajustes de reautenticación en el recurso de nivel inferior, como una carpeta, se combinan los dos ajustes. Si el recurso de nivel inferior no tiene ajustes de autenticación, el resultado de la combinación serán los ajustes no vacíos del recurso de nivel superior. De lo contrario, la combinación tomará la duración de sesión más corta y el método de autenticación con mayor precedencia entre los dos recursos. El tipo de política siempre será MINIMUM. Los ajustes de autenticación combinados se usarán para combinarlos con los ajustes de autenticación 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.

  • Valor predeterminado: si el tipo de política se define como DEFAULT en un recurso, como una organización, al evaluar el ajuste de reautenticación en el recurso de nivel inferior, como una carpeta, se utiliza el ajuste del recurso de nivel inferior si está configurado. De lo contrario, se aplica el ajuste de reautenticación del recurso de nivel superior.

En ambos tipos de políticas, el proceso de evaluación se repite para determinar el reauthSettings del servicio o la aplicación de destino. En los siguientes ejemplos se muestran los ajustes antes y después de la evaluación. Durante la evaluación, la carpeta y la organización reauthSettings se combinan, lo que provoca que el tipo de política de la carpeta cambie a MINIMUM. A continuación, se usan los ajustes combinados para fusionarlos 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"

Ajustes 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 es 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 (en segundos). Por ejemplo, para definir una política de reautenticación de una hora, asigna el valor 3600 a los segundos, 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 definir una política de reautenticación, sigue estos pasos.

Consola

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

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

  4. Especifica los ajustes de la reautenticación y haz clic en Guardar.

gcloud

Puedes definir una política de reautenticación en recursos y servicios a nivel de organización, proyecto y carpeta. A continuación, se muestran algunos ejemplos de comandos para definir 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 definir 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 definir 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 definir una política de reautenticación en todos los recursos de tipo web de un proyecto, ejecuta el siguiente comando:

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

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

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

Donde SETTING_FILE es:

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

Haz los cambios siguientes:

  • FOLDER: el ID de la carpeta.
  • ORGANIZATION: el ID de la organización.
  • PROJECT: el ID del proyecto.
  • RESOURCE_TYPE: el tipo de recurso de IAP. Debe ser app-engine, iap_web, compute, organization o folder.
  • SERVICE: el nombre del servicio. Es opcional cuando resource-type es compute o app-engine.
  • VERSION: 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

Obtén el nombre del recurso ejecutando el comando gcloud iap settings get. Copia el campo de nombre de la salida. 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]

Sustituye RESOURCE_NAME en el siguiente comando por el nombre del paso anterior. El IapSettings se actualizará.

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

Una vez que se haya completado la reautenticación, IAP creará una cookie en el navegador del usuario final. Para evitar que los usuarios tengan que volver a autenticarse con demasiada frecuencia al usar aplicaciones similares, la cookie se define en el dominio privado de nivel superior y es válida para todo ese dominio privado de nivel superior.

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 correcta, IAP define una cookie en example.com, ya que es el dominio privado de nivel superior. Las aplicaciones del mismo dominio privado de nivel superior, como bar.example.com, usan las mismas credenciales de reautenticación y no solicitan al usuario que se vuelva a autenticar mientras las credenciales sean válidas.

Ten en cuenta que, en 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 navegador. No se admite el acceso a cuentas de usuario mediante programación. Por ejemplo, las aplicaciones móviles y para ordenadores no pueden volver a autenticar a los usuarios porque no pueden acceder a los recursos que requieren una nueva autenticación.
  • Las cuentas de servicio y IAP-TCP están exentas de los requisitos de reautenticación.
  • La reautenticación no funciona con el tipo de miembro de Gestión de Identidades y Accesos allUsers.
  • No se admiten identidades externas que usen Identity Platform con la reautenticación, ya que no se puede acceder a los recursos que requieren reautenticación.
  • No se admiten identidades de Workforce Identity Federation para la reautenticación de IAP.