デフォルトでは、Workforce Identity 連携セッションの最大継続時間は 12 時間です。セッション継続時間の延長により、組織は Looker(Google Cloud コア)のお客様向けに最長 90 日間のセッションを構成できます。
セッションの延長により、従業員ユーザーは外部 ID プロバイダ(IdP)に対して毎日再認証を行うことなく、Looker(Google Cloud コア)への接続を中断することなく維持できます。Looker(Google Cloud コア)内のユーザー インタラクションは、Looker(Google Cloud コア)のセッション長の構成に則って引き続き管理されます。拡張セッション全体でセキュリティを維持するため、 Google Cloud はユーザー属性とグループ メンバーシップを外部 ID プロバイダ(IdP)からバックグラウンドで定期的に直接同期します。
このドキュメントでは、プロジェクト スコープの制御で Access Context Manager API を使用して拡張セッション ポリシーを定義し、ワークフォース プール プロバイダを構成して、アクティブなバインディングを管理する方法について説明します。
概要
Workforce Identity 連携は、Access Context Manager のアクセス バインディングを使用して、セッションの延長時間を構成します。 Google Cloud
- Google Cloud アクセス バインディング: 管理者は、Access Context Manager を使用して、組織内のすべての Workforce プールに組織全体で適用されるセッションの長さのポリシーを定義します。
restricted_projectスコープを使用すると、ポリシーは最大 90 日間の拡張セッションを付与し、そのプロジェクトが所有する Looker(Google Cloud コア)インスタンスにのみ影響します。 - バックグラウンド属性の同期:
- OIDC:
offline_accessスコープの OIDC 認可コードフロー(更新トークンを使用して、外部 IdP からユーザー属性とグループ メンバーシップをバックグラウンドで定期的に更新)または SCIM プロビジョニングを使用してサポートされます。 - SAML: SAML プロバイダの場合、SCIM プロビジョニングを使用してユーザー属性とグループ メンバーシップが最新の状態に保たれます。
- OIDC:
- 鮮度保護: ユーザー属性を 24 時間以内に外部 IdP から更新できない場合(たとえば、ユーザーが IdP でプロビジョニング解除された場合や認証情報が取り消された場合)、 Google Cloud はセッションを終了します。
始める前に
セッションの延長時間を構成する前に、必要な Identity and Access Management 権限と API が有効になっていることを確認してください。
必要なロールと権限
セッションの延長時間を構成するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- Workforce Identity プール プロバイダを構成する: Workforce プールまたは組織に対する Workforce プール管理者(
roles/iam.workforcePoolAdmin)。 - Access Context Manager の Cloud アクセス バインディングを管理する: 組織レベルの Cloud アクセス バインディング管理者(
roles/accesscontextmanager.gcpAccessAdmin)。このロールは、Access Context Manager アクセス バインディングの作成、表示、更新、削除に必要な権限を提供します。
API を有効にする
プロジェクトで Access Context Manager API と IAM API を有効にします。
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
制限事項と要件
セッションの延長時間を構成する前に、次の要件と制限事項を確認してください。
- サポートされているアプリケーション: セッション時間の延長は、Looker(Google Cloud コア)にのみ適用されます。
- 必須のプロジェクト スコープ(
restricted_project):scopedAccessSettings内で、Looker(Google Cloud コア)インスタンス(projects/{PROJECT_NUMBER})を所有する Google Cloud プロジェクトを指定するrestricted_projectクライアント スコープを使用して、セッション設定を構成する必要があります。- ESL ポリシーの影響を受けるのは、指定されたプロジェクトが所有する Looker(Google Cloud コア)アプリケーションのみです。
- 他のすべてのアプリケーション(他のプロジェクトが所有する Looker(Google Cloud コア)アプリケーションを含む)は、このポリシーの影響を受けません。
- セッション継続時間の範囲: セッション継続時間は、最小 1 時間(
3600s)から最大 90 日間(7776000s)の範囲で指定する必要があります。 - セッション設定パラメータの要件:
session_length_enabled:trueに設定する必要があります。session_length: 1 時間(3600s)から 90 日(7776000s)までの必須期間。session_reauth_method: 設定しないか、LOGINに設定する必要があります。use_oidc_max_age: 設定しないか、falseに設定する必要があります。max_inactivity: 設定解除する必要があります(またはデフォルトの0s)。restricted_projectバインディングではアイドル セッション タイムアウトはサポートされていません。
- サポートされている ID プロバイダ:
- OIDC: 認可コードフローと
offline_accessスコープで構成された OIDC プロバイダで更新トークンを発行するか、SCIM プロビジョニングで構成された OIDC プロバイダが必要です。 - SAML 2.0: Workforce プール プロバイダで SCIM プロビジョニングが有効になっている必要があります。
- OIDC: 認可コードフローと
- 属性の未更新しきい値: 24 時間の未更新しきい値が適用されます。24 時間以内に IdP からユーザー属性を更新できない場合、セッションは無効になり、ユーザーは再認証する必要があります。 Google Cloud
- Access Context Manager の制約:
- 単一の組織バインディング: Workforce プールのセッション期間の延長バインディングは、組織の「すべての Workforce プール」プリンシパル(
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool)をターゲットにする必要があります。このフェデレーション プリンシパル ID は、組織内のすべての Workforce プールに組織全体で適用されるため、このようなバインディングは組織ごとに 1 つしか存在できません。複数の Workforce プールにまたがる複数の Looker(Google Cloud コア)プロジェクトの拡張セッションを構成するには、単一バインディングのscopedAccessSettingsリストに複数のrestricted_projectスコープ ブロックを含めます。 - Workforce プール バインディングでは、アクセスレベル(
access_levels、dry_run_access_levels)は対象外です。 - ワークフォース プール バインディングでは、
GcpUserAccessBindingの最上位のsessionSettingsはサポートされていません。設定はscopedAccessSettings.activeSettings.sessionSettings内で定義する必要があります。
- 単一の組織バインディング: Workforce プールのセッション期間の延長バインディングは、組織の「すべての Workforce プール」プリンシパル(
Workforce プール プロバイダを構成する
セッションの延長を許可するには、バックグラウンド属性の更新をサポートするように Workforce プール プロバイダを構成する必要があります。OIDC または SAML プロトコルを使用するようにプロバイダを構成できます。
OIDC プロバイダを構成する
OIDC プロバイダのバックグラウンド属性の更新は、更新トークン(offline_access スコープ)または SCIM プロビジョニングを使用して処理できます。トークンベースの属性更新を使用している場合:
- 外部 IdP で、認可コードフローを使用して OIDC アプリケーションを構成し、オフライン アクセスを有効にして、更新トークンが返されるようにします。
- Google Cloudで、OIDC Workforce プール プロバイダの追加スコープに
offline_accessを追加します。
拡張セッション長のポリシーを意図したとおりに機能させるには、 Google Cloud 組織内のすべての Workforce Identity プールでオフライン アクセスを構成する必要があります。
gcloud
プロバイダに既存の追加スコープがある場合は、それらを offline_access とともに含めて、上書きされないようにします。
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
次のように置き換えます。
PROVIDER_ID: Workforce Identity プール プロバイダの名前。WORKFORCE_POOL_NAME: Workforce Identity プールの名前。EXISTING_ADDITIONAL_SCOPES: プロバイダで以前に構成された追加のスコープ(カンマ区切り)。既存の追加スコープがない場合は、このパラメータを省略します。
REST API
PATCH リクエストを送信してプロバイダを更新します。既存の追加スコープを offline_access とともに含めます。
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
リクエスト本文:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
次のように置き換えます。
WORKFORCE_POOL_NAME: Workforce Identity プールの名前。PROVIDER_ID: Workforce Identity プール プロバイダの ID。
SAML プロバイダを構成する
SAML プロバイダの場合、バックグラウンド属性の更新には SCIM プロビジョニングが必要です。
- Workforce プール プロバイダの SCIM テナントを設定します。
- SAML ID プロバイダから SCIM エンドポイントへのユーザーとグループのプロビジョニングを構成します。
手順については、Workforce Identity 連携の SCIM プロビジョニングをご覧ください。
Looker(Google Cloud コア)のポリシー構成の例
拡張セッション長ポリシーを組織の Workforce プールに割り当て、Looker(Google Cloud コア)インスタンスをホストするプロジェクトにポリシーをスコープ設定する GcpUserAccessBinding リソースを作成します。
gcloud
esl-binding.yaml という名前の YAML ファイルでポリシーを定義します。
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
アクセス バインディングを作成します。
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
次のように置き換えます。
ORG_ID: Google Cloud 組織 ID(例:123456789012)。PROJECT_NUMBER: ターゲットの Looker(Google Cloud コア)インスタンスを所有するプロジェクト番号(例:987654321098)。このプロジェクトが所有する Looker(Google Cloud コア)アプリケーションのみが、セッションの延長を受け取ります。sessionLength: セッション継続時間(秒単位)。その後にsが続きます。たとえば、7776000sは 90 日間のセッションを指定します。sessionLengthEnabled:trueに設定します。sessionReauthMethod:LOGINに設定します(または設定しないままにします)。
REST API
Access Context Manager API に POST リクエストを送信します。
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
JSON リクエストの本文:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
次のように置き換えます。
ORG_ID: Google Cloud 組織 ID(例:123456789012)。PROJECT_NUMBER: ターゲットの Looker(Google Cloud コア)インスタンスを所有するプロジェクト番号(例:987654321098)。このプロジェクトが所有する Looker(Google Cloud コア)アプリケーションのみが、セッションの延長を受け取ります。sessionLength: セッション継続時間(秒単位)。その後にsが続きます。たとえば、7776000sは 90 日間のセッションを指定します。sessionLengthEnabled:trueに設定します。sessionReauthMethod:LOGINに設定します(または設定しないままにします)。
バインディングの表示と一覧表示
バインディングは組織内のすべての Workforce プールに適用されるため、組織ごとにアクセス バインディングは最大で 1 つです。
アクティブなバインディングを一覧表示する
組織内の Workforce プール アクセス バインディングを一覧表示するには、principal:federatedPrincipal フィルタを使用します。
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
バインディングの詳細を取得する
特定の Workforce プール アクセス バインディングの詳細を表示するには:
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
BINDING_NAME は、バインディングの完全なリソース名(organizations/123456789012/gcpUserAccessBindings/b1234567890 など)に置き換えます。
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
次のように置き換えます。
ORG_ID: Google Cloud 組織 ID(例:123456789012)。BINDING_ID: アクセス バインディングの ID(例:b1234567890)。
アクセス バインディングを更新する
既存のワークフォース プール アクセス バインディングを更新して、セッションの長さを変更したり、新しいプロジェクト スコープを追加したり、既存のプロジェクト スコープを削除したりできます。
gcloud
updated-esl-binding.yamlという名前の YAML ファイルで、更新されたポリシーを定義します。scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGIN更新されたポリシーを適用します。
- スコープ設定を置き換える: 既存のプロジェクト スコープを
updated-esl-binding.yamlで定義された構成で上書きするには:
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- 既存の設定に追加する:
updated-esl-binding.yamlで定義されたプロジェクト スコープを、既存のプロジェクト スコープを上書きせずにバインディングに追加するには、--appendフラグを渡します。
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- スコープ設定を置き換える: 既存のプロジェクト スコープを
次のように置き換えます。
* BINDING_NAME: バインディングの完全なリソース名(例: organizations/123456789012/gcpUserAccessBindings/b1234567890)。
* PROJECT_NUMBER: ターゲット Looker(Google Cloud コア)インスタンスを所有するプロジェクト番号。* sessionLength: 更新されたセッション継続時間(30 日の場合は 2592000s など)。
REST API
PATCH リクエストを送信してバインディングを更新します。
- スコープ設定を置き換える: 既存のプロジェクト スコープを上書きするには:
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- 既存の設定に追加する: 既存のプロジェクト スコープを上書きせずに新しいプロジェクト スコープを追加するには、
append=trueクエリ パラメータを設定します。
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
JSON リクエストの本文:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
次のように置き換えます。
* ORG_ID: Google Cloud 組織 ID(123456789012 など)。
* BINDING_ID: アクセス バインディングの ID(b1234567890 など)。
* PROJECT_NUMBER: ターゲット Looker(Google Cloud コア)インスタンスを所有するプロジェクト番号。* sessionLength: 更新されたセッション継続時間(30 日の場合は 2592000s など)。
アクセス バインディングを削除する
Workforce プール アクセス バインディングを削除すると、組織内のすべての Workforce プールでセッションの延長が無効になります。
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
BINDING_NAME は、バインディングの完全なリソース名に置き換えます。
REST API
DELETE リクエストを送信してバインディングを削除します。
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
次のように置き換えます。
ORG_ID: Google Cloud 組織 ID。BINDING_ID: 削除するアクセス バインディングの ID。