Key Protect 整合
第 2 代
您儲存於 Cloud Databases 中的資料,預設會透過隨機生成的金鑰進行加密。 為了管理加密金鑰,您可以透過「自帶金鑰」(BYOK)功能 IBM Key Protect,並使用您自己的其中一個金鑰來加密您的資料庫和備份。
要開始使用,請在 Key Protect 您的 IBM Cloud 帳戶。
在 Key Protect
請前往您的 Key Protect 實例,並 產生或輸入一組金鑰。
在使用者介面中授予服務授權
授權 Key Protect 用於 Cloud Databases 的部署:
- 開啟您的 IBM Cloud 儀表板
- 在選單列中,點選「管理」→「存取權限 (IAM)」。
- 在側邊導覽中,按一下授權。
- 按一下建立。
- 在「來源服務」選單中,選取該部署的服務。 舉例來說,Databases for PostgreSQL 或者 Databases for MongoDB。
- 在「來源」服務的資源選單中,選取「所有資源」。
- 在目標服務功能表中,選取 Key Protect。
- 請選擇或保留預設值「Account」作為「目標服務」的資源群組
- 在「目標服務實例 ID」選單中,選取要授權的服務實例。
- 啟用讀者角色。
- 若要使用「自帶金鑰」(BYOK),請在「授權依賴服務」區段中勾選「啟用授權委派」方塊。
- 按一下授權。
若在透過金鑰為您的部署進行配置之前,尚未取得服務授權,則配置將失敗。
若您想設定更嚴格的授權政策,請將政策配置為針對明確的根金鑰 CRN,或針對特定的 Key Protect 實例。 目前尚不支援針對 Key Protect 鑰匙圈所設定的限制。
在 CLI 中授予服務授權
- 建立一項授權政策,以允許「Cloud Databases」服務存取 CLI 上的「Key Protect」服務實例。 如需完整的參數清單,請參閱 IAM CLI 參考手冊。
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"
若在透過金鑰為您的部署進行配置之前,尚未取得服務授權,則配置將失敗。
若您想設定更嚴格的授權政策,請將政策配置為針對明確的根金鑰 CRN,或針對特定的 Key Protect 實例。 目前尚不支援針對 Key Protect 鑰匙圈所設定的限制。
透過 REST API 授予服務授權
- 建立一項授權政策,允許「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 的「授權」中會出現兩項記錄。 其中一項是該部署的條目,其中將其狀態列為「授權者」。 這是「使用者建立的」。
| 角色 | 來源 | 目標 | 類型 |
|---|---|---|---|
| AuthorizationDelegator, 讀者 | <cloud-databases> 服務 |
Key Protect 服務 | 使用者定義 |
此外,還需為服務執行個體及其備份(如有)的 Block Storage for VPC 卷設定一項,其中部署方為發起者。
| 角色 | 來源 | 目標 | 類型 |
|---|---|---|---|
| 讀者 | 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 所示),不僅顯示為建立者的部署會受到影響,任何同樣使用該金鑰的部署也會受到影響。 在您提交支援單並要求重新建立該政策之前,這些部署將會持續發生失敗。
若要重複使用金鑰,請務必謹慎。