Key Protect 整合

第 2 代

您儲存於 Cloud Databases 中的資料,預設會透過隨機生成的金鑰進行加密。 為了管理加密金鑰,您可以透過「自帶金鑰」(BYOK)功能 IBM Key Protect,並使用您自己的其中一個金鑰來加密您的資料庫和備份。

要開始使用,請在 Key Protect 您的 IBM Cloud 帳戶。

在 Key Protect

請前往您的 Key Protect 實例,並 產生或輸入一組金鑰

在使用者介面中授予服務授權

授權 Key Protect 用於 Cloud Databases 的部署:

  1. 開啟您的 IBM Cloud 儀表板
  2. 在選單列中,點選「管理」→「存取權限 (IAM)」。
  3. 在側邊導覽中,按一下授權
  4. 按一下建立
  5. 在「來源服務」選單中,選取該部署的服務。 舉例來說,Databases for PostgreSQL 或者 Databases for MongoDB
  6. 在「來源」服務的資源選單中,選取「所有資源」。
  7. 目標服務功能表中,選取 Key Protect
  8. 請選擇或保留預設值「Account」作為「目標服務」的資源群組
  9. 在「目標服務實例 ID」選單中,選取要授權的服務實例。
  10. 啟用讀者角色。
  11. 若要使用「自帶金鑰」(BYOK),請在「授權依賴服務」區段中勾選「啟用授權委派」方塊。
  12. 按一下授權

若在透過金鑰為您的部署進行配置之前,尚未取得服務授權,則配置將失敗。

若您想設定更嚴格的授權政策,請將政策配置為針對明確的根金鑰 CRN,或針對特定的 Key Protect 實例。 目前尚不支援針對 Key Protect 鑰匙圈所設定的限制。

在 CLI 中授予服務授權

  1. 建立一項授權政策,以允許「Cloud Databases」服務存取 CLI 上的「Key Protect」服務實例。 如需完整的參數清單,請參閱 IAM CLI 參考手冊
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"

若在透過金鑰為您的部署進行配置之前,尚未取得服務授權,則配置將失敗。

若您想設定更嚴格的授權政策,請將政策配置為針對明確的根金鑰 CRN,或針對特定的 Key Protect 實例。 目前尚不支援針對 Key Protect 鑰匙圈所設定的限制。

透過 REST API 授予服務授權

  1. 建立一項授權政策,允許「Cloud Databases」服務透過 IAM REST API 存取「Key Protect」服務實例。

如需完整的 API 參考資料,請參閱 IAM 政策管理 API

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
      {
          "attributes": [
              {
                  "name": "accountId",
                  "value": "CUSTOMER_ACCOUNT_ID"
              },
              {
                  "name": "serviceName",
                  "value": "<SERVICE-NAME>"
              }
          ]
      }
  ],
  "roles": [
      {
        "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
      },
      {
        "role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"
      }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "operator": "stringEquals",
                    "value": "CUSTOMER_ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "operator": "stringEquals",
                    "value": "kms"
                }
            ]
        }
    ]
}'

若在透過金鑰為您的部署進行配置之前,尚未取得服務授權,則配置將失敗。

若您想設定更嚴格的授權政策,請將政策配置為針對明確的根金鑰 CRN,或針對特定的 Key Protect 實例。 目前尚不支援針對 Key Protect 鑰匙圈所設定的限制。

使用 Key Protect 鍵

在授予您的 Cloud Databases 部署使用您的金鑰的權限後,您在配置部署時需提供 金鑰名稱或 CRN。 此部署會使用您的加密金鑰來加密您的資料。

在配置時於使用者介面中使用 Key Protect 鍵

若要從目錄頁面進行配置,請從下拉式選單中選取「Key Protect」實例及金鑰。

在 CLI 中進行配置時使用 Key Protect

在 CLI 中,請在參數 JSON 物件中使用 dataservices.encryption.disk 參數,為您的服務實例指派一個根金鑰 CRN。

ibmcloud resource service-instance-create <INSTANCE-NAME> <SERVICE-NAME> <PLAN-NAME> REGION -p '{"dataservices":{"encryption":{"disk":"KMS_KEY_CRN"}}}'

Key Protect 金鑰必須透過其完整的 CRN 來識別,而不僅僅是其 ID。 Key Protect 的CRN格式為 crn:v1:<...>:key:<id>

在 API 的配置過程中使用 Key Protect

在 API 中,請於請求正文中使用 dataservices.encryption.disk 參數。

  curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H "Authorization: Bearer <IAM token>" -H 'Content-Type: application/json' -d '{
    "name": "<INSTANCE-NAME>",
    "target": "ca-mon",
    "resource_group": "<A RESOURCE GROUP GUID>",
    "resource_plan_id": "<A PLAN ID>",
    "parameters": {
      "dataservices": {
          "encryption": {
            "disk": "KMS_KEY_CRN"
          }
      }
    }

Key Protect 金鑰必須透過其完整的 CRN 來識別,而不僅僅是其 ID。 Key Protect 的CRN格式為 crn:v1:<...>:key:<id>

金鑰輪換

Key Protect 提供手動和 自動金鑰輪替功能,且此金鑰輪替功能獲得 Cloud Databases 部署環境的支持。 當您旋轉金鑰時,系統會啟動一個_同步 KMS 狀態的_任務,並使用新金鑰重新加密您的部署。 該任務會顯示在您部署的「概覽」頁面中的「任務」頁面上,且相關的 Key Protect 和 Cloud Databases 事件會傳送至 Activity Tracker。

如需更多資訊,請參閱「手動或自動旋轉」。

刪除部署

若您刪除一個受「Key Protect」金鑰保護的部署,在軟刪除期間(最長 9 天),該部署仍會維持與該金鑰的關聯。 若要在軟刪除期間刪除該金鑰,請 強制刪除 該金鑰。 軟刪除期結束後,即可無需強制操作直接刪除該金鑰。 要確定何時可以刪除該金鑰,請檢查 該金鑰與您的部署之間的關聯

加密粉碎

加密銷毀是一種破壞性行為。 一旦刪除該金鑰,您的資料將無法復原。

Key Protect 可讓您對目前正被 IBM Cloud® 服務(包括您的第二代 Cloud Databases 部署)所使用的金鑰 執行強制刪除。 這種行為稱為「加密粉碎」。 若刪除部署中正在使用的金鑰,系統將會鎖定存放您資料的磁碟,並停用您的部署。 您仍然可以透過使用者介面 (UI)、命令列介面 (CLI) 及 API 存取使用者介面以及某些元資料(例如安全性設定),但無法存取任何資料庫或其中所包含的資料。 該刪除鍵值已以 kms.secrets.delete 的形式 發送至 Activity Tracker Event Routing

請自備備用鑰匙

若您使用 Key Protect,在配置資料庫時,亦可指定一組金鑰,用以加密存放您部署備份的 IBM® Cloud Block Storage for Virtual Private Cloud 磁碟。

備份會繼承與資料庫相同的加密金鑰。 在從資料庫建立備份時,無法提供不同的加密金鑰。

授予代表團授權

若要讓您的部署能使用 Key Protect 金鑰,您需要在授予服務授權時,啟用「授權委派」功能。 若在為部署發放金鑰之前未提供授權委派,則發放程序將失敗。

在您啟用授權委派並完成部署配置後,IAM 的「授權」中會出現兩項記錄。 其中一項是該部署的條目,其中將其狀態列為「授權者」。 這是「使用者建立的」。

授權委派者範例 Key Protect 授權
角色 來源 目標 類型
AuthorizationDelegator, 讀者 <cloud-databases> 服務 Key Protect 服務 使用者定義

此外,還需為服務執行個體及其備份(如有)的 Block Storage for VPC 卷設定一項,其中部署方為發起者。

來自 Cloud Databases 的 Cloud Object Storage 授權範例( Key Protect )
角色 來源 目標 類型
讀者 Block Storage for VPC 服務 Key Protect 服務 建立者 <cloud-databases-crn>

移除金鑰

IAM/ Key Protect 並不會阻止您移除鍵與 Block Storage for VPC 之間的政策(第二個範例),但這麼做可能會導致您的主題/區隔無法還原。

常見的陷阱

移除金鑰和授權時請務必謹慎。 如果您有多個部署使用相同的金鑰,撤銷授權可能會無意間導致所有這些部署的資料遭到破壞。 若情況允許,請勿在多個部署中使用相同的金鑰。

若要銷毀與您的實例相關的資料,您可以刪除該金鑰。Block Storage for VPC 可確保儲存空間處於無法讀取且無法寫入的狀態。 然而,任何其他使用同一密鑰的部署(或其備份)都將在後續過程中發生失敗。

若您確實需要將同一把金鑰用於多個部署和/或備份,刪除金鑰和授權可能會產生以下副作用。 若您刪除「Block Storage for VPC」的卷授權(如表 2 所示),不僅顯示為建立者的部署會受到影響,任何同樣使用該金鑰的部署也會受到影響。 在您提交支援單並要求重新建立該政策之前,這些部署將會持續發生失敗。

若要重複使用金鑰,請務必謹慎。