Access Context Manager を使用すると、組織のアクセス ポリシー(アクセスレベルやサービス境界など)に属するリソースを一括更新できます。
リソースへの変更は、一括オペレーションのすべての部分が成功した場合にのみ適用されます。たとえば、サービス境界で使用されているアクセスレベルを一括オペレーションで削除しようとすると、エラーが発生します。エラーが発生したため、オペレーション全体が失敗し、リソースは更新されません。
このトピックでは、アクセスレベルの一括置換のみについて説明します。サービス境界の一括置換の詳細については、VPC Service Controls のドキュメントをご覧ください。
準備
一括オペレーションは、組織のアクセスレベルのすべてに影響するため、アクセスレベルの完全なリストを取得することをおすすめします。このリストは YAML 形式にすることができ、これを使用することでアクセスレベルの一括変更が簡単に行えます。
アクセスレベルの形式が揃ったリストを取得するには、アクセスレベルの一覧表示(形式設定)をご覧ください。
アクセスレベルの一括置換
次のセクションでは、アクセスレベルを一括置換する方法について詳しく説明します。
gcloud
すべてのアクセスレベルを一括置換するには、replace-all
コマンドを使用します。
gcloud access-context-manager levels replace-all \ --source-file=FILE \ --etag=ETAG \ [--policy=POLICY_NAME]
ここで
FILE は、既存のアクセスレベルの新しい条件を定義する.yaml ファイルの名前です。
例:
- name: accessPolicies/11271009391/accessLevels/corpnet_access title: Corpnet Access description: Permit access to corpnet. basic: combiningFunction: AND conditions: - ipSubnetworks: - 252.0.2.0/24 - 2001:db8::/32 - name: accessPolicies/11271009391/accessLevels/prodnet_access title: Prodnet Access description: Permit access to prodnet. basic: combiningFunction: OR conditions: - members: - user:exampleuser@example.com - serviceAccount:exampleaccount@example.iam.gserviceaccount.com - ipSubnetworks: - 176.0.2.0/24
条件の YAML 構造の他の例については、YAML ファイルの例をご覧ください。
ETAG(省略可)は、組織のアクセス ポリシーのターゲット バージョンを表す文字列です。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。
アクセス ポリシーの最新の etag を取得するには、
list
アクセス ポリシーをご覧ください。POLICY_NAME は組織のアクセス ポリシーの名前です。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。
API
すべてのアクセスレベルを一括置換するには、accessLevels.replaceAll
を呼び出します。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels.replaceAll?alt=json
ここで
- POLICY_NAME は組織のアクセス ポリシーの名前です。
リクエストの本文
リクエストの本文には、行う変更を指定する AccessLevel
オブジェクトのリストを含める必要があります。
任意で、組織のアクセス ポリシーの特定のバージョンをターゲットにするために、etag を含めることができます。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。
次に例を示します。
{ "accessLevels": [ object (AccessLevel), object (AccessLevel), ... ] "etag": string }
レスポンスの本文
成功した場合は、呼び出しのレスポンス本文に Operation
リソースが含まれ、これにより Post オペレーションの詳細がわかります。
レスポンスの例:
{
"name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
"done": true,
"response": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
"accessLevels": [
{
"name": "accessPolicies/11271009391/accessLevels/corpnet_access",
"title": "Corpnet access",
"description": "Permit access to corpnet.",
"basic": {
"conditions": [
{
"ipSubnetworks": [
"252.0.2.0/24"
]
}
]
}
},
{
"name": "accessPolicies/11271009391/accessLevels/prodnet_access",
"title": "Prodnet access",
"description": "Permit access to prodnet.",
"basic": {
"conditions": [
{
"ipSubnetworks": [
"176.0.2.0/24"
]
}
]
}
}
]
}
}