可以使用 Access Context Manager,對屬於組織存取權政策的資源進行大量更新,例如存取層級和 service perimeter。
只有在大量作業的所有部分都成功時,系統才會套用資源變更。舉例來說,如果大量作業嘗試移除服務範圍使用的存取層級,系統就會引發錯誤。由於發生錯誤,整個作業會失敗,且不會更新任何資源。
本主題僅說明如何大量取代存取層級。如要進一步瞭解如何大量取代服務範圍,請參閱 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.s3ns.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"
]
}
]
}
}
]
}
}