セッション管理では、アクセス権が付与された後にユーザーが再認証する必要がある頻度と、完全なログイン、パスワードのみ、またはハードウェア セキュリティ キーのいずれが必要かを設定できます。
セッション管理を適用すると、次のことができるようになります。
- 特権ユーザーに対して再認証を頻繁に適用する: プロジェクト オーナーや課金管理者など、権限を昇格できるユーザーに対して、より頻繁に再認証するよう要求します。
- 特定のアプリケーションのセッションが長くなるよう構成する: サポートされているアプリケーション( Google Cloud コンソール、Google Cloud SDK、特定の OAuth アプリなど)のセッション時間を長くして、パフォーマンスの最適化に必要な大きなコンテキスト ウィンドウを維持します。
セッションの長さと再認証方法を定義する
セッション管理は、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 Cloud コンソールなど)を使用して特定の Google グループからアクセスするユーザーのリクエストのセッションの長さを指定するには、active_settings の session_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 = "3600s"
session_length_enabled = true
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
}
}
}
Google Cloud アプリケーションのポリシー構成の例
Google Cloud アプリケーションにアプリケーション固有の再認証管理を構成できます。たとえば、Google Cloud SDK には SECURITY_KEY を、 Google Cloud コンソールには LOGIN を要求できます。次の例は、SECURITY_KEY で Google Cloud SDK の再認証を 1 時間ごとに、LOGIN で Google Cloud コンソールの再認証を 4 時間ごとに要求するセッション管理を作成する方法を示しています。
YAML ファイル(または JSON 本文)の scopedAccessSettings セクションでは、特定のアプリケーションのデフォルト設定をオーバーライドできます。この例では、SECURITY_KEY で Google Cloud SDK の再認証要件を 1 時間に設定し、LOGIN で Google Cloud コンソールの再認証要件を 4 時間に設定しています。これらのアプリケーションを識別するために name フィールドを使用しています。
特定のアプリケーションをセッション管理の対象外にするには、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
}
}
}
}