再認証のセッション管理を構成する

セッション管理では、アクセス権が付与された後にユーザーが再認証する必要がある頻度と、完全なログイン、パスワードのみ、またはハードウェア セキュリティ キーのいずれが必要かを設定できます。

セッション管理を適用すると、次のことができるようになります。

  • 特権ユーザーに対して再認証を頻繁に適用する: プロジェクト オーナーや課金管理者など、権限を昇格できるユーザーに対して、より頻繁に再認証するよう要求します。
  • 特定のアプリケーションのセッションが長くなるよう構成する: 特定のアプリケーション(Gemini のようなコンテキストベースの AI アプリケーションなど)のセッション時間を長くして、パフォーマンスの最適化に必要な大きなコンテキスト ウィンドウを維持します。

セッションの長さと再認証方法を定義する

セッション管理は、Access Context Manager バインディングを作成するときに定義できます。セッション管理の詳細については、アクセス バインディングを使用してユーザー グループにポリシーを適用するをご覧ください。

gcloud

  • すべてのアプリケーションのデフォルトのセッション管理を設定する

    --session-length フラグを使用してセッションの長さを設定します。値の範囲は 0 ~ 24 時間です。ISO 8601 期間形式を使用して期間を指定します。たとえば、「12H30M5S」を使用して、12 時間 30 分 5 秒のセッションを設定します。再認証方法を指定するには、--session-reauth-method フラグを使用します。たとえば、セッション継続時間を 30 分(30m)に設定し、LOGINPASSWORDSECURITY_KEY の再認証方法を設定できます。

    これは、アプリ固有の設定でオーバーライドされていない限り、すべてのアプリケーションに適用されます。

  • アプリケーション固有のセッション管理を設定する

    YAML ファイルで scopedAccessSettings を定義し、clientId を使用して特定のアプリケーションのセッション管理を指定します。これにより、これらのアプリのデフォルトのセッション管理をオーバーライドできます。その後、--binding-file flag を使用して YAML ファイルを渡すことができます。

API

POST リクエストの JSON 本文の sessionSettings オブジェクト内で sessionLength フィールドと sessionReauthMethod フィールドを定義して、GcpUserAccessBinding バインディングを作成または更新します。

  • sessionLength は、0 ~ 24 時間のセッションの長さです。値は文字列で、0 ~ 86400 の整数と、その直後に続く文字「s」で構成されている必要があります。
  • sessionReauthMethod は、LOGINPASSWORDSECURITY_KEY のいずれかです。
  • scopedAccessSettings を使用して、アプリケーション固有のセッション管理を定義します。詳細については、特定のアプリケーションの構成を定義するをご覧ください。

Terraform

Terraform Google Cloud ユーザー アクセス バインディング リソース内で、session_settings 引数を入力して、すべてのユーザー トラフィックに適用される一般的なセッション長の制御を構成します。

  • session_length: セッションの長さ(秒単位)。たとえば、900 秒と設定すると、セッションの長さは 15 分になります。末尾の「s」は必須です。
  • session_length_enabled: 指定されたセッション設定を無効にするには、false に設定します。
  • session_reauth_method: 認証情報の更新に使用される認証チャレンジのタイプ。選択肢は LOGINPASSWORDSECURITY_KEY です。
  • use_oidc_max_age: 認証情報が OAuth トークンの場合に指定される、オプションの OIDC 最大経過時間パラメータをセッションが尊重するかどうかを構成するために使用される高度なフィールド。

セッション管理を定義する際の主な考慮事項は次のとおりです。

  • セッション管理設定を解決するときに使用されるのは、リクエストと一致する、作成済みの最新のアクセス バインディングのみです。

ポリシー構成の例

次の例は、再認証を必要とするセッション管理の作成方法を示しています。この再認証は、LOGIN では 18 時間ごと、特定のアプリケーション(SENSITIVE_APP_ID)では SECURITY_KEY で 2 時間ごとに行われます。

デフォルトの設定

Google Cloud CLI コマンドの --level--session-length--session-reauth-method フラグ(または API 呼び出しの JSON 本文の対応するフィールド)は、scopedAccessSettings で明示的に定義されていないすべてのアプリケーションのデフォルトの動作を設定します。

アプリケーション固有の設定

YAML ファイル(または JSON 本文)の scopedAccessSettings セクションでは、特定のアプリケーションのデフォルト設定をオーバーライドできます。この例では、クライアント ID が SENSITIVE_APP_ID のアプリケーションに SECURITY_KEY で再認証する場合の要件として、2 時間を設定しています。

特定のアプリをセッション管理の対象外にするには、sessionLength フィールドを 0s または sessionLengthEnabled から false に設定します。sessionReauthMethod メソッドは無視されます。

gcloud

設定の構成:

scopedAccessSettings:
  scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true

アクセス バインディングを作成します。

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 18h \
    --session-reauth-method LOGIN

API

JSON 本文:

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

POST リクエスト:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

Terraform

すべてのアプリで「グループキー」からアクセスするユーザーのアクセス リクエストのセッションの長さを指定するには:

    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 = "1800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

特定のアプリ( Google Cloud コンソールなど)を使用して特定の Google グループからアクセスするユーザーのリクエストのセッションの長さを指定するには、active_settingssession_settings 引数を使用して、適切な scoped_access_settings 引数を入力します。session_settings 内のサブ引数は、トップレベルの引数と同じです。

    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 = "1800s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }