管理存取層級

本頁面說明如何管理現有的存取層級,您可以:

事前準備

列出存取層級

控制台

如要列出所有存取層級,請在 Google Cloud 控制台中開啟「Access Context Manager」頁面,然後在系統提示時選取貴組織。頁面會以格狀顯示貴組織的存取層級,包括各存取層級的設定詳細資料。

開啟 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

number

根據預設,accessLevels.list 傳回的 存取層級清單會分頁。每個頁面最多只能有 100 個存取層級。

您可以使用這項參數,修改每頁傳回的存取層級數量。

pageToken

string

如果呼叫傳回的存取層級數量超過頁面大小,回應主體會包含頁面權杖。

您可以在後續呼叫中使用這個參數,取得下一頁的結果。

accessLevelFormat

enum(LevelFormat)

一般來說,系統會按照定義傳回存取層級,也就是 BasicLevel 或 CustomLevel。

您可以為這個參數指定 CEL 值,在 Cloud 一般運算語言 中將 BasicLevels 傳回為 CustomLevels。

回應主體

如果成功,呼叫的回應主體會包含列出存取層級的 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 資源,其中提供有關存取層級用途、上次更新時間等詳細資料。

更新存取層級

本節說明如何更新個別存取層級。如要一次更新貴組織的所有存取層級,請參閱「大量變更存取層級」。

控制台

更新存取層級的方式如下:

  1. 在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。

    開啟 Access Context Manager 頁面

  2. 系統會提示您選取機構,這時請選取您的機構。

  3. 在表格中找到您要更新的存取層級,並按一下該層級的名稱。

  4. 在「Edit Access Level」(編輯存取層級) 窗格中對存取層級進行變更。

    如需您可新增或修改哪些屬性的完整清單,請參閱存取層級屬性。

  5. 按一下 [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、OR

    description

    存取層級的詳細說明。

    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 存取層級。刪除存取層級時須完成兩個步驟:

  1. 查看存取層級依附元件。

  2. 刪除個別存取層級。

查看存取層級依附元件

刪除存取層級前,請確認其他存取層級、VPC Service Controls service perimeter、Google Workspace 情境感知存取權政策、Google Cloud 存取權繫結或 IAM 條件未參照該存取層級。

如要找出參照您要刪除的存取層級的所有存取層級,請按照下列步驟操作:

  1. 請確認您已安裝 jq。如要確認是否已安裝 jq,請執行 jq --version。視需要安裝 jq。

  2. 檢查存取層級依附元件。這個指令會列出所有存取層級,然後使用 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。

  3. 如果指令列出任何參照存取層級,您必須先更新這些層級,移除依附關係。如需操作說明,請參閱「更新存取層級」。

移除所有參照後,即可刪除個別存取層級。

刪除個別存取層級

控制台

刪除存取層級的方式如下:

  1. 在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。

    開啟 Access Context Manager 頁面

  2. 如果系統提示您選取組織,請依提示選取您的組織。

  3. 在格線中,找到要刪除的存取層級,然後按一下該列中的 按鈕。

  4. 點選「刪除」。

  5. 在顯示的對話方塊中,確認要刪除存取層級。

gcloud

刪除存取層級的方式如下:

  1. 使用 delete 指令刪除存取層級。

    gcloud access-context-manager levels delete LEVEL_NAME \
        [--policy=POLICY_NAME]

    更改下列內容:

    • LEVEL_NAME:要刪除的存取層級名稱。

    • POLICY_NAME:組織的存取權政策名稱。只有在未設定預設存取權政策時,才需要提供這個值。

  2. 確認您要刪除存取層級。

    例如:

    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 資源,其中提供有關刪除作業的詳細資料。