使用環境定義型限制來保護 Secrets Manager 資源

設定 IBM Cloud® Secrets Manager 服務實例之後,您可以使用 環境定義型限制(CBR)來管理存取權。

管理 CBR 設定

透過 基於情境的限制,您可以根據指定的條件,定義並強制執行使用者和服務存取 Secrets Manager 資源的限制。

您可以使用環境定義型限制及身分與存取管理 (IAM) 原則來控制 Secrets Manager 資源。 這些資源包括鏈結至 Secrets Manager 實例的 Virtual Private Cloud (VPC) 參照及 Internet Protocol (IP) 位址。

這些限制與基於身分的傳統 IAM 策略配合使用,提供另一層保護。 與 IAM 原則不同,環境定義型限制不會指派存取權。 環境定義型限制會檢查存取要求是否來自您配置的容許環境定義。 因為 IAM 存取及環境定義型限制都強制執行存取,所以環境定義型限制即使面對已受損或管理錯誤的認證也會提供保護。 如需相關資訊,請參閱 何謂環境定義型限制

使用者必須在 Secrets Manager 服務上擁有 Administrator 角色,才能建立、更新或刪除規則。 使用者還必須在環境定義型限制服務上具有 EditorAdministrator 角色,才能建立、更新或刪除網路區域。 在環境定義型限制服務上具有 Viewer 角色的使用者只能將網路區域新增至規則。

任何 IBM Cloud Activity Tracker 或產生的審核日誌事件都來自環境定義型限制服務,而不是 Secrets Manager。 如需相關資訊,請參閱 監視環境定義型限制

若要開始使用環境定義型限制保護 Secrets Manager 資源,請參閱 運用環境定義型限制來保護資源安全 的指導教學。

Secrets Manager 如何與環境定義型限制整合

若要限制存取權,您必須建立 區域規則

首先,使用網路或資源定義的適當詳細資料來建立區域。 然後,將該區域連接至指定的資源,以限制存取權。 您可以使用 RESTful API環境定義型限制來建立區域和規則。 建立或更新區域或規則之後,可能需要幾分鐘,變更才會生效。

CBR 規則不適用於佈建或取消佈建處理程序。

限制

當使用者具有實例層次 IAM 存取權時,套用至特定密鑰群組的 CBR 規則不會生效。 若要暫行解決此限制,請將使用者的 IAM 存取原則僅設為密鑰群組。

環境定義型限制僅保護與 Secrets Manager API 相關聯的動作。 與下列平台 API 相關聯的動作不受環境定義型限制保護。 請參閱 API 文件,以取得特定動作 ID。

建立網路區域

透過建立網路區域,您可以定義網路位置的允許清單,以從中產生存取要求來決定何時可以套用規則。 網路位置清單可由下列屬性指定:

  • IP 位址,包括個別位址、範圍或子網路。
  • VPC
  • 服務參照,容許從其他 IBM Cloud 服務存取。

確保針對其他 IBM Cloud 資源的規則,將 Secrets Manager 加入網路區域,否則工作流程中的某些作業可能會失敗。

如果您在虛擬私有雲中的經典基礎架構上建立 IBM Cloud 虛擬伺服器,則 CBR 規則必須使用的私有 IP 位址是虛擬私有雲閘道 IP。 請勿在標準基礎架構上使用虛擬伺服器的內部 IP 位址。 若要尋找閘道 IP 位址,請在虛擬私有雲基礎架構中選擇相關的 IBM Cloud 服務端點來源 IP 位址。

使用 API 建立網路區域

您可以使用 create-zone 指令來建立網路區域。 如需相關資訊,請參閱 API 文件。 您可以將 Secrets Manager 新增至網路區域作為服務參照,以容許 Secrets Manager 存取帳戶中作為規則主體的資源及服務。

Secrets Manager 的 serviceRef 屬性為 secrets-manager

您可以透過檢查 參照目標 來判定哪些服務可用。

將 Secrets Manager 新增至網路區域的有效負載範例。

{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "secrets-manager",
        "account_id": "ACCOUNT-ID"
      }
    }
  ]
}

將多個服務、IP 位址及 VPC 新增至網路區域的有效負載範例。

{
  "name": "zone",
  "description": "",
  "addresses": [
    {
      "type": "ipAddress",
      "value": "192.168.0.0"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-east:a/CRN"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-south:a/CRN"
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "cloud-object-storage",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "codeengine",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "containers-kubernetes",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_type": "platform_service",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "iam-groups",
        "account_id": "ACCOUNT-ID"
      }
    }
  ],
  "excluded": []
}

建立區域後,您可以 更新或刪除 它們。

使用使用者介面建立網路區域

設定必要條件及需求之後,您可以在使用者介面中建立區域。 如需相關資訊,請參閱 建立環境定義型限制

  1. 決定您要新增至允許清單的資源。
  2. 遵循主控台中 建立環境定義型限制 的步驟。 將 Secrets Manager 服務新增至網路區域,以容許 IBM Cloud® Secrets Manager 存取帳戶中的服務及資源。

建立區域後,您也可以 更新或刪除 它們。

使用 CLI 建立網路區域

您可以使用 cbr-zone-create 指令,將網路位置、VPC 及服務參照新增至網路區域。 如需相關資訊,請參閱 CBR CLI 參考資料。 將 Secrets Manager 新增至網路區域作為服務參照,以容許 Secrets Manager 存取您帳戶中作為規則主旨的資源及服務。

  1. 若要從 CLI 建立網路區域,請 安裝 CBR CLI 外掛程式
  2. 使用 cbr-zone-create 指令,將資源新增至網路區域。 如需相關資訊,請參閱 CBR CLI 參考資料。 請注意,Secrets Manager 的 service_namesecrets-manager

若要尋找可用服務參照的清單,請執行 ibmcloud cbr service-ref-targets 指令

secrets-manager 服務新增至網路區域的範例指令。

ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=secrets-manager

瞭解規則

建立區域之後,您可以透過建立規則,將區域連接至網路資源。 當您將資源新增至規則時,可以從網路拓蹼特有的可用 端點類型 中進行選擇。

使用 API 建立規則

您可以使用從建立網路區域收集的資訊,使用 API 來定義規則。

請檢閱下列範例,以瞭解如何建立 Secrets Manager的規則。 如需相關資訊,請參閱 API 文件

下列範例有效負載會建立規則來保護 CLUSTER-ID 叢集。 只有 NETWORK-ZONE-ID 區域中的資源才能存取叢集。 如果未指定 operations,則 NETWORK-ZONE-ID 區域中的資源可以同時存取 clustermanagement API。

{
  "description": "Example rule 1",
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT-ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "CLUSTER-ID"
        }
      ]
    }
  ],
  "contexts": [
    {
      "attributes": [
        {
          "name": "networkZoneId",
          "value": "NETWORK-ZONE-ID"
        },
        {
          "name": "endpointType",
          "value": "private"
        }
      ]
    }
  ]
}

建立規則之後,您可以 更新刪除 它們。

使用使用者介面建立規則

設定必要條件及需求之後,您可以在使用者介面中建立規則。

  1. 決定您要新增至允許清單的資源。
  2. 遵循主控台中 建立環境定義型限制 的步驟。 將 Secrets Manager 服務新增至網路區域,以容許 IBM Cloud® Secrets Manager 存取帳戶中的服務及資源。

建立規則之後,您可以 更新刪除 它們。

使用 CLI 建立規則

請檢閱下列範例,以瞭解如何建立 Secrets Manager的規則。 如需相關資訊,請參閱 CBR CLI 參考資料

  1. 若要從 CLI 建立規則,請 安裝 CBR CLI 外掛程式
  2. 您可以使用 ibmcloud cbr rule-create 指令 來建立 CBR 規則。 如需相關資訊,請參閱 CBR CLI 參考資料。 請注意,Secrets Manager 的 service_namesecrets-manager。 若要尋找服務名稱清單,請執行 ibmcloud cbr service-ref-targets 指令。 若要尋找服務的 API 類型清單,請執行 ibmcloud cbr api-types --service-name SERVICE 指令。

建立使用 addresses 金鑰及 cluster API 類型和 ipAddress 類型的規則的範例指令。

ibmcloud cbr rule-create my-rule-1 --service-name secrets-manager --api-type crn:v1:bluemix:public:secrets-manager::::api-type:cluster --zone-id ZONE-ID

下列指令會建立保護 CLUSTER-ID 叢集的規則。 只有 NETWORK-ZONE-ID 網路區域中的資源才能存取叢集。 此規則同時包含 clustermanagement API 類型。

ibmcloud cbr rule-create my-rule-2 --service-name secrets-manager --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID

下一步

您必須遵循區域或規則的建立或修改,並進行適當的測試,以確保存取權及可用性。

未建立適當的規則時,嘗試存取已定義區域之外的資源的使用者會收到 HTTP error 401