您可以使用 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
資源,其中提供有關發布作業的詳細資料。
回應範例:
{
"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"
]
}
]
}
}
]
}
}