本頁面說明如何管理現有的存取層級,您可以:
事前準備
設定使用 Google Cloud CLI 時的預設存取權政策。
或者
取得政策的名稱。如要使用 gcloud CLI 和發出 API 呼叫,就必須提供政策名稱。如果設定預設存取權政策,就不需要為 gcloud CLI 指定政策。
確認您具備組織層級的 Identity and Access Management (IAM) 角色,可管理存取層級。請要求管理員授予您下列其中一個角色,或具備相同權限的自訂角色:
如要查看存取層級: Access Context Manager 讀取者 (
roles/accesscontextmanager.policyReader)如要查看及變更存取層級: Access Context Manager 編輯者 (
roles/accesscontextmanager.policyEditor) 或 Access Context Manager 管理員 (roles/accesscontextmanager.policyAdmin)
列出存取層級
控制台
如要列出所有存取層級,請在 Google Cloud 控制台中開啟「Access Context Manager」頁面,然後在系統提示時選取貴組織。頁面會以格狀顯示貴組織的存取層級,包括各存取層級的設定詳細資料。
gcloud
如要列出所有存取層級,請使用 list 指令。
gcloud access-context-manager levels list \ [--policy=POLICY_NAME]
更改下列內容:
POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。
輸出結果會與下列內容相似:
NAME TITLE LEVEL_TYPE Device_Trust Device_Trust Extended Basic Service_Group_A Service_Group_A Basic
API
如要列出政策的所有存取層級,請呼叫 accessLevels.list。
GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels
更改下列內容:
POLICY_NAME:組織存取權政策的名稱。
要求主體
要求主體必須為空白。
選用參數
您可自行決定是否要納入以下一或多個查詢參數。
| 參數 | |
|---|---|
pageSize
|
根據預設, 您可以使用這項參數,修改每頁傳回的存取層級數量。 |
pageToken
|
如果呼叫傳回的存取層級數量超過頁面大小,回應主體會包含頁面權杖。 您可以在後續呼叫中使用這個參數,取得下一頁的結果。 |
accessLevelFormat
|
一般來說,系統會按照定義傳回存取層級,也就是
您可以為這個參數指定 |
回應主體
如果成功,呼叫的回應主體會包含列出存取層級的 AccessLevels 物件,以及 nextPageToken 字串。只有在傳回的存取層級數量超過頁面大小時,nextPageToken 才有值。否則,nextPageToken 會以空字串形式傳回。
列出存取層級 (指定格式)
使用 gcloud CLI,即可取得 YAML 或 JSON 格式的存取層級清單。
如要取得指定格式的存取層級清單,請使用 list 指令。
gcloud access-context-manager levels list \ --format=FORMAT \ [--policy=POLICY_NAME]
更改下列內容:
FORMAT:下列其中一個值:list(YAML 格式)json(JSON 格式)
POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。
YAML 輸出內容大致如下:
- basic: {'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]} description: Level for corp access. name: accessPolicies/123456789012/accessLevels/corp_level title: Corp Level - basic: {'combiningFunction': 'OR', 'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]} description: Level for net access. name: accessPolicies/123456789012/accessLevels/net_level title: Net Level
JSON 輸出內容大致如下:
[ { "basic": { "conditions": [ { "ipSubnetworks": [ "192.0.2.0/24" ] } ] }, "description": "Level for corp access.", "name": "accessPolicies/123456789012/accessLevels/corp_level", "title": "Corp Level" }, { "basic": { "combiningFunction": "OR", "conditions": [ { "ipSubnetworks": [ "192.0.2.0/24" ] } ] }, "description": "Level for net access.", "name": "accessPolicies/123456789012/accessLevels/net_level", "title": "Net Level" } ]
描述存取層級
控制台
使用 Google Cloud 控制台,請參閱列出存取層級的步驟。您列出存取層級時,頁面上的表格內會隨之顯示相關的詳細資料。
gcloud
列出存取層級時將只提供存取層級的名稱、標題和層級類型。如要進一步瞭解層級的實際作用,請使用 describe 指令。
gcloud access-context-manager levels describe LEVEL_NAME \ [--policy=POLICY_NAME]
更改下列內容:
LEVEL_NAME:要說明的存取層級名稱。POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。
這個指令會輸出層級資訊,並以 YAML 格式呈現。舉例來說,如果層級限制存取特定作業系統版本,輸出內容會類似如下:
basic: conditions: - devicePolicy: allowedEncryptionStatuses: - ENCRYPTED osConstraints: - minimumVersion: 10.13.6 osType: DESKTOP_MAC - minimumVersion: 10.0.18219 osType: DESKTOP_WINDOWS - minimumVersion: 68.0.3440 osType: DESKTOP_CHROME_OS requireScreenlock: true name: accessPolicies/123456789012/accessLevels/Device_Trust title: Device_Trust Extended
API
列出存取層級時,只會提供層級的名稱、標題和類型。如要取得存取層級的詳細資訊,請呼叫 accessLevels.get。
GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME
更改下列內容:
POLICY_NAME:組織存取權政策的名稱。LEVEL_NAME:要說明的存取層級名稱。
要求主體
要求主體必須為空白。
選用參數
視需要加入 accessLevelFormat 查詢參數。一般來說,系統會按照定義傳回存取層級,也就是 BasicLevel 或 CustomLevel。
您可以為這個參數指定 CEL 值,以 Cloud 一般運算語言 的 CustomLevels 形式傳回 BasicLevels。
回應主體
如果成功,呼叫的回應主體會包含 AccessLevel 資源,其中提供有關存取層級用途、上次更新時間等詳細資料。
更新存取層級
本節說明如何更新個別存取層級。如要一次更新貴組織的所有存取層級,請參閱「大量變更存取層級」。
控制台
更新存取層級的方式如下:
在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。
系統會提示您選取機構,這時請選取您的機構。
在表格中找到您要更新的存取層級,並按一下該層級的名稱。
在「Edit Access Level」(編輯存取層級) 窗格中對存取層級進行變更。
如需您可新增或修改哪些屬性的完整清單,請參閱存取層級屬性。
按一下 [Save] (儲存)。
除了更新或移除任何現有條件,您還可在現有條件中加入新的條件及屬性。
gcloud
使用 update 指令更新存取層級。
基本存取層級:
gcloud access-context-manager levels update LEVEL_NAME \ --basic-level-spec=FILE \ [--policy=POLICY_NAME]
自訂存取層級:
gcloud access-context-manager levels update LEVEL_NAME \ --custom-level-spec=FILE \ [--policy=POLICY_NAME]
更改下列內容:
LEVEL_NAME:要更新的存取層級名稱。FILE:定義存取層級條件的 YAML 檔案名稱 (適用於基本存取層級),或解析為單一布林值的 CEL 運算式 (適用於自訂存取層級)。如需可在基本存取層級條件中使用的完整屬性清單,請參閱存取層級屬性。
POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。您可納入以下一或多個選項。
選項 combine-function這個選項僅適用於基本存取層級。
決定條件合併的方式。
有效的值:
AND、ORdescription存取層級的詳細說明。
title存取層級的簡短標題,存取層級的標題會顯示在 Google Cloud 控制台中。
您可納入任何一個全 gcloud 標記。
範例指令
gcloud access-context-manager levels update Device_Trust \ --basic-level-spec=corpdevspec.yaml \ --combine-function=OR \ --description='Access level that conforms to updated corporate spec.' \ --title='Device_Trust Extended' \ --policy=123456789012
API
如要更新存取層級,請呼叫 accessLevels.patch。
PATCH https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME?updateMask=FIELDS
更改下列內容:
POLICY_NAME:組織存取權政策的名稱。LEVEL_NAME:要更新的存取層級名稱。FIELDS:以半形逗號分隔的完整欄位名稱清單,列出要更新的欄位。
要求主體
要求主體必須包含 AccessLevel 資源,指定要對存取層級進行的變更。
回應主體
如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關修補作業的詳細資料。
刪除存取層級
本節說明如何刪除 Access Context Manager 存取層級。刪除存取層級時須完成兩個步驟:
查看存取層級依附元件
刪除存取層級前,請確認其他存取層級、VPC Service Controls service perimeter、Google Workspace 情境感知存取權政策、Google Cloud 存取權繫結或 IAM 條件未參照該存取層級。
如要找出參照您要刪除的存取層級的所有存取層級,請按照下列步驟操作:
請確認您已安裝
jq。如要確認是否已安裝jq,請執行jq --version。視需要安裝jq。檢查存取層級依附元件。這個指令會列出所有存取層級,然後使用
jq篩選在基本或自訂層級定義中參照LEVEL_NAME的存取層級。echo "Searching for Access Levels referencing: accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME" echo "" gcloud access-context-manager levels list \ --policy="POLICY_NAME" \ --format=json | \ jq -r ' .[] | select( # Check basic levels: Is the target access level present as an element in any requiredAccessLevels array? ([(.basic.conditions // [])[] | (.requiredAccessLevels // []) | index("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") != null] | any) or # Check custom levels: Does the expression string contain the target access level? ((.custom.expr.expression // "") | (contains("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") or contains("levels.LEVEL_NAME"))) ) | " - \(.title) (Name: \(.name))" ' echo "" echo "If any levels are listed, they reference LEVEL_NAME. You must update these referencing levels before you delete LEVEL_NAME."
更改下列內容:
POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。LEVEL_NAME:要刪除的存取層級名稱,例如my_level。
輸出內容會列出參照
accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME或levels.LEVEL_NAME的所有存取層級,以及其title和name。這些存取層級包括:基本層級,其中
accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME列於requiredAccessLevels自訂層級,其中
custom.expr.expression字串中列出accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME或levels.LEVEL_NAME。
如果指令列出任何參照存取層級,您必須先更新這些層級,移除依附關係。如需操作說明,請參閱「更新存取層級」。
移除所有參照後,即可刪除個別存取層級。
刪除個別存取層級
控制台
刪除存取層級的方式如下:
在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。
如果系統提示您選取組織,請依提示選取您的組織。
在格線中,找到要刪除的存取層級,然後按一下該列中的 按鈕。
點選「刪除」。
在顯示的對話方塊中,確認要刪除存取層級。
gcloud
刪除存取層級的方式如下:
使用
delete指令刪除存取層級。gcloud access-context-manager levels delete LEVEL_NAME \ [--policy=POLICY_NAME]
更改下列內容:
LEVEL_NAME:要刪除的存取層級名稱。POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。
確認您要刪除存取層級。
例如:
You are about to delete level Device_Trust Do you want to continue (Y/n)?
輸出結果應該會類似下列內容:
Waiting for operation [accessPolicies/123456789012/accessLevels/Device_Trust/delete/1531171874311645] to complete...done. Deleted level [Device_Trust].
API
如要刪除存取層級,請呼叫 accessLevels.delete。
DELETE https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME
更改下列內容:
POLICY_NAME:組織存取權政策的名稱。LEVEL_NAME:要刪除的存取層級名稱。
要求主體
要求主體必須為空白。
回應主體
如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關刪除作業的詳細資料。