管理存取層級

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

事前準備

列出存取層級

控制台

如要列出所有存取層級,請先在 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/v1alpha/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 指令列工具,即可取得 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': ['8.8.0.0/24']}]}
  description: Level for corp access.
  name: accessPolicies/165717541651/accessLevels/corp_level
  title: Corp Level
- basic: {'combiningFunction': 'OR', 'conditions': [{'ipSubnetworks': ['8.8.0.0/24']}]}
  description: Level for net access.
  name: accessPolicies/165717541651/accessLevels/net_level
  title: Net Level

JSON 輸出內容如下所示:

[
  {
    "basic": {
      "conditions": [
        {
          "ipSubnetworks": [
            "8.8.0.0/24"
          ]
        }
      ]
    },
    "description": "Level for corp access.",
    "name": "accessPolicies/165717541651/accessLevels/corp_level",
    "title": "Corp Level"
  },
  {
    "basic": {
      "combiningFunction": "OR",
      "conditions": [
        {
          "ipSubnetworks": [
            "8.8.0.0/24"
          ]
        }
      ]
    },
    "description": "Level for net access.",
    "name": "accessPolicies/165717541651/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/330193482019/accessLevels/Device_Trust
title: Device_Trust Extended

API

列出存取層級時將只提供名稱、標題和層級類型。 如要取得存取層級的詳細資訊,請呼叫 accessLevels.get。

GET https://accesscontextmanager.googleapis.com/v1alpha/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

更改下列內容:

  • POLICY_NAME 是組織的存取權政策名稱。

  • LEVEL_NAME 是指您要描述的存取層級的名稱。

要求主體

要求主體必須為空白。

選用參數

您可自行選擇是否納入 accessLevelFormat 查詢參數。存取層級通常會依本身的定義 (BasicLevel 或 CustomLevel) 傳回。

您可以為這個參數指定值「CEL」,以便使用 Cloud 一般運算語言將 BasicLevels 傳回為 CustomLevels。

回應主體

如果成功,呼叫的回應主體會包含 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=1034095178592

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. 刪除個別存取層級。

檢查存取層級依附元件

刪除存取層級前,請確認其他存取層級未參照該層級。

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

  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
        or
        # Check custom levels: Does the expression string contain the target access level?
        (.custom.expr.expression // "") | contains("accessPolicies/POLICY_NAME/accessLevels/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 的所有存取層級,以及這些層級的 title 和 name。包括基本層級 (accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 位於 requiredAccessLevels 中) 和自訂層級 (accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 位於 custom.expr.expression 字串中)。

  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/330193482019/accessLevels/Device_Trust/delete/1531171874311645] to complete...done.
    Deleted level [Device_Trust].
    

API

如要刪除存取層級,請呼叫 accessLevels.delete。

DELETE https://accesscontextmanager.googleapis.com/v1alpha/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

更改下列內容:

  • POLICY_NAME 是組織的存取權政策名稱。

  • LEVEL_NAME 是指您要描述的存取層級的名稱。

要求主體

要求主體必須為空白。

回應主體

如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關刪除作業的詳細資料。