このドキュメントでは、コンテキスト ベースのルールを使用して、Google Cloud コンソールと Google Cloud APIs へのアクセスを保護する方法について説明します。
Google Cloud コンソールと Google Cloud API のコンテキストアウェア アクセスは、Google Cloud コンソールと Google Cloud API へのアクセスを、コンテキスト ベースのルールによって制限します。Chrome Enterprise Premium の一部であり、定義したアクセス要件を満たす組織内の個人やグループが Google Cloud コンソールや Google Cloud APIs(Google Cloud CLI からのアクセスを含む)にアクセスするのに役立ちます。
Google Cloud コンソールと Google Cloud APIs を保護するには、次の操作を行います。
- [省略可] 組織内のデバイスに Endpoint Verification をデプロイします。
- Access Context Manager でアクセスレベルを作成します。
- コンテキストアウェアの制限を受けるユーザーのグループを作成します。
- 必要な Identity and Access Management 権限を取得します。
- Google Cloud コンソールと Google Cloud API にコンテキストアウェア ルールを適用する、アクセス バインディングを作成します。
(省略可)Endpoint Verification をデプロイする
デバイス属性を使用して Google Cloud コンソールと Google Cloud APIs へのアクセスを保護する場合は、組織内のデバイスに Endpoint Verification をデプロイします。
Endpoint Verification は、MacOS、Windows、Linux のユーザーに対して、デスクトップおよびノートパソコンで Chrome 拡張機能として実行されます。管理者は、Google 管理コンソールから会社所有のデバイスにデプロイできます。また、組織のメンバーは、自分でインストールできます。
アクセスレベルを作成する
Access Context Manager で 基本のアクセスレベルを作成することによって、Google Cloud コンソールと Google Cloud API へのアクセスを決定するときに使用できるアクセスレベルを定義する必要があります。
ユーザー グループを作成する
コンテキストアウェアの制限を受けるユーザー グループを作成する。このグループのいずれかのユーザーが組織のメンバーでもある場合は、事前に作成されたアクセスレベルを満たし、Google Cloud コンソールと Google Cloud API にアクセスできるようにする必要があります。
必要な IAM 権限を付与する
Access Context Manager アクセス バインディングの作成に必要な組織レベルの IAM 権限を付与します。
コンソール
Google Cloud コンソールの [IAM と管理] ページに移動します。
[追加] をクリックして、以下を構成します。
- 新しいメンバー: 権限を付与するユーザーまたはグループを指定します。
- ロールを選択: [Access Context Manager] > [Cloud アクセス バインディング管理者] を選択します。
[保存] をクリックします。
gcloud
組織レベルの IAM 権限を追加するのに十分な権限で認証されていることを確認してください。少なくとも、組織管理者のロールが必要です。
適切な権限があることを確認したら、次のコマンドでログインします。
gcloud auth login
次のコマンドを実行して
GcpAccessAdmin
ロールを割り当てます。gcloud organizations add-iam-policy-binding ORG_ID \ --member=user:EMAIL \ --role=roles/accesscontextmanager.gcpAccessAdmin
ORG_ID
は、組織 ID です。組織 ID を把握していない場合は、次のコマンドを使用して確認できます。gcloud organizations list
EMAIL
は、ロールを付与するユーザーまたはグループのメールアドレスです。
アクセス バインディングを作成する
アクセス バインディングは、以前に作成したユーザー グループと、Google Cloud コンソールと Google Cloud APIs へのアクセスのために定義した Access Context Manager アクセスレベルとのマッピングです。
アクセス バインディングを使用すると、ユーザー グループが Google Cloud APIs とアプリケーションにアクセスする方法を定義できます。これは、ユーザー グループをアクセスレベルにリンクすることで実現できます。アクセスレベルは、グループのアプリケーションへのアクセスに適用される権限と制限を定義します。
アクセス バインディングでアプリケーションを指定するには、OAuth クライアント ID を使用します。次のアプリケーションは、名前を使用して指定できます。
- Google Cloud コンソール
- Google Cloud SDK
- Google Auth ライブラリ gcloud CLI によって生成されたアプリケーションのデフォルト認証情報(ADC)を使用し、その名前を使用する場合は、gcloud CLI に組み込まれているデフォルトのクライアント ID を使用する必要があります。gcloud CLI にクライアント ID ファイルを指定することはできません。
作成できるアクセス バインディングのタイプは次のとおりです。
- ユーザー グループをアクセスレベルにバインドする: 特定のユーザー グループが使用するすべてのクライアント アプリケーションに、アクセスレベルをグローバルに適用します。これは、すべてのアプリケーションで一貫したアクセス制御が必要なシナリオに適した幅広いアプローチです。
- ユーザー グループをアプリケーション固有のアクセスレベルにバインドする: よりきめ細かい制御を行うには、ユーザー グループの特定のアプリケーションに異なるアクセスレベルを割り当てることができます。これにより、アプリケーションのニーズと機密性に基づいてアクセスを調整することで、意図しない制限を防ぐことができます。
ドライラン構成を使用してユーザー グループをアクセスレベルにバインドする: アクセス バインディングを完全に実装する前に、ドライラン構成を使用して変更の影響をテストできます。これにより、ユーザーに影響する前に潜在的な問題を特定して対処できます。
ドライラン構成を使用して、次のタイプのアクセス バインディングを作成できます。
- グループとドライランのアクセスレベルの間
- グループ、通常のアクセスレベル、ドライランのアクセスレベルの間
- グループとアプリケーションのマップ間(それぞれに通常のアクセスレベルとドライランのアクセスレベルがある)
アクセスレベルを使用してアクセス バインディングを作成する
コンソール
Google Cloud コンソールで [Chrome Enterprise Premium] ページに移動します。
組織を選択して、[選択] をクリックします。
[アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。
[追加] をクリックして、以下を構成します。
- メンバー グループ: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
- アクセスレベルを選択する: グループに適用するアクセスレベルを選択します。
[保存] をクリックします。
gcloud
これと他の追加のフラグ オプションを含む gcloud access-context-manager cloud-bindings の詳細については、Google Cloud CLI をご覧ください。
gcloud access-context-manager cloud-bindings create \
--group-key GROUP_ID \
--level ACCESS_LEVEL \
--organization ORG_ID
ここで
-
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
リクエストの本文(JSON):
{ "groupKey": "GROUP_ID", "accessLevels": [ "ACCESS_LEVEL" ], }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
アプリケーションからアクセスレベルへのマッピングを使用してアクセス バインディングを作成する
アプリケーションからアクセスレベルへのマッピングを使用してバインディングすると、特定のアプリケーションにアクセスレベルを適用し、他のアプリケーションに意図しない影響を与えないようにできます。このタイプのバインディングは、次のタイプのユースケースをサポートしています。
特定のアプリへのアクセスを制限する: 他のアプリに影響を与えることなく、特定のアプリにアクセスレベルを適用します。
例: Google Cloud コンソールから、Google Cloud APIs の証明書ベースのアクセス(mTLS)を実装します。mTLS を Google Cloud コンソールにのみ適用し、他のアプリケーションには影響を与えないバインディングを作成できます。必要に応じて、意思決定の指針とするため、ドライランと監査ログを使用して、この設定を他のアプリケーションに拡張できます。
アプリケーションをグローバル ポリシーから除外する: 広範囲に適用されるアクセスレベルから特定のアプリを除外します。
例: 組織は、すべての Google Cloud APIs にIP ベースのアクセス ポリシーを実装しています。ただし、これにより 2 つの Docker アプリケーションに問題が発生します。Docker アプリケーションの例外を作成して、グローバル IP 制限を回避できます。
クライアント アプリケーションを制限するアクセス バインディングを作成する
gcloud
アクセス バインディングを作成します。
gcloud access-context-manager cloud-bindings create \
--organization ORG_ID \
--group-key GROUP_ID \
--binding-file BINDING_FILE_PATH
以下を置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
BINDING_FILE_PATH
は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルはscopedAccessSettings
のみをサポートします。
次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドするバインディング ファイルです。
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: Cloud Console
activeSettings:
accessLevels:
- ACCESS_LEVEL_1
- scope:
clientScope:
restrictedClientApplication:
client_id: CLIENT_ID
activeSettings:
accessLevels:
- ACCESS_LEVEL_2
以下を置き換えます。
-
ACCESS_LEVEL_1
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。 -
CLIENT_ID
アプリケーションの OAuth クライアント ID。 -
ACCESS_LEVEL_2
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
CLIENT_ID
アプリケーションの OAuth クライアント ID。 -
ACCESS_LEVEL_1
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。 -
ACCESS_LEVEL_2
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
HTTP メソッドと URL:
POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
次のリクエストの JSON 本文は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドします。
{
"group_key": "{GROUP_ID}",
"scoped_access_settings": [
{
"scope": {
"client_scope": {
"restricted_client_application": {
"name": "Cloud Console"
}
}
},
"active_settings": {
"access_levels": [
{ACCESS_LEVEL_1}
]
}
},
{
"scope": {
"client_scope": {
"restricted_client_application": {
"client_id": "{CLIENT_ID}"
}
}
},
"active_settings": {
"access_levels": [
"{ACCESS_LEVEL_2}"
]
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list
を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
PowerShell
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
次のような JSON レスポンスが返されます。
{ "name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH", "groupKey": "019c6y182grvb0j", "scopedAccessSettings": [ { "scope": { "clientScope": { "restrictedClientApplication": { "name": "Cloud Console" } } }, "activeSettings": { "accessLevels": [ "accessPolicies/244346580249/accessLevels/requireMutualTLS" ] } }, { "scope": { "clientScope": { "restrictedClientApplication": { "clientId": "32555940559.apps.googleusercontent.com" } } }, "activeSettings": { "accessLevels": [ "accessPolicies/244346580249/accessLevels/requireMutualTLS" ] } } ] }
クライアント アプリケーションを除外するアクセス バインディングを作成する
gcloud
アクセス バインディングを作成します。
gcloud access-context-manager cloud-bindings create \ --organization {ORG_ID} \ --group-key {GROUP_ID} \ --level {ACCESS_LEVEL} \ --binding-file {BINDING_FILE_PATH}
以下を置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。 このアクセスレベルは、すべてのクライアント アプリケーションにグローバルに適用されるアクセス条件を定義します。 -
BINDING_FILE_PATH
は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルはscopedAccessSettings
のみをサポートします。除外ユースケースの場合、このバインディング ファイルには、アクセスレベルから除外されるアプリケーションが含まれています。
次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドするバインディング ファイルです。
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: Cloud Console
activeSettings:
accessLevels:
- {EXEMPTION_ACCESS_LEVEL}
- scope:
clientScope:
restrictedClientApplication:
client_id: {CLIENT_ID}
activeSettings:
accessLevels:
- {EXEMPTION_ACCESS_LEVEL}
以下を置き換えます。
-
EXEMPTION_ACCESS_LEVEL
除外アクセスレベルは、次のいずれかの方法で作成できます。- カスタム アクセスレベルを作成し、CEL 式の条件の値として
true
を指定します。 - IP 範囲ベースの基本アクセスレベルを作成し、IP サブネットワークの値として
0.0.0.0/0
を指定します。
- カスタム アクセスレベルを作成し、CEL 式の条件の値として
-
CLIENT_ID
アプリケーションの OAuth クライアント ID。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 ACCESS_LEVEL
: すべてのクライアント アプリケーションにグローバルに適用されるアクセス条件を定義するアクセスレベル。-
EXEMPTION_ACCESS_LEVEL
除外アクセスレベルは、次のいずれかの方法で作成できます。- カスタム アクセスレベルを作成し、CEL 式の条件の値として
true
を指定します。 - IP 範囲ベースの基本アクセスレベルを作成し、IP サブネットワークの値として
0.0.0.0/0
を指定します。
- カスタム アクセスレベルを作成し、CEL 式の条件の値として
-
CLIENT_ID
アプリケーションの OAuth クライアント ID。
HTTP メソッドと URL:
POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
次のリクエスト JSON 本文では、Google Cloud コンソールとユーザーの OAuth アプリケーションをグローバルに適用されるアクセスレベルから除外しています。
{
"group_key": "{GROUP_ID}",
"access_levels": [
{ACCESS_LEVEL}
],
"scoped_access_settings": [
{
"scope": {
"client_scope": {
"restricted_client_application": {
"name": "Cloud Console"
}
}
},
"active_settings": {
"access_levels": [
{EXEMPTION_ACCESS_LEVEL}
]
}
},
{
"scope": {
"client_scope": {
"restricted_client_application": {
"client_id": "{CLIENT_ID}"
}
}
},
"active_settings": {
"access_levels": [
"{EXEMPTION_ACCESS_LEVEL}"
]
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list
を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
PowerShell
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
次のような JSON レスポンスが返されます。
{
"name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH",
"groupKey": "019c6y182grvb0j",
"accessLevels": [
"accessPolicies/244346580249/accessLevels/requireMutualTLS"
],
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Cloud Console"
}
}
},
"activeSettings": {
"accessLevels": [
"accessPolicies/244346580249/accessLevels/AlwaysTrue"
]
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "32555940559.apps.googleusercontent.com"
}
}
},
"activeSettings": {
"accessLevels": [
"accessPolicies/244346580249/accessLevels/AlwaysTrue"
]
}
}
]
}
```
ドライラン構成でアクセス バインディングを作成する
ドライラン構成を使用してアクセス バインディングを作成すると、次のシナリオで環境内のアクセスレベルの影響を把握できます。
- アクセスレベルを適用する前にアクセスレベルの影響を評価するには、ドライランのアクセスレベルを使用してアクセス バインディングを作成します。
- アクセスレベルを適用し、ドライランのアクセスレベルの影響を同時に評価するには、アクティブなアクセスレベルとドライランのアクセスレベルのアクセス バインディングを作成します。
ドライランのアクセスレベルのアクセス バインディングはアクセスをブロックしませんが、ドライランのアクセスレベルの違反をロギングします。ログの詳細を表示するには、拒否ログをご覧ください。
ドライランのアクセスレベルでアクセス バインディングを作成する
gcloud
gcloud access-context-manager cloud-bindings create \
--group-key GROUP_ID \
--dry-run-level DRY_RUN_ACCESS_LEVEL \
--organization ORG_ID
ここで
-
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
リクエストの本文(JSON):
{ "groupKey": "GROUP_ID", "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "dryRunAccessLevels": [ "accessPolicies/305009197125/accessLevels/another" ] }
アクセスレベルとドライランのアクセスレベルを使用してアクセス バインディングを作成する
gcloud
gcloud access-context-manager cloud-bindings create \
--group-key GROUP_ID \
--level ACCESS_LEVEL \
--dry-run-level DRY_RUN_ACCESS_LEVEL \
--organization ORG_ID
ここで
-
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
POLICY_ID
は、組織のアクセス ポリシーの ID です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
リクエストの本文(JSON):
{ "groupKey": "GROUP_ID", "accessLevels": [ "ACCESS_LEVEL" ], "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | 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" ] }
アプリケーションからアクセスレベルとアクセスレベルのドライランへのマッピングを使用してアクセス バインディングを作成する
gcloud
アクセス バインディングを作成します。
gcloud access-context-manager cloud-bindings create \ --organization ORG_ID \ --group-key GROUP_ID \ --binding-file BINDING_FILE_PATH
以下を置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
BINDING_FILE_PATH
は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルはscopedAccessSettings
のみをサポートします。
次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションをアクセスレベルとドライラン アクセスレベルにバインドするバインディング ファイルです。
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: Cloud Console
activeSettings:
accessLevels:
- {ACCESS_LEVEL_1}
- scope:
clientScope:
restrictedClientApplication:
client_id: {CLIENT_ID}
dryRunSettings:
accessLevels:
- {ACCESS_LEVEL_2}
以下を置き換えます。
-
ACCESS_LEVEL_1
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。 -
CLIENT_ID
アプリケーションの OAuth クライアント ID。 -
ACCESS_LEVEL_2
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
API
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
GROUP_ID
は、前に作成したユーザー グループのグループ ID です。グループ ID を利用できない場合は、
Groups
リソースのget
メソッドを呼び出すことで取得できます。 -
CLIENT_ID
アプリケーションの OAuth クライアント ID。 -
ACCESS_LEVEL_1
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。 -
ACCESS_LEVEL_2
クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
HTTP メソッドと URL:
POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
次のリクエスト JSON 本文は、Google Cloud コンソールとユーザーの OAuth アプリケーションをアクセスレベルとドライラン アクセスレベルにバインドします。
{
"group_key": "{GROUP_ID}",
"scoped_access_settings": [
{
"scope": {
"client_scope": {
"restricted_client_application": {
"name": "Cloud Console"
}
}
},
"active_settings": {
"access_levels": [
{ACCESS_LEVEL_1}
]
}
},
{
"scope": {
"client_scope": {
"restricted_client_application": {
"client_id": "{CLIENT_ID}"
}
}
},
"dry_run_settings": {
"access_levels": [
"{ACCESS_LEVEL_2}"
]
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list
を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
PowerShell
次のコマンドは、gcloud
init
または gcloud auth
login
を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
次のような JSON レスポンスが返されます。
{
"name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH",
"groupKey": "019c6y182grvb0j",
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Cloud Console"
}
}
},
"activeSettings": {
"accessLevels": [
"accessPolicies/244346580249/accessLevels/requireMutualTLS"
]
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "32555940559.apps.googleusercontent.com"
}
}
},
"dryRunSettings": {
"accessLevels": [
"accessPolicies/244346580249/accessLevels/requireMutualTLS"
]
}
}
]
}
拒否ログを表示する
ドライラン構成を作成したら、ログを確認して、ドライラン構成によってアクセスが拒否される場所を特定できます。
次の表に、クエリを作成して実行し、ログを取得するために使用できるログフィールドを示します。
フィールド名 | 説明 |
---|---|
protoPayload > authenticationInfo > principalEmail |
アクセスが拒否されたプリンシパルのメール ID。 |
protoPayload > metadata > deniedApplications |
アクセスが拒否されたアプリケーションの名前。 |
protoPayload > metadata > evaluationResult |
有効なアクセス ポリシーの評価結果。有効な値は GRANTED または DENIED です。 |
protoPayload > metadata > appliedAccessLevels |
アクティブなアクセス ポリシーで必要な適用済みのアクセスレベル。 |
protoPayload > metadata > appliedDryRunAccessLevels |
ドライラン アクセス ポリシーで必要な適用済みのアクセスレベル。 |
protoPayload > metadata > dryRunEvaluationResult |
ドライラン アクセス ポリシーの評価結果。アクセス ポリシーが適用されたときの意図されたアクションを示します。有効な値は GRANTED または DENIED です。 |
ログのクエリを作成する方法については、Logging のクエリ言語をご覧ください。
Console
Google Cloud コンソールのナビゲーション メニューで [ロギング] をクリックしてから、[ログ エクスプローラ] をクリックします。
[クエリ] フィールドに次のフィルタのようなクエリフィルタを入力し、[クエリを実行] をクリックします。
severity="ERROR" AND (protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"
[クエリ結果] でログを確認します。
gcloud
gcloud CLI を使用してログを表示するには、次のようなコマンドを実行します。
gcloud logging read 'severity="ERROR" AND
(protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"'
アクセス バインディングを管理する
ユーザー グループにアクセス バインディングを作成すると、Google Cloud コンソールと Google Cloud APIs へのアクセスは、バインドされたアクセスレベルのレベルに応じて制御されます。
作成したアクセス バインディングの詳細を表示、編集、削除できます。
アクセス バインディングを表示する
コンソール
組織のすべてのアクセス バインディングを表示し、アクセス バインディングの詳細を表示できます。
gcloud
すべてのアクセス バインディングを表示するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings list \ --organization ORG_ID
ここで
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。.access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。アクセス バインディングの詳細を表示するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings describe \ --binding=BINDING_ID
ここで
BINDING_ID
は、アクセス バインディングの ID またはバインディングの ID です。
API
すべてのアクセス バインディングを表示します。
リクエストのデータを使用する前に、次のように置き換えます。
-
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。access-context-manager/organization
プロパティが設定されていない場合、オプションの--organization
フラグのORG_ID
をGcpAccessAdmin
のロールを作成した際に使用した組織用の ID と置き換えてください。
HTTP メソッドと URL:
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "name": string, "groupKey": string, "accessLevels": [ string ] "dryRunAccessLevels": [ string ] }
-
アクセス バインディングの詳細を表示します。
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" ] }
アクセス バインディングを更新する
コンソール
必要に応じてアクセス バインディングを更新できます。
gcloud
アクセスレベルの変更など、アクセス バインディングを更新するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings update \ --binding ACCESS_BINDING \ --level ACCESS_LEVEL
ここで
-
ACCESS_BINDING
の形式はorganizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME
です。 -
ORG_ID
は、GcpAccessAdmin
ロールの作成時に使用した組織の ID です。 -
ACCESS_BINDING_NAME
は、アクセス バインディングの作成時にname
識別子に対して返される一意の文字列です。 - 必要に応じて ACCESS_LEVEL の値を置き換えます。
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
-
ドライラン アクセスレベルでアクセス バインディングを更新するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING --dry-run-level=DRY_RUN_ACCESS_LEVEL
必要に応じて
DRY_RUN_ACCESS_LEVEL
の値を置き換えます。accessPolicies/
の形式です。POLICY_ID
/accessLevels/DRY_ACCESS_LEVEL_NAME
アクセス バインディングを更新して、アクセスレベルとドライランのアクセスレベルの両方を変更するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING --level=`ACCESS_LEVEL` --dry-run-level=DRY_RUN_ACCESS_LEVEL
必要に応じて
ACCESS_LEVEL
とDRY_RUN_ACCESS_LEVEL
の値を置き換えます。ACCESS_LEVEL
とDRY_RUN_ACCESS_LEVEL
の形式はaccessPolicies/
で、POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
DRY_RUN_ACCESS_LEVEL
はACCESS_LEVEL
と同じです。アクセス バインディングからドライランのアクセスレベルを削除するには、次のコマンドを実行します。
gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING --dry-run-level=
API
アクセスレベルの変更など、アクセス バインディングを更新するには、以下を行います。
リクエストのデータを使用する前に、次のように置き換えます。
-
ACCESS_BINDING_NAME
は、アクセス バインディングの作成時にname
識別子に対して返される一意の文字列です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels
リクエストの本文(JSON):
{ "accessLevels": [ "ACCESS_LEVEL" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", "groupKey": "045jfvxd0ybeul8", "accessLevels": [ "accessPolicies/305009197125/accessLevels/device_lock" ] }
-
ドライランのアクセスレベルを使用してアクセス バインディングを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
-
ACCESS_BINDING_NAME
は、アクセス バインディングの作成時にname
識別子に対して返される一意の文字列です。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels
リクエストの本文(JSON):
{ "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ name: "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l", group_key: "045jfvxd0ybeul8", dry_run_access_levels: [ "accessPolicies/305009197125/accessLevels/another" ] }
-
アクセス バインディングを更新し、アクセスレベルとドライランのアクセスレベルの両方を変更します。
リクエストのデータを使用する前に、次のように置き換えます。
-
ACCESS_BINDING_NAME
は、アクセス バインディングの作成時にname
識別子に対して返される一意の文字列です。 -
ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。 -
DRY_RUN_ACCESS_LEVEL
は、効果を把握するACCESS_LEVEL
です。ACCESS_LEVEL
の形式はaccessPolicies/
です。POLICY_ID
/accessLevels/ACCESS_LEVEL_NAME
POLICY_ID
とACCESS_LEVEL_NAME
の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
HTTP メソッドと URL:
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels
リクエストの本文(JSON):
{ "accessLevels": [ "ACCESS_LEVEL" ], "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels" | 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_BINDING_NAME
は、アクセス バインディングの作成時にname
識別子に対して返される一意の文字列です。
HTTP メソッドと URL:
PATCH PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels
リクエストの本文(JSON):
{ "dryRunAccessLevels": [ ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"PowerShell
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
-
アクセス バインディングを削除する
コンソール
アクセス バインディングは必要に応じていつでも削除できます。
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)と空のレスポンスが返されます。
よくある質問
新しく作成したアクセス バインディングが有効になるまでにどれくらい時間がかかりますか?
最長で 24 時間ほどかかることがあります。
アクセス バインディングのあるグループを削除するとどうなりますか?
グループとバインディングが削除され、グループ内のすべてのユーザーがアクセスできるようになります。
アクセス バインディングで使用されているアクセスレベルを削除するとどうなりますか?
アクセスレベルが満たせず、バインドされたグループのすべてのユーザーがアクセスを拒否されます。
アクセス バインディングがある複数のグループにユーザーがいる場合どうなりますか?
ユーザーは、そうしたグループの 1 つのアクセスレベルを満たすだけでアクセスできます。
ユーザーが組織に属していない場合はどうなりますか?
バインドされているユーザー グループにユーザーを追加しても、コンテキストアウェア の制限により、アクセス バインディングの対象にはなりません。
次のステップ
- Chrome Enterprise Premium の監査ログの詳細については、監査ロギングをご覧ください。
- 管理アクティビティで記録される API オペレーションの概要など、Access Context Manager での監査ロギングの詳細については、Access Context Manager の監査ロギング情報をご覧ください。