IAP の再認証

IAP の再認証を使用すると、サービスとアプリケーションのオーナーまたは Google Cloud 管理者は、認証済みのエンドユーザーに対し、IAP で保護されたサービスまたはアプリケーションへのアクセス時に指定された時間が経過した後に、再認証を義務付けることができます。IAP で保護されたサービスまたはアプリケーションへユーザーがアクセスできる期間を制限し、これが過ぎるとユーザーは再度認証を求められます。

IAP の再認証は、IAP で保護されたサービスとアプリケーションに再認証ポリシーを適用するように設計されています。機密情報を処理する重要なサービスやアプリケーションでは、このように設定することをおすすめします。たとえば、重要な HR アプリケーションにアクセスするユーザーは、第 2 要素を使用して 1 時間ごとに再認証を行うように指定できます。

サポートされている再認証方法

再認証の設定は、次の方法で管理できます。

  • ログイン: IAP は保護されたアプリケーションの再認証を強制し、ユーザーは再度ログインする必要があります。
  • 安全な鍵: エンドユーザーは、構成済みのセキュリティ キーベースの 2 要素認証を使用して再認証する必要があります。
  • 登録された第 2 要素: エンドユーザーは、登録された第 2 要素の認証方法のいずれかを使用して再認証する必要があります。

詳しくは、IapSettings をご覧ください。

再認証ポリシーの設定

reauthSettingsIapSettings の一部であるため、リソース階層の任意のリソースタイプに設定できます。組織、フォルダ、プロジェクト、またはサービスレベルで、サービスまたはアプリケーションに reauthSettings を設定して、制限を適用できます。たとえば、組織内のすべてのアプリケーションまたは特定のアプリケーションに対して、セッションの長さを最大 1 時間に制限できます。

再認証の設定に使用できるポリシータイプは 2 つあります。

  • 最小: リソース(組織など)でポリシータイプが MINIMUM に設定されている場合、これより下位レベルのリソース(フォルダなど)の再認証設定を評価すると、2 つの設定が結合されます。下位レベルのリソースに再認証の設定がない場合、結合結果は上位レベルのリソースの空でない設定になります。それ以外の場合は、2 つのリソースのうちのセッション継続時間が短く、再認証方法の優先度の高い方が結合で使用されます。ポリシータイプは常に MINIMUM です。結合された再認証の設定は、次の下位レベルのリソース(プロジェクトなど)の再認証設定と結合するために使用されます。

    サポートされている 3 つのメソッドは、優先度の高い方から Secure keyEnrolled second factorsLogin の順でネストされます。

  • デフォルト: リソース(組織など)でポリシータイプが DEFAULT に設定されている場合、これより下位レベルのリソース(フォルダなど)の再認証設定を評価するときに、下位レベルのリソース設定が使用されます(構成されている場合)。それ以外の場合は、上位レベルのリソースの再認証設定が適用されます。

どちらのポリシータイプも評価プロセスを繰り返して、ターゲット サービスまたはアプリケーションの reauthSettings を決定します。次の例は、評価の前後の設定を示しています。評価中に、フォルダと組織 reauthSettings が結合され、フォルダのポリシータイプが MINIMUM に変更されます。その後、結合された設定を使用して、サービスまたはアプリケーション reauthSettings と結合します。

組織IapSettings:

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

フォルダIapSettings:

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

サービスまたはアプリケーション IapSettings:

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

結合後の設定:

組織IapSettings:

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

フォルダIapSettings:

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

サービスまたはアプリケーション IapSettings:

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

この例では、すべてのリソースのポリシータイプが DEFAULT に設定されている場合に、サービスまたはアプリケーションの reauthSettings が使用されます。

MaxAge

MaxAge パラメータを使用して、エンドユーザーが再認証を行う頻度を秒単位で指定します。たとえば、1 時間の再認証ポリシーを設定するには、次の例のように秒単位を 3600 に設定します。

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

maxAge の最小値は 5 分です。

再認証ポリシーを設定するには、次の手順を行います。

コンソール

  1. [Identity-Aware Proxy] ページに移動します。
    [Identity-Aware Proxy] ページに移動
  2. プロジェクトを選択し、再認証ポリシーを設定するリソースを選択します。

  3. リソースの [設定] を開き、[再認証ポリシー] で [再認証を構成する] を選択します。

  4. 再認証の設定を指定し、[保存] をクリックします。

gcloud

組織レベル、プロジェクト レベル、フォルダレベルで、リソースとサービスに対して再認証ポリシーを設定できます。再認証ポリシーを設定するためのコマンドの例を次に示します。

詳細については、gcloud iap settings set をご覧ください。

次のコマンドを実行します。

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

組織内のリソースに再認証ポリシーを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

フォルダ内のリソースに再認証ポリシーを設定するには、次のコマンドを実行します。

gcloud iap settings set SETTING_FILE --folder=FOLDER

プロジェクト内のすべてのウェブタイプ リソースに再認証ポリシーを設定するには、次のコマンドを実行します。

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

プロジェクト内の App Engine サービスに再認証ポリシーを設定するには、次のコマンドを実行します。

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

ここで、SETTING_FILE は次のようになります。

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

次のように置き換えます。

  • FOLDER: フォルダ ID。
  • ORGANIZATION: 組織 ID。
  • PROJECT: プロジェクト ID。
  • RESOURCE_TYPE: IAP リソースタイプ。app-engineiap_webcomputeorganization、またはfolder にする必要があります。
  • SERVICE: サービス名。resource-typecompute または app-engine の場合、これは省略可能です。
  • VERSION: バージョン名。これは compute に適用されず、resource-typeapp-engine の場合は省略可能です。

API

次のコマンドを実行して iap_settings.json ファイルを準備します。必要に応じて値を更新します。

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

gcloud iap settings get コマンドを実行してリソース名を取得します。出力から名前フィールドをコピーします。次のステップで名前が必要になります。

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

次のコマンドの RESOURCE_NAME は、前のステップで取得した名前に置き換えます。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"

再認証の認証情報について

再認証に成功すると、IAP はエンドユーザーのブラウザに Cookie を作成します。類似したアプリの使用時に頻繁に再認証が行われないようにするため、Cookie は最上位のプライベート ドメインに設定され、そのプライベート ドメイン全体で有効になります。

たとえば、foo.example.com は IAP で保護されたリソースで、IAP 再認証ポリシーを持ちます。再認証に成功すると、IAP は、最上位のプライベート ドメインである example.com に Cookie を設定します。bar.example.com などの同じ最上位のプライベート ドメインのアプリは、同じ再認証の認証情報を使用します。認証情報が有効であれば、ユーザーに再認証を求めるメッセージは表示されません。

myapp.appspot.com のような URL の場合、appspot.com はパブリック ドメインであるため、最上位のプライベート ドメインは myapp.appspot.com になります。

既知の制限事項

  • 再認証はブラウザフローでのみサポートされています。プログラムによるユーザー アカウントへのアクセスはサポートされていません。たとえば、モバイルアプリやデスクトップ アプリでは、再認証を必要とするリソースにアクセスできないため、ユーザーを再認証する方法はありません。
  • サービス アカウントと IAP-TCP は、再認証の要件から除外されます。
  • 再認証は、IAM メンバータイプ allUsers では機能しません。
  • 再認証を必要とするリソースにアクセスできないため、再認証では Identity Platform を介した外部 ID はサポートされていません。