Access Context Manager を使用すると、組織のアクセス ポリシー(アクセスレベルやサービス境界など)に属するリソースを一括更新できます。リソースへの変更は、一括オペレーションのすべての部分が成功した場合にのみ適用されます。
このトピックでは、サービス境界の一括置換のみについて説明します。アクセスレベルの一括置換の詳細については、Access Context Manager のドキュメントをご覧ください。
サービス境界のリストを取得する
一括オペレーションは組織のすべてのサービス境界に影響するため、境界の完全なリストを取得できます。また、このリストを YAML としてフォーマットし、それを使用して境界を一括変更することもできます。
サービス境界のフォーマット済みリストを取得するには、サービス境界の一覧表示(フォーマット済み)をご覧ください。
replace-all
コマンドを使用してすべてのサービス境界構成をオーバーライドする場合は、境界内に etag
フィールドを設定しないでください。Etag は境界の取得と更新の間で変更される可能性があり、replace-all
コマンドで Etag の不一致エラーが返される可能性があります。ただし、etag チェックを適用する場合は、トップレベルの --etag
パラメータを使用して、replace-all
リクエスト全体に etag
を設定できます。
境界内の etag
プロパティをそれぞれ手動で削除する代わりに、etag
以外のすべてのフィールドを含む --format
を指定して、etag
プロパティのない境界を取得できます。
gcloud access-context-manager perimeters list \ --policy=POLICY_NAME \ --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"
サービス境界の一括置換
次のセクションでは、サービス境界を一括置換する方法を説明します。
gcloud
すべてのサービス境界を一括置換するには、replace-all
コマンドを使用します。
gcloud access-context-manager perimeters replace-all POLICY_NAME \ --source-file=FILE \ --etag=ETAG \
ここで
POLICY_NAME は組織のアクセス ポリシーの名前です。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。
FILE は、既存のサービス境界の新しい設定を定義する.yaml ファイルの名前です。
次に例を示します。
- name: accessPolicies/11271009391/servicePerimeters/storage_perimeter title: Storage Perimeter description: Perimeter to protect Storage resources. perimeterType: PERIMETER_TYPE_REGULAR status: restrictedServices: - storage.googleapis.com - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter title: BigQuery Perimeter description: Perimeter to protect BigQuery resources. perimeterType: PERIMETER_TYPE_REGULAR status: restrictedServices: - bigquery.googleapis.com
YAML ファイルのフォーマット設定の詳細については、Access Context Manager の
ServicePerimeterConfig
オブジェクトの JSON 構造をご覧ください。ETAG(省略可)は、組織のアクセス ポリシーのターゲット バージョンを表す文字列です。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。
アクセス ポリシーの最新の etag を取得するには、
list
アクセス ポリシーをご覧ください。
API
すべてのサービス境界を一括置換するには、servicePerimeters.replaceAll
を呼び出します。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.replaceAll?alt=json
ここで
- POLICY_NAME は組織のアクセス ポリシーの名前です。
リクエストの本文
リクエストの本文には、変更内容を指定する ServicePerimeterConfig
オブジェクトのリストを含める必要があります。
必要に応じて、組織のアクセス ポリシーの特定のバージョンをターゲットにするために、etag を含められます。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。
次に例を示します。
{ "servicePerimeters": [ object (ServicePerimeterConfig), object (ServicePerimeterConfig), ... ] "etag": string }
レスポンスの本文
成功した場合は、呼び出しのレスポンス本文に Operation
リソースが含まれ、これにより Post オペレーションの詳細がわかります。
レスポンスの例:
{
"name": "operations/accessPolicies/11271009391/replacePerimeters/1583523447707087",
"done": true,
"response": {
"@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
"servicePerimeters": [
{
"name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
"title": "Storage Perimeter",
"description": "Perimeter to protect Storage resources.",
"status": {
"accessLevels": [
"accessPolicies/11271009391/accessLevels/corpnet_access"
],
"restrictedServices": [
"bigtable.googleapis.com"
]
}
},
{
"name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
"title": "BigQuery Perimeter",
"description": "Perimeter to protect BigQuery resources.",
"status": {
"accessLevels": [
"accessPolicies/11271009391/accessLevels/prodnet_access"
],
"restrictedServices": [
"bigtable.googleapis.com"
]
}
}
]
}
}