このドキュメントでは、アクセス ポリシーをユーザー グループまたはサービス アカウントに適用する方法を定義する、既存のアクセス バインディングの管理方法について説明します。これらのバインディングは、必要に応じて表示、変更、削除できます。アクセス バインディングは、アクセスレベルとセッション管理をユーザー グループまたはサービス アカウントに適用する方法を決定します。
ユーザーのアクセス バインディングの作成方法と、アクセスレベルとセッション管理の詳細については、アクセス バインディングを使用してユーザー グループにポリシーを適用するをご覧ください。
サービス アカウントのアクセス バインディングの作成方法について詳しくは、 サービス アカウントのコンテキスト アウェア アクセスを構成するをご覧ください。
アクセス バインディングを一覧表示する
ユーザー グループ用に以前に作成したすべてのアクセス バインディングを一覧表示するには、次の操作を行います。
gcloud
gcloud CLI を使用してユーザーのすべてのアクセス バインディングを一覧表示するには、次のコマンドを実行します。サービス アカウントのアクセス バインディングを一覧表示するには、フィルタを使用する必要があります。
gcloud access-context-manager cloud-bindings list \
--organization ORGANIZATION_ID
ORG_ID: 組織の ID。
access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_ID を GcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
特定のリソースのアクセス バインディングを一覧表示するには、フィルタ フラグを使用します。
--filter="FILTER"
FILTER は、アクセス ポリシーがバインドされているリソースを記述するフィルタに置き換えます。例:
- ユーザー グループ:
principal:group_key
サービス アカウント:
principal:service_account OR principal:service_account_project_number
REST API
すべての USER_LOGIN アクセス バインディングを一覧表示するには、次のコマンドを実行します。
curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"
特定のリソースのアクセス バインディングを一覧表示するには、フィルタ パラメータを使用します。
curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"
以下を置き換えます。
PROJECT_ID: プロジェクトの IDORGANIZATION_ID: 組織の IDFILTER: アクセス ポリシーがバインドされているリソースを記述するフィルタ。例:ユーザー グループ:
principal:group_keyサービス アカウント:
principal:service_account OR principal:service_account_project_number
アクセス バインディングを表示する
ユーザー グループにアクセス バインディングを作成すると、 Google Cloud コンソールと Google Cloud API へのアクセスは、 バインドされたアクセスレベルのレベルに応じて制御されます。
作成したアクセス バインディングの詳細を表示、編集、削除できます。
コンソール
コンソールで、[Access Context Manager] ページに移動します。 Google Cloud
プロンプトが表示されたら、プロジェクトを選択します。アクセス バインディングが [Access Context Manager] ページに表示されます。
gcloud
アクセス バインディングの詳細を表示するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_ID
BINDING_ID は、アクセス バインディングの ID またはバインディングの ID です。
API
アクセス バインディングの詳細を表示します。
HTTP メソッドと URL:
GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
"accessPolicies/305009197125/accessLevels/device_lock"
],
"dryRunAccessLevels": [
"accessPolicies/305009197125/accessLevels/another"
]
}
アクセス バインディングを更新する
アクセス バインディングを更新すると、次のことができるようになります。
- ポリシーが適用されるアプリケーションを追加、削除、変更する。
- ユーザー グループ内のアプリケーションのアクセスレベルを変更する。
- 新しいドライランのアクセスレベルを追加するか、既存のアクセスレベルを本番環境レベルに昇格します。
コンソール
コンソールで、[Access Context Manager] ページに移動します。 Google Cloud
プロンプトが表示されたら、プロジェクトを選択します。
[Access Context Manager] ページでアクセス バインディングを選択し、[編集] をクリックして更新します。
コンソールで、ドライランのアクセスレベルまたはセッション 管理を使用してアクセス バインディングを更新することはできません。 Google Cloud
gcloud
YAML バインディング ファイルを作成します。
gcloud access-context-manager cloud-bindings update \ --binding=ACCESS_BINDING \ --binding-file=BINDING_FILE_PATH \ --level=DEFAULT_ACCESS_LEVEL \ --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]以下を置き換えます。
-
ACCESS_BINDINGの形式はorganizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAMEです。 -
BINDING_FILE_PATH: アクセス バインディング スキームを含む YAML ファイルのパス。バインディング ファイルは
scopedAccessSettingsのみをサポートしています。 -
DEFAULT_ACCESS_LEVEL: 省略可能なアクセスレベル名(
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAMEの形式)。POLICY_IDはアクセス ポリシー ID に、ACCESS_LEVEL_NAMEはアクセスレベル名に置き換えます。 - DEFAULT_DRY_RUN_ACCESS_LEVEL_2:省略可能なアクセスレベル名( `accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME` の形式)。 このフラグを指定すると、 YAML で指定されていない場合、デフォルトで指定されたドライラン アクセスレベルがすべてのアプリケーションに適用されます。
-
DEFAULT_SESSION_LENGTH:オプションのセッション継続時間(時間形式)。
15 時間の場合は
15h、2 時間の場合は2hなど。 -
DEFAULT_SESSION_REAUTH_METHOD: ユーザーに本人の再確認を求めるオプションのメソッド。次のいずれかである必要があります。
LOGIN: 標準ログインを適用します。これには、MFA や Workspace で定義されたその他の要素を含めることができます。PASSWORD: 他の要素が定義されている場合でも、パスワードのみを必須にします。パスワードが外部 IdP を使用して管理されている場合、ユーザーは IdP にリダイレクトされます。IdP セッションが公開されている場合、ユーザーは暗黙的に再認証されます。IdP が公開されていない場合、ユーザーは IdP 経由でログインする必要があります。SECURITY_KEY: ハードウェア セキュリティ キーが必要。
--level引数と--binding-file引数の連携の仕組み--binding-fileのみを使用する場合、ファイル内のアプリケーションにのみポリシーが適用されます。--levelのみを使用する場合、アクセスレベルはすべてのアプリケーションに適用されます。- 両方を使用すると、ルールが結合されます。
--level値はすべてのアプリケーションに適用されますが、--binding-fileで指定された YAML ファイル内のポリシーは、ファイルで定義されているアプリケーションにのみ適用されます。
セッション管理の操作
- すべてのアプリケーションにデフォルトのセッション管理を設定するには、
--session-lengthと--session-reauth-methodを使用します。 - YAML ファイルでセッション管理も定義すると、それらのセッション管理によって、特定のアプリケーションのデフォルト設定がオーバーライドされます。
--session-lengthと--session-reauth-methodは一緒に使用する必要があります。
デフォルトのアクセスレベルまたはデフォルトのドライランのアクセスレベルを削除するには、空の文字列(
--level=や--dry-run-level=など)を指定します。これらの引数を指定しない場合、updateコマンドを実行しても変更されません。セッション管理を削除するには、
--session-length=0を設定します。-
API
JSON 本文を作成します。
{ "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], "scopedAccessSettings": [ { "scope": { "clientScope": { "restrictedClientApplication": { "clientId": "CLIENT_ID" } } }, "activeSettings": { "accessLevels": [ "ACCESS_LEVEL_A" ], "sessionSettings": { "sessionLength": "SESSION_LENGTH", "sessionReauthMethod": "SESSION_REAUTH_METHOD", "sessionLengthEnabled": true } } }, { "scope": { "clientScope": { "restrictedClientApplication": { "name": "CLIENT_NAME" } } }, "activeSettings": { "accessLevels": [ "ACCESS_LEVEL_C" ] } } ] }以下を置き換えます。
-
DEFAULT_ACCESS_LEVEL: 省略可能なアクセスレベル名(
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAMEの形式)。POLICY_IDはアクセス ポリシー ID に、ACCESS_LEVEL_NAMEはアクセスレベル名に置き換えます。 - CLIENT_ID: OAuth クライアント ID。アプリケーションに
sessionSettingsが含まれている場合は、clientIdまたはnameを使用できます。 - ACCESS_LEVEL_A:アクセスレベルの名前(
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAMEの形式)。 - SESSION_LENGTH: ISO 8601 Duration 形式で指定するオセッション継続時間(30 分の場合は
30m、2 時間の場合は2hなど)。 SESSION_REAUTH_METHOD: ユーザーに本人の再確認を求めるオプションのメソッド。次のいずれかである必要があります。
LOGIN: 標準ログインを適用します。これには、MFA や Workspace で定義されたその他の要素を含めることができます。PASSWORD: 他の要素が定義されている場合でも、パスワードのみを必須にします。パスワードが外部 IdP を使用して管理されている場合、ユーザーは IdP にリダイレクトされます。IdP セッションが公開されている場合、ユーザーは暗黙的に再認証されます。IdP が公開されていない場合、ユーザーは IdP 経由でログインする必要があります。SECURITY_KEY: ハードウェア セキュリティ キーが必要。
CLIENT_NAME: クライアント名。アプリケーションに
sessionSettingsが含まれている場合は、nameまたはclientIdを使用できます。ACCESS_LEVEL_C:アクセスレベルの名前(
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAMEの形式)。
-
DEFAULT_ACCESS_LEVEL: 省略可能なアクセスレベル名(
PATCH リクエストを送信します。
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK以下を置き換えます。
-
ACCESS_BINDINGの形式はorganizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAMEです。 - FIELD_MASK: 更新するフィールドのカンマ区切りリスト(必須)。アクセス バインディングのどの部分を変更するかを API に指示します。
fieldMaskには、更新するリクエスト本文の最上位の JSON キーを含める必要があります。これには、accessLevels、dryRunAccessLevels、scopedAccessSettingsを含めることができます。成功すると、JSON オブジェクトの表現が返されます。問題がある場合は、エラー メッセージが表示されます。
-
アクセス バインディングを削除する
コンソール
コンソールで、[Access Context Manager] ページに移動します。 Google Cloud
プロンプトが表示されたら、プロジェクトを選択します。
[Access Context Manager] ページでアクセス バインディングを選択し、[削除] をクリックします。
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding ACCESS_BINDING
以下を置き換えます。
-
ACCESS_BINDINGの形式はorganizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAMEです。 -
ACCESS_BINDING_NAMEは、アクセス バインディングの作成時にname識別子に対して返される一意の文字列です。
API
リクエスト データを使用する前に、 次のように置き換えます:
-
ACCESS_BINDING_NAMEは、アクセス バインディングの作成時にname識別子に対して返される一意の文字列です。
HTTP メソッドと URL:
DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。