本文件概述了如何運用基於上下文的限制來保護您的 Cloud Databases 資源。 請使用此文件為基於上下文的限制準備您的資源。在當前實施 Cloud Databases 階段,此功能尚未向控制平面提供作用域規則。
環境定義型限制
基於情境的限制功能,讓帳戶擁有者與管理員能夠依據存取請求的情境,為 IBM Cloud® 資源定義並實施存取限制。 可透過基於情境的限制和 Identity and Access Management (IAM) 政策來控制對 Cloud Databases 資源的存取權限。
這些限制與基於身分的傳統 IAM 策略配合使用,以提供額外的保護層。 與 IAM 策略不同,基於上下文的限制不會分配存取權限。 基於上下文的限制檢查存取請求是否來自您配置的允許的上下文。 由於 IAM 存取和基於上下文的限制都強制執行訪問,因此即使在憑證遭到洩露或管理不善的情況下,基於上下文的限制也能提供保護。 有關詳細信息,請參閱 什麼是基於上下文的限制。
使用者必須在服務上 Cloud Databases 具備管理員角色,才能建立、更新或刪除規則。 使用者還必須具有基於上下文的限制服務的編輯者或管理員角色才能建立、更新或刪除網路區域。 在基於情境的限制服務上具有檢視者角色的使用者可以將網路區域新增至規則。
產生的任何IBM Cloud Activity Tracker或審核日誌事件都來自基於上下文的限制服務,而不是Cloud Databases。Cloud Databases僅支援客戶與基於上下文的限制保護的平台端點呼叫互動的審核事件。當您在實例的控制平面 API 上啟用基於上下文的限制規則時,Cloud Databases不支援審核事件。 有關詳細信息,請參閱 監控基於上下文的限制。
若要開始使用基於上下文的限制來保護您的Cloud Databases資源,請參閱 利用基於上下文的限制來保護您的資源的 教學。
Cloud Databases如何與基於上下文的限制集成
您可以為Cloud Databases服務、特定資源和特定 API 建立基於上下文的限制。
保護Cloud Databases資源
您可以建立基於上下文的限制規則來保護特定區域、資源群組和實例。
- 地區
- 保護特定區域中的Cloud Databases資源。 如果您在基於上下文的限制規則中包含某個區域,則與該規則關聯的網路區域中的資源只能與該區域中的資源互動。 如果使用CLI,您可以指定
--region選項來保護特定區域的資源。 如果您使用 UI,則可以在資源屬性中指定區域。 - 資源群組
- 保護特定的資源群組。 如果您在基於上下文的限制規則中包含資源群組,則與該規則關聯的網路區域中的資源只能與該資源群組中的資源進行互動。 將規則範圍限定為特定資源群組僅適用於保護叢集 API 類型的規則。 如果使用 CLI,則可以指定
--resource-group-id選項來保護特定資源組中的資源。 如果您使用 UI,則可以在資源屬性中指定資源群組。 - 實例
- 保護特定實例。 如果您在基於上下文的限制規則中包含實例,則與該規則關聯的網路區域中的資源只能與該實例中的資源進行互動。 將規則範圍限定為特定實例僅適用於保護叢集 API 類型的規則。 如果使用 CLI,則可以指定
--service-instance選項來保護特定資源組中的實例。 如果使用 UI,則可以在資源屬性中指定Service 實例。
使用命令列介面 (CLI)
您可以透過 安裝基於上下文的限制 CLI 插件, 使用IBM Cloud CLI 建立和管理基於上下文的限制。
建立網路區域
網路區域表示建立存取請求的 IP 位址白名單。 它定義了一組由下列屬性指定的一個或多個網路位置:
- IP 位址,包括單獨的位址、範圍或子網路。
- VPC。
在 UI 中建立網頁區域
-
前往IBM Cloud®控制台中的管理>基於上下文的限制。
-
選擇網路區域。
-
按一下建立。
-
為您的網路區域命名並提供描述。
-
輸入您允許的 IP 位址。 您可以輸入單一 IP 位址、一系列 IP 位址或單一 CIDR。
拒絕的 IP 位址欄位是可選的,並且應僅包含您在允許的 IP 位址欄位中提供的 IP 範圍內包含的例外情況。
-
選擇您允許的 VPC,選擇任意數量。
-
引用服務:您可以選擇Cloud Databases作為基於上下文的限制的來源服務,但不能選擇作為目標服務。 例如,您可以使用來自IBM® Key Protect for IBM Cloud®的 BYOK 來設定Cloud Databases實例。 在此範例中,Cloud Databases是來源結構,IBM® Key Protect for IBM Cloud®是目標結構。 然後,您可以使用Cloud Databases服務參考建立一個網路區域,並建立一個與面向IBM® Key Protect for IBM Cloud®的網路區域關聯的規則。 若要新增Cloud Databases服務引用,對於Service Type,會自動選擇 IAM 服務。 在服務下拉清單中,選擇特定的Cloud Databases服務。 如果您建立的區域與定位Cloud Databases規則關聯,則不允許服務參考。
服務引用功能僅限於從 Key Protect 服務 到 Cloud Databases 的範圍。
在 CLI 中建立網路區域
若要在 CLI 中建立網路區域,請使用 cbr-zone-create 指令將資源新增至網路區域。 有關更多信息,請參閱 基於上下文的限制 CLI 參考。
使用如下命令建立區域:
ibmcloud cbr zone-create --addresses=1.1.1.1,5.5.5.5 --name=<NAME>
在 Terraform 中建立網路區域
若要在 Terraform 中建立區域,請依照 IBM Cloud Terraform 提供者文件中的說明進行操作。
建立 CBR 區域的 Terraform 腳本範例:
resource "ibm_cbr_zone" "cbr_zone" {
account_id = "12ab34cd56ef78ab90cd12ef34ab56cd"
addresses {
type = "ipAddress"
value = "169.23.56.234"
}
addresses {
type = "ipRange"
value = "169.23.22.0-169.23.22.255"
}
excluded {
type = "ipAddress"
value = "169.23.22.10"
}
excluded {
type = "ipAddress"
value = "169.23.22.11"
}
description = "this is an example of zone"
excluded {
type = "ipAddress"
value = "value"
}
name = "an example of zone"
}
另外,您也可以使用 Terraform IBM Modules(TIM)for CBR Zone 來為基於上下文的限制建立一個區域,或更新現有區域中的位址。
使用 Terraform IBM 模組(TIM) 建立 CBR 區的範例:
module "ibm_cbr" "zone" {
source = "terraform-ibm-modules/cbr/ibm//modules/cbr-zone-module"
version = "X.X.X" # Replace "X.X.X" with a release version to lock into a specific release
name = "zone_for_pg_access"
account_id = "defc0df06b644a9cabc6e44f55b3880s"
zone_description = "Zone created from terraform"
addresses = [{type = "vpc",value = "vpc_crn"}]
}
在 CLI 中更新網路區域
使用以下命令更新區域:
ibmcloud cbr zone-update <ZONE-ID> --addresses=1.2.3.4 --name=<NAME>
更新需要 ZONE-ID,而不是區域名稱。 使用以下命令列出您的區域並檢索相關的 ZONE-ID:
ibmcloud cbr zones
zone-update 命令是覆蓋。 包括所有必填字段,就像您從頭開始建立規則一樣。 若您遺漏任何必填欄位,規則將覆寫這些缺失欄位為空值,且規則可能因部分必填欄位未填妥而失敗——無論這些欄位是否涉及規則變更。
在 CLI 中刪除網路區域
使用如下命令刪除區域:
ibmcloud cbr zone-delete <ZONE-ID>
建立規則
規則會根據資源屬性和環境定義來限制對特定雲端資源的存取權。 建立的規則最多可接受 2,000 個專用端點的 IP/CIDR 值和最多 2,000 個公共端點的 IP/CIDR 值。 此限制特定於Cloud Databases。 其他IBM Cloud®服務限制可能有所不同。
Cloud Databases不支援IPv6位址。 如果包含IPv6位址,它將被忽略。
完全關閉對非允許端點的存取:為了提供更強大的安全框架,我們對公共和私有端點的存取控制進行了重大更改。 今後,對未明確列入許可名單的公共和私有端點的存取將完全關閉。 此限制可確保只有經過授權的存取才能存取您的端點,從而最大限度地降低未經授權存取的風險。
在 UI 中建立規則
-
前往IBM Cloud®控制台中的管理>基於上下文的限制。
-
選擇規則。
-
按一下建立。
-
在 「服務」 下,選擇您的規則要定位的服務。
-
在 API 下,選擇
Data plane。 目前任何其他選擇都會導致錯誤。預期資料平面 API 類型的動作數為 0。
Cloud Databases 目前不支援控制平面作為選項。
-
在 「資源」 下,將規則範圍設定為 「所有資源」 或 「特定資源」。 有關更多信息,請參閱 保護Cloud Databases資源。
-
按一下繼續。
-
定義允許的端點類型。
- 將切換設為 “否” 以允許所有端點類型。
- 將開關設為 “是” 以僅允許特定端點類型,然後從清單中進行選擇。
-
選擇您已建立的一個或多個網路區域,或透過按一下「建立」 來建立新的網路區域。
上下文定義從哪裡可以存取您的資源,從而有效地將您的網路區域連結到您的規則。
-
按一下 [ 新增 ],將您的組態新增至摘要。
-
按下一步。
-
說出你的規則。
-
選擇執行規則的方式。
僅報告模式不適用於 Cloud Databases.
在 CLI 中建立規則
要在 CLI 中建立規則,您需要適當的Cloud Databases service_name:
databases-for-postgresqldatabases-for-mongodbdatabases-for-redisdatabases-for-elasticsearchdatabase-for-mysqlmessages-for-rabbitmq
CBR 插件參考指南 中解釋了後面的所有其他參數。
建立 CBR 規則的命令範例:
ibmcloud cbr rule-create --enforcement-mode enabled --context-attributes "networkZoneId=<ZONE-ID>" --resource-group-id <RESOURCE_GROUP_ID> --service-name <SERVICE-NAME> --service-instance <SERVICE-INSTANCE> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description <DESCRIPTION>
目前唯一受支援 api-type 的選項 Cloud Databases 是資料平面。
僅報告模式不適用於 Cloud Databases.
更新 CLI 中的規則
更新 CBR 規則的命令範例:
ibmcloud cbr rule-update <RULE-ID> --enforcement-mode disabled --context-attributes="networkZoneId=<ZONE-ID>" --resource-group-id <RESOURCE_GROUP_ID> --service-name <SERVICE_NAME> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description <DESCRIPTION>
rule-update 命令是覆蓋。 包括所有必填字段,就像您從頭開始建立規則一樣。 如果您省略任何必填字段,則規則會將這些缺失的字段覆蓋為空,並且規則可能會失敗,因為其中一些字段是必填的,無論它們是否更改規則。
更新需要 RULE-ID,而不是規則名稱。 使用以下命令列出您的規則並檢索相關的 RULE-ID:
ibmcloud cbr rules
在 CLI 中刪除規則
使用以下命令刪除規則:
ibmcloud cbr rule-delete <RULE-ID>
使用 ibmcloud cbr <command> — help 取得選項和參數的完整清單。 例如,ibmcloud cbr rule-create — help 輸出用於規則建立的參數。
在 Terraform 中建立規則
若要在 Terraform 中建立規則,請遵循 IBM Cloud Terraform 提供者文件中的說明。
要建立規則,您需要適當的Cloud Databases service_name:
databases-for-postgresqldatabases-for-mongodbdatabases-for-redisdatabases-for-elasticsearchdatabase-for-mysqlmessages-for-rabbitmq
使用以下命令建立規則:
resource "ibm_cbr_rule" "cbr_rule" {
contexts {
attributes {
name = "networkZoneId"
value = "559052eb8f43302824e7ae490c0281eb"
}
attributes {
name = "endpointType"
value = "private"
}
}
description = "this is an example of a rule with one context one zone"
enforcement_mode = "enabled"
operations {
api_types {
api_type_id = "api_type_id"
}
}
resources {
attributes {
name = "accountId"
value = "12ab34cd56ef78ab90cd12ef34ab56cd"
}
attributes {
name = "serviceName"
value = "network-policy-enabled"
}
tags {
name = "tag_name"
value = "tag_value"
}
}
}
驗證您的規則
若要驗證您的規則是否已套用,請前往IBM Cloud®儀表板並從資源清單中選擇相關實例。 在 「近期任務」 中,您可以看到規則的狀態。
建立或修改規則的任務將進入實例的任務佇列。 根據工作負載,規則實作可能需要一些時間才能完成。