Réauthentification IAP

La réauthentification IAP permet aux propriétaires de services et d'applications ou aux administrateurs Google Cloud d'exiger que les utilisateurs finaux authentifiés se réauthentifient après un certain temps lorsqu'ils accèdent à un service ou à une application protégés par IAP. Elle limite la période pendant laquelle un utilisateur peut accéder à l'application ou au service protégés par IAP avant d'être invité à s'authentifier à nouveau.

La réauthentification IAP est conçue pour appliquer des règles de réauthentification pour les services et les applications protégés par IAP. Cela peut vous être utile pour des services et des applications critiques qui gèrent des informations confidentielles. Par exemple, vous pouvez spécifier que les utilisateurs qui accèdent à une application de RH critique doivent s'authentifier à nouveau toutes les heures à l'aide d'un deuxième facteur.

Méthodes de réauthentification compatibles

Vous pouvez utiliser les méthodes suivantes pour gérer les paramètres de réauthentification :

  • Connexion: IAP force la réauthentification de l'application protégée, et les utilisateurs doivent se reconnecter.
  • Clé sécurisée: les utilisateurs finaux doivent se réauthentifier à l'aide de l'authentification à deux facteurs basée sur des clés de sécurité qu'ils ont configurée.
  • Deuxièmes facteurs enregistrés: les utilisateurs finaux doivent s'authentifier de nouveau à l'aide de l'une des méthodes d'authentification à deux facteurs enregistrés.

Pour en savoir plus, consultez la section IapSettings.

Configurer une règle de réauthentification

Les reauthSettings font partie de IapSettings et peuvent donc être définis sur n'importe quel type de ressource dans la hiérarchie des ressources. Vous pouvez définir reauthSettings sur un service ou une application au niveau de l'organisation, d'un dossier, d'un projet ou d'un service afin d'appliquer des restrictions. Par exemple, vous pouvez limiter la durée des sessions à une heure au maximum pour toutes les applications d'une organisation ou pour une application spécifique.

Vous pouvez définir deux types de règles pour la réauthentification :

  • Minimum: si le type de règle est défini sur MINIMUM pour une ressource (une organisation, par exemple), les deux paramètres sont fusionnés lors de l'évaluation des paramètres de réauthentification sur la ressource de niveau inférieur (un dossier, par exemple). Si la ressource de niveau inférieur n'a pas de paramètres de réauthentification, le résultat de la fusion correspond aux paramètres non vides de la ressource de niveau supérieur. Sinon, la fusion prend la durée de session la plus courte et la méthode de réauthentification ayant la priorité la plus élevée entre les deux ressources. Le type de règle est toujours MINIMUM. Les paramètres de réauthentification fusionnés seront utilisés pour fusionner avec les paramètres de réauthentification de la ressource de niveau inférieur suivante, comme un projet.

    L'ordre de priorité des trois méthodes acceptées (de la plus élevée à la plus faible) est Secure key, Enrolled second factors et Login.

  • Par défaut: si le type de règle est défini sur DEFAULT pour une ressource (organisation, par exemple), lors de l'évaluation du paramètre de réauthentification sur la ressource de niveau inférieur (telle qu'un dossier), le paramètre de ressource de niveau inférieur est utilisé s'il est configuré. Sinon, le paramètre de réauthentification de niveau supérieur est appliqué.

Pour les deux types de règles, le processus d'évaluation est répété afin de déterminer la valeur reauthSettings du service ou de l'application cible. Les exemples suivants montrent les paramètres avant et après l'évaluation. Lors de l'évaluation, le dossier et l'organisation reauthSettings sont fusionnés, ce qui entraîne le remplacement du type de règle du dossier par MINIMUM. Les paramètres fusionnés sont ensuite utilisés pour fusionner avec le service ou l'application reauthSettings.

Organisation IapSettings:

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

Paramètres IapSettings pour un dossier :

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

IapSettings du service ou de l'application:

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

Paramètres après la fusion:

Organisation IapSettings:

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

Paramètres IapSettings pour un dossier :

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

IapSettings du service ou de l'application:

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

Dans cet exemple, si le type de stratégie de chaque ressource est défini sur DEFAULT, le reauthSettings du service ou de l'application est utilisé.

MaxAge

Utilisez le paramètre MaxAge pour spécifier la périodicité, exprimée en secondes, selon laquelle un utilisateur final doit se réauthentifier. Par exemple, pour définir une règle de réauthentification d'une heure, définissez le paramètre des secondes sur 3 600, comme indiqué dans l'exemple suivant :

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

La valeur minimale de maxAge est de cinq minutes.

Pour définir une règle de réauthentification, procédez comme suit.

Console

  1. Accédez à la page Identity-Aware Proxy.
    Accéder à la page "Identity-Aware Proxy"
  2. Sélectionnez un projet, puis la ressource pour laquelle vous souhaitez définir une règle de réauthentification.

  3. Ouvrez les paramètres de la ressource, puis sélectionnez Configurer la réauthentification sous Règles de réauthentification.

  4. Indiquez les paramètres de réauthentification, puis cliquez sur Enregistrer.

gcloud

Vous pouvez définir une règle de réauthentification sur les ressources et les services au niveau de l'organisation, du projet et du dossier. Voici quelques exemples de commandes permettant de définir une règle de réauthentification.

Pour en savoir plus, consultez la page gcloud iap settings set.

Exécutez la commande suivante :

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

Pour définir une règle de réauthentification sur les ressources d'une organisation, exécutez la commande suivante:

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

Pour définir une règle de réauthentification sur les ressources d'un dossier, exécutez la commande suivante:

gcloud iap settings set SETTING_FILE --folder=FOLDER

Pour définir une règle de réauthentification sur toutes les ressources de type Web d'un projet, exécutez la commande suivante:

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

Pour définir une règle de réauthentification sur un service App Engine au sein d'un projet, exécutez la commande suivante:

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

SETTING_FILE correspond à :

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

Remplacez les éléments suivants :

  • FOLDER: ID du dossier
  • ORGANIZATION : ID de l'organisation.
  • PROJECT : ID du projet
  • RESOURCE_TYPE: type de ressource IAP. Doit être app-engine, iap_web, compute, organization ou folder.
  • SERVICE : le nom du service. Cette étape est facultative lorsque resource-type est défini sur compute ou app-engine.
  • VERSION: nom de la version. Cela ne s'applique pas à compute et est facultatif lorsque resource-type est défini sur app-engine.

API

Exécutez la commande suivante pour préparer un fichier iap_settings.json. Mettez à jour les valeurs si nécessaire.

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

Obtenez le nom de la ressource en exécutant la commande gcloud iap settings get. Copiez le champ de nom figurant dans le résultat. Vous en aurez besoin à l'étape suivante.

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

Dans la commande suivante, remplacez RESOURCE_NAME par le nom obtenu à l'étape précédente. IapSettings sera mis à jour.

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"

Comprendre les identifiants de réauthentification

Après une réauthentification réussie, IAP crée un cookie dans le navigateur de l'utilisateur final. Pour éviter que les utilisateurs n'aient à se réauthentifier trop souvent lorsqu'ils utilisent des applications similaires, le cookie est défini sur le domaine privé de premier niveau et valide pour l'ensemble du domaine de niveau privé.

Par exemple, foo.example.com est une ressource protégée par IAP et dispose d'une règle de réauthentification IAP. Après une réauthentification réussie, IAP définit un cookie sur example.com, car il s'agit du domaine privé de premier niveau. Les applications appartenant au même domaine privé de premier niveau, comme bar.example.com, utilisent les mêmes identifiants de réauthentification et n'invitent pas l'utilisateur à s'authentifier de nouveau, tant qu'ils sont valides.

Notez que pour les URL telles que myapp.appspot.com, appspot.com est un domaine public. Par conséquent, le domaine privé de premier niveau est myapp.appspot.com.

Limitations connues

  • La réauthentification n'est possible que pour les flux de navigateur. L'accès programmatique au compte utilisateur n'est pas compatible. Par exemple, les applications mobiles et de bureau ne permettent pas de réauthentifier les utilisateurs, car les ressources nécessitant une réauthentification sont inaccessibles.
  • Les comptes de service et IAP-TCP ne sont pas soumis aux exigences de réauthentification.
  • La réauthentification ne fonctionne pas avec le type de membre IAM allUsers.
  • Les identités externes via Identity Platform ne sont pas compatibles avec la réauthentification, car les ressources nécessitant une réauthentification ne sont pas accessibles.