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

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

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

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

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

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

gcloud

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

    セッション継続時間を設定するには、--session-length フラグを使用します。値は 0s、または 1 時間から 24 時間の間で指定する必要があります。継続時間は時間単位で指定します。 たとえば、「12h」を使用すると、セッションの長さが 12 時間に設定されます。 再認証方法を指定するには、--session-reauth-method フラグを使用します。たとえば、セッション継続時間を 3 時間(3h)に設定し、LOGINPASSWORDSECURITY_KEY の再認証方法を設定できます。

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

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

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

REST API

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

  • sessionLength はセッション継続時間(秒単位)です。秒数の後に s を付けてフォーマットします(例: 3600s)。値は 0s、または 3600s(1 時間)から 86400s(24 時間)の間で指定する必要があります。0s に設定した場合、sessionLengthEnabledfalse に設定するか、設定しないままにする必要があります。sessionLength0s に、sessionLengthEnabledtrue に設定することはできません。
  • sessionReauthMethod は、LOGINPASSWORDSECURITY_KEY のいずれかにできます。
  • scopedAccessSettings を使用して、アプリケーション固有のセッション管理を定義します。詳細については、特定のアプリケーションの構成を定義するをご覧ください。

Terraform

Terraform Google Cloud ユーザー アクセス バインディング リソース内で、session_settings 引数を設定して、すべてのユーザー トラフィックに適用される一般的なセッション継続時間管理を構成します。

  • session_length: セッションの継続時間(秒単位)。たとえば、3600s と指定すると、セッション継続時間は 1 時間に設定されます。末尾の 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 時間を設定しています。

scopedAccessSettings のアプリケーション固有の設定は、デフォルト(グローバル)のセッション管理を完全にオーバーライドします。アプリケーションにスコープ設定が定義されている場合、デフォルトのセッション管理はそのアプリケーションには適用されません。

グローバル管理が有効になっているときに、特定のアプリケーションをセッション管理から除外するには、それらを scopedAccessSettings に明示的に追加し、sessionLength フィールドを 0s に、sessionLengthEnabledfalse に設定する必要があります。

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 \
    --session-length=SESSION_LENGTH \
    --session-reauth-method LOGIN

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

  • ORG_ID: 組織の Google Cloud ID
  • GROUP_ID: グループキー
  • BINDING_FILE_PATH: バインディング ファイルのパス
  • SESSION_LENGTH: セッション継続時間(例: 18h

REST API

API リクエストの JSON 本文の例:

{
  "groupKey": "GROUP_ID",
  "sessionSettings": {
    "sessionLength": "64800s",
    "sessionReauthMethod": "LOGIN",
    "sessionLengthEnabled": true
  },
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7200s",
          "sessionReauthMethod": "SECURITY_KEY",
          "sessionLengthEnabled": true
        }
      }
    }
  ]
}

次の形式で POST リクエストを作成します。

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

ORG_ID は、 Google Cloud 組織の ID に置き換えます。

Terraform

グローバルに適用されるセッション管理と特定のアプリケーションに適用されるセッション管理を指定するには、session_settings 引数と scoped_access_settings 引数を設定します。

    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 = "64800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              client_id = "SENSITIVE_APP_ID"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "7200s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
    }

アプリケーションのポリシー構成の例 Google Cloud

アプリケーションのアプリケーション固有の再認証管理を構成できます。たとえば、Google Cloud SDK には SECURITY_KEY を、 コンソールには LOGIN を要求します。 Google Cloud Google Cloud 次の例は、Google Cloud SDK では SECURITY_KEY で 1 時間ごとに、 コンソールでは LOGIN で 4 時間ごとに再認証を必要とするセッション管理を作成する方法を示しています。 Google Cloud

YAML ファイル(または JSON 本文)の scopedAccessSettings セクションでは、特定のアプリケーションのデフォルト設定を オーバーライドできます。この例では、 フィールドを使用してこれらのアプリケーションを識別し、Google Cloud SDK には SECURITY_KEY で 1 時間ごとに、 コンソールには LOGIN で 4 時間ごとに再認証を必要とするように設定しています。 Google Cloud name

特定のアプリケーションをセッション管理から除外するには、 sessionLength フィールドを 0s に設定するか、sessionLengthEnabledfalse に設定します。これにより、sessionReauthMethod メソッドは無視されます。

gcloud

次の例は、セッション設定の構成を示しています。

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: true

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

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

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

  • ORG_ID: 組織の Google Cloud ID
  • GROUP_ID: グループキー
  • BINDING_FILE_PATH: バインディング ファイルのパス

REST API

API リクエストの JSON 本文の例:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

次の形式で POST リクエストを作成します。

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

ORG_ID は、 Google Cloud 組織の ID に置き換えます。

Terraform

Google Cloud SDK と Google Cloud コンソールのセッション継続時間の設定を指定するには、適切な scoped_access_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 = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

アプリケーションのデフォルトの 16 時間のセッション継続時間を Google Cloud オーバーライドする

2026 年 6 月より、一部の Google Cloud 組織にデフォルトのセッション継続時間 16 時間が導入されました。このデフォルト ポリシーは Google 管理コンソールに表示されません。影響を受ける Google Cloud 組織は、Access Context Manager API を使用してユーザーのポリシーをオーバーライドする必要があります。

このデフォルト ポリシーをオーバーライドして、これらのアプリケーションをセッション管理から除外するには(セッション継続時間を事実上無限にする)、scopedAccessSettings を使用してクラウド バインディングを作成します。このバインディングでは、Google Cloud SDK アプリケーションと Google Cloud コンソール(「Cloud Console」)アプリケーションの両方で sessionLengthEnabledfalse に設定されています。

gcloud

次の例は、これらのアプリケーションのセッション管理を無効にする YAML 構成を示しています。

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 0s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: false

このファイルを使用してアクセス バインディングを作成または更新します。

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

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

  • ORG_ID: 組織の Google Cloud ID
  • GROUP_ID: グループキー(例: このオーバーライドを適用するすべてのユーザーを含むグループ)
  • BINDING_FILE_PATH: バインディング ファイルのパス

REST API

API リクエストの JSON 本文の例:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "0s",
          "sessionReauthMethod": "LOGIN",
          "sessionLengthEnabled": false
        }
      }
    }
  ]
}

次の形式で POST リクエストを作成します。

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

ORG_ID は、 Google Cloud 組織の ID に置き換えます。

Terraform

Google Cloud SDK と Google Cloud コンソールのセッション管理を無効にするには、適切な scoped_access_settings 引数を session_length_enabled = false を指定して設定します。

    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 = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "0s"
            session_length_enabled = false
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }