セッション管理では、アクセス権が付与された後にユーザーが再認証する必要がある頻度と、完全なログイン、パスワードのみ、またはハードウェア セキュリティ キーのいずれが必要かを設定できます。
セッション管理を適用すると、次のことができるようになります。
- 特権ユーザーに対して再認証を頻繁に適用する: プロジェクト オーナーや課金管理者など、権限を昇格できるユーザーに対して、より頻繁に再認証するよう要求します。
- 特定のアプリケーションのセッションが長くなるよう構成する: 特定のアプリケーション(コンテキストベースの AI アプリケーション(Gemini など))のセッション時間を長くして、パフォーマンスの最適化に必要な大きなコンテキスト ウィンドウを維持します。
セッションの長さと再認証方法を定義する
セッション管理は、Access Context Manager バインディングを作成するときに定義できます。 セッション管理の詳細については、アクセス バインディングを使用してユーザー グループにポリシーを適用するをご覧ください。
gcloud
すべてのアプリケーションのデフォルトのセッション管理を設定する
セッション継続時間を設定するには、
--session-lengthフラグを使用します。値は0s、または 1 時間~ 24 時間の範囲で指定する必要があります。期間は時間単位で指定します。 たとえば、「12h」を使用すると、セッションの長さが 12 時間に設定されます。 再認証方法を指定するには、--session-reauth-methodフラグを使用します。たとえば、セッション継続時間を 3 時間(3h)に設定し、LOGIN、PASSWORD、SECURITY_KEYの再認証方法を設定できます。これは、アプリ固有の設定でオーバーライドされていない限り、すべてのアプリケーションに適用されます。
-
YAML ファイルで
scopedAccessSettingsを定義し、clientIdを使用して特定のアプリケーションのセッション管理を指定します。これにより、これらのアプリのデフォルトのセッション管理をオーバーライドできます。その後、--binding-file flagを使用して YAML ファイルを渡すことができます。
REST API
POST リクエストの JSON 本文の sessionSettings オブジェクト内で sessionLength フィールドと sessionReauthMethod フィールドを定義して、GcpUserAccessBinding バインディングを作成または更新します。
sessionLengthはセッション継続時間(秒単位)です。値は0s、または 1 時間~ 24 時間の範囲で指定する必要があります。秒数を指定し、その後にsを続けます(例:3600sはセッションの長さが 1 時間であることを示します)。sessionReauthMethodには、LOGIN、PASSWORD、SECURITY_KEYのいずれかを指定できます。scopedAccessSettingsを使用して、アプリケーション固有のセッション管理を定義します。詳細については、特定のアプリケーションの構成を定義するをご覧ください。
Terraform
Terraform Google Cloud ユーザー アクセス バインディング リソース内で、session_settings 引数に値を入力して、すべてのユーザー トラフィックに適用される一般的なセッション継続時間管理を構成します。
session_length: セッションの長さ(秒単位)。たとえば、3600sと指定すると、セッションの長さは 1 時間に設定されます。末尾にsを指定する必要があります。session_length_enabled: 指定したセッション設定を無効にする場合は、false に設定します。session_reauth_method: 認証情報の更新に使用される認証チャレンジのタイプ。選択肢はLOGIN、PASSWORD、SECURITY_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=SESSION_LENGTH \
--session-reauth-method LOGIN
次のように置き換えます。
ORG_ID: 組織の IDGROUP_ID: グループキーBINDING_FILE_PATH: バインディング ファイルのパスDEFAULT_ACCESS_LEVEL: デフォルトのアクセスレベルSESSION_LENGTH: セッションの長さ(例:18h)
REST API
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
ORG_ID は、組織の ID に置き換えます。
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 = "3600s"
session_length_enabled = true
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
特定のアプリ(コンソールなど)を使用して特定の Google グループからアクセスするユーザーからのリクエストのセッションの長さを指定するには、適切な scoped_access_settings 引数に active_settings の session_settings 引数を入力します。 Google Cloud 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 = "3600s"
session_length_enabled = true
session_reauth_method = "LOGIN"
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 セクションでは、特定のアプリケーションのデフォルト設定を
オーバーライドできます。この例では、
SECURITY_KEY を使用して Google Cloud SDK に 1 時間ごと、LOGIN を使用してコンソールに 4 時間ごとに再認証を必要とするように設定し、name フィールドを使用してこれらのアプリケーションを識別しています。 Google Cloud
特定のアプリケーションをセッション管理から除外するには、
sessionLength フィールドを 0s に設定するか、sessionLengthEnabled
を false に設定します。これにより、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: 組織の IDGROUP_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 は、組織の 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
}
}
}
}