KMS 支援通過 SDK 或代理服務 KMS Agent 調用 API,實現密鑰管理、密碼運算以及憑據值擷取等功能,協助自建應用快速整合 KMS 服務。本文將介紹選擇合適網關、鑒權方式和整合方式,以及不同 API 類型的使用方法。
KMS 整合架構概覽
自建應用整合 KMS 需要在以下四個維度進行選擇:
網關類型:共用網關(公網/VPC)或專屬網關(私網)
鑒權方式:RAM 鑒權或應用存取點 AAP 鑒權(不推薦)
整合方式:SDK(阿里雲 SDK、憑據 SDK、執行個體 SDK)或 KMS Agent
API 類型:管控類操作 API、密碼運算 API、擷取憑據 API
KMS 整合概覽圖如下所示:
選型指南
根據業務情境,按以下步驟選擇合適的網關、鑒權和整合方案:
步驟一:確定網路隔離需求
業務部署在阿里雲 VPC 且需要高效能或高安全性:選擇 專屬網關(私網,資料全鏈路加密)。
業務部署在非阿里雲環境或需要管控操作:選擇 共用網關(公網/VPC)。
步驟二:確定 API 能力需求
需要管控操作(建立密鑰、憑據等):必須使用 共用網關 + 阿里雲 SDK。
需密碼運算:憑據 SDK 或阿里雲 SDK(對應網關類型)。
擷取憑據:憑據 SDK 或 KMS Agent。
跨語言應用需要簡化整合:使用 KMS Agent(僅支援擷取憑據)。
接入網關類型
KMS 提供兩種訪問網關:共用網關和專屬網關。
共用網關:為 KMS 服務的全域網路,可通過公網或 VPC 網路訪問KMS 服務,同時支援管控類操作和業務操作。
專屬網關:為特定 KMS 執行個體的網路,僅支援私網訪問KMS 服務,提供全鏈路 API 安全保障方案,資料安全性更高,只支援業務類操作。
差異點 | 共用網關 | 專屬網關 |
推薦使用情境 |
|
|
Endpoint | 公網、VPC 網域名稱 | KMS 私網網域名稱 |
效能 | 以加解密效能為例,通過共用網關訪問 KMS 時 QPS 為 1000。 | 以您購買的執行個體的計算效能規格為準,例如 1000、2000 等。 |
支援的整合方式 | 阿里雲 SDK、憑據 SDK、KMS Agent。 | 阿里雲 SDK、憑據 SDK、KMS Agent、執行個體 SDK。 |
支援的 API | 全部 OpenAPI。 | OpenAPI-密碼運算、OpenAPI-擷取憑據值、執行個體 API(不推薦)。 |
身份認證和鑒權 | RAM 鑒權和 AAP(不推薦)。 | RAM 鑒權和 AAP(不推薦)。 |
CA 憑證 | 無需配置 CA 憑證。 | 需要配置 CA 憑證。 |
整合方式
KMS 提供 SDK 和 KMS Agent 兩種整合方式,兩者在 API 支援和適用情境上有明顯差異。
SDK 和 KMS Agent 對比
維度 | SDK(阿里雲/憑據/執行個體) | KMS Agent | 整合建議 |
支援 API | 管控類、密碼運算、擷取憑據 | 僅擷取憑據 |
|
語言支援 | Java、Python、Go、C++、PHP、.NET、TypeScript、Swift | 任意程式設計語言(HTTP 介面) | 跨語言情境: Agent。 |
網路部署 | 直連網關,支援公網/VPC/私網 | 本地應用訪問,HTTP 本地通訊 |
|
整合複雜度 | 語言特定 SDK,簽名邏輯內建 | 簡化認證,標準 HTTP 介面,代理管理憑存 |
|
整合流程說明
SDK 整合
KMS SDK 將複雜的簽名過程封裝在方法內,使用者按照介面說明填入必填參數和認證資訊即可。KMS SDK 包含阿里雲 SDK、憑據 SDK、執行個體 SDK(不推薦)。
若您結合網關、鑒權、API 的情況選擇了合適的 SDK 後,可按照以下流程整合 SDK 以使用 KMS。更多 SDK 整合資訊,可參見SDK參考。
SDK 接入流程
SDK 整合遵循以下標準流程:
使用說明
支援通行金鑰和憑據的所有操作(管控類、操作類),其中管控類操作僅支援 SDK 這一種整合方式。
針對不同的語言環境,需要安裝對應語言的 SDK。
SDK 類型詳細說明
下表匯總三種 SDK 類型在支援 API、網關、鑒權和語言方面的差異,協助選擇合適的 SDK:
SDK 類型 | 支援的 API | 網關及鑒權方式說明 | 支援的開發語言 |
憑據 SDK |
| 共用網關:
專屬網關:
| 支援 3 種:
|
阿里雲 SDK | OpenAPI: | 共用網關:RAM 鑒權+OpenAPI 專屬網關:RAM 鑒權+OpenAPI | 支援 8 種:
|
執行個體 SDK(不推薦) | 執行個體 API: | 共用網關:不支援。 專屬網關:APP 鑒權+執行個體 API | 支援 5 種:
|
KMS Agent 整合
KMS Agent 簡化了應用訪問 KMS 的身份認證與緩衝管理流程,是基於標準化 HTTP 介面提供服務。更多資訊,請參見KMS Agent。
使用說明
適用於多語言環境,支援任意程式設計語言的業務應用調用 KMS Agent
僅支援本地業務應用訪問
僅支援擷取憑據值,不可管控憑據資訊例如修改、刪除憑據等操作
KMS Agent 接入流程
開發接入說明
支援的 API | 網關類型 | 鑒權方式 | 支援的開發語言 |
OpenAPI: 擷取憑據:GetSecretValue | 共用網關、專屬網關 | RAM 鑒權 | KMS Agent 是基於標準化 HTTP 介面提供服務,支援任意程式設計語言的業務應用調用。 |
KMS API 類型
KMS 提供 OpenAPI 和 KMS 執行個體 API(不推薦)兩大類型的 API,其中按功能區分又分為管控類操作 API、密碼運算類 API、擷取憑據 API 三大類 API。更多資訊可參見API概覽、執行個體 API。
API 類型對比
下表匯總三種 API 類型與整合方式的對應關係,協助快速定位合適方案:
API 類型 | 阿里雲 SDK | 憑據 SDK | 執行個體 SDK | KMS Agent |
管控類操作 建立、修改、刪除密鑰和憑據。 | ||||
密碼運算 加解密、數位簽章等。 | ||||
擷取憑據值 擷取憑據。 |
管控類操作
管控類操作包括執行個體、密鑰、憑據相關的管控操作,例如建立密鑰、建立憑據、建立KMS執行個體、修改密鑰標籤等。
管控類操作只能使用阿里雲SDK接入,通過訪問共用網關Endpoint調用OpenAPI。
密碼運算
密碼運算操作包括對稱加解密、非對稱加解密、信封加密、產生資料密鑰、數位簽章、驗證簽名等與密碼學相關的操作。
密碼運算操作可以通過阿里雲SDK或者KMS執行個體SDK接入。
通過共用網關調用密碼運算操作API時,需要開啟公網訪問開關。具體操作,請參見通過公網訪問KMS執行個體中的密鑰。
擷取憑據值
可以通過憑據SDK、阿里雲SDK、執行個體SDK、KMS Agent訪問共用網關或專屬網關調用OpenAPI-GetSecretValue或執行個體API-GetSecretValue(不推薦)擷取KMS憑據值。
API介面樣本
以下以OpenAPI為例,展示各類型對應介面說明。
管控類
服務管理
|
API |
標題 |
API概述 |
| DescribeAccountKmsStatus | 查詢當前阿里雲帳號的Key Management Service狀態 | 查詢當前阿里雲帳號的Key Management Service狀態。 |
| OpenKmsService | 為當前阿里雲帳號開通Key Management Service | 為當前阿里雲帳號開通Key Management Service。 |
執行個體管理
|
API |
標題 |
API概述 |
| ListKmsInstances | 擷取執行個體列表 | 查詢 KMS 執行個體列表。 |
| ConnectKmsInstance | 串連執行個體並配置網路 | 啟用一個KMS執行個體。 |
| GetKmsInstance | 擷取執行個體 | 查詢一個KMS執行個體的詳情。 |
| UpdateKmsInstanceBindVpc | 更新執行個體分享VPC | 更新KMS執行個體配置的VPC。 |
| ReleaseKmsInstance | 釋放KMS隨用隨付執行個體 | 釋放KMS隨用隨付執行個體。 |
| GetDefaultKmsInstance | 擷取預設KMS執行個體 | 擷取預設KMS執行個體。 |
密鑰管理
API | 標題 | API概述 |
建立一個主要金鑰 | 建立一個主要金鑰。 | |
查詢調用者在調用地區的所有主要金鑰ID | 查詢調用者在調用地區的所有主要金鑰ID。 | |
返回指定主要金鑰(CMK)的相關資訊 | 查詢使用者主要金鑰(CMK)詳情。 | |
更新主要金鑰描述資訊 | 更新主要金鑰的描述資訊。 | |
啟用指定的主要金鑰進行加解密 | 啟用指定的主要金鑰進行加解密。 | |
禁用指定的主要金鑰(CMK)進行加解密 | 禁用指定的主要金鑰(CMK)進行加解密。 | |
給主要金鑰(CMK)建立一個別名 | 為主要金鑰(CMK)建立一個別名。 | |
查詢目前使用者在當前地區的所有別名 | 查詢目前使用者在當前地區的所有別名。 | |
查詢主要金鑰(CMK)所有別名 | 查詢與指定主要金鑰(CMK)對應的所有別名。 | |
刪除別名 | 刪除別名。 | |
更新主要金鑰(CMK)ID | 更新已存在的別名所代表的主要金鑰(CMK)ID。 | |
擷取匯入主要金鑰(CMK)材料的參數 | 擷取匯入主要金鑰材料的參數。 | |
匯入密鑰材料 | 匯入密鑰材料。 | |
刪除已匯入的密鑰材料 | 刪除已匯入的密鑰材料。 | |
申請刪除一個指定的主要金鑰(CMK) | 申請刪除一個指定的主要金鑰(CMK)。 | |
撤銷密鑰刪除 | 撤銷密鑰刪除。 | |
設定刪除保護 | 為使用者主要金鑰(CMK)開啟或關閉刪除保護。 | |
更新密鑰輪轉策略 | 更新密鑰的周期性自動輪轉策略。 | |
查詢指定密鑰版本資訊 | 查詢指定密鑰版本資訊。 | |
為主要金鑰建立一個新的密鑰版本 | 為使用者主要金鑰(CMK)建立密鑰版本。 | |
列出主要金鑰的所有密鑰版本 | 列出主要金鑰的所有密鑰版本。 | |
設定密鑰策略 | 為KMS執行個體中的密鑰設定密鑰策略。 | |
查詢密鑰策略 | 查詢指定密鑰的密鑰策略。 |
憑據管理
API | 標題 | API概述 |
查詢目前使用者在當前地區建立的所有憑據 | 查詢目前使用者在當前地區建立的所有憑據。 | |
刪除憑據對象 | 刪除憑據對象。 | |
建立憑據 | 建立憑據並存入憑據的初始版本。 | |
更新憑據的中繼資料 | 更新憑據的中繼資料。 | |
更新憑據的版本狀態 | 更新憑據的版本狀態。 | |
更新動態憑據的輪轉策略 | 更新憑據輪轉策略。 | |
查詢憑據的中繼資料資訊 | 查詢憑據的中繼資料資訊。 | |
查詢憑據的所有版本資訊 | 查詢憑據的所有版本資訊。 | |
獲得一個隨機口令字串 | 獲得一個隨機口令字串。 | |
為憑據存入一個新版本的憑據值 | 為通用憑據存入一個新版本的憑據值。 | |
恢複被刪除的憑據 | 恢複被刪除的憑據。 | |
主動輪轉動態憑據 | 立即輪轉憑據。 | |
設定憑據策略 | 為KMS執行個體中的憑據鑰設定憑據策略。 | |
查詢憑據策略 | 查詢指定憑據的憑據策略。 |
標籤管理
|
API |
標題 |
API概述 |
| GetKmsInstanceQuotaInfos | 擷取執行個體配額資訊 | 擷取執行個體配額資訊。 |
| ListResourceTags | 擷取使用者主要金鑰的標籤 | 擷取使用者主要金鑰的標籤。 |
| TagResource | 為主要金鑰或憑據設定標籤 | 為主要金鑰、憑據或認證綁定標籤。 |
| UntagResource | 刪除使用者主要金鑰或憑據的指定標籤 | 為主要金鑰、憑據或認證解除綁定標籤。 |
應用管理
|
API |
標題 |
API概述 |
| CreateNetworkRule | 建立網路規則 | 建立一條網路控制規則,設定允許訪問KMS的私網IP或私網的網段。 |
| ListNetworkRules | 擷取網路規則列表 | 查詢網路控制規則列表。 |
| DescribeNetworkRule | 擷取網路規則 | 查詢一個網路控制規則的詳情。 |
| UpdateNetworkRule | 更新網路規則 | 更新一個網路控制規則。 |
| DeleteNetworkRule | 刪除網路規則 | 刪除一條網路控制規則。 |
| CreatePolicy | 建立存取原則 | 建立一個權限原則,設定允許應用訪問的密鑰和憑據。 |
| ListPolicies | 擷取存取原則列表 | 查詢權限原則列表。 |
| DescribePolicy | 擷取存取原則 | 查詢一個權限原則的詳情。 |
| UpdatePolicy | 更新存取原則 | 更新一個權限原則。 |
| DeletePolicy | 刪除存取原則 | 刪除一條權限原則。 |
| CreateApplicationAccessPoint | 建立應用存取點 | 建立一個應用存取點。 |
| ListApplicationAccessPoints | 擷取應用存取點列表 | 查詢應用存取點列表。 |
| DescribeApplicationAccessPoint | 擷取應用存取點 | 查詢一個應用存取點的詳情。 |
| UpdateApplicationAccessPoint | 更新應用存取點 | 更新一個應用存取點資訊。 |
| DeleteApplicationAccessPoint | 刪除應用存取點 | 刪除一個應用存取點。 |
| CreateClientKey | 建立應用身份憑證 | 建立一個應用身份憑證(ClientKey)。 |
| ListClientKeys | 擷取應用身份憑證列表 | 查詢應用身份憑證(ClientKey)列表。 |
| GetClientKey | 擷取應用身份憑證 | 擷取一個應用身份憑證(ClientKey)資訊。 |
| DeleteClientKey | 刪除應用身份憑證 | 刪除一個應用身份憑證(ClientKey)。 |
業務類-密碼運算
API列表 | 描述 | 共用網關 | 專屬網關 |
使用對稱金鑰將明文加密為密文。 | |||
產生一個隨機的資料密鑰,用於本機資料加密。 | |||
產生一個隨機的資料密鑰,用於本機資料加密,且不返回資料密鑰明文。 | |||
使用傳入的公開金鑰加密匯出資料密鑰。 | |||
隨機產生一個資料密鑰,通過您指定的KMS密鑰和公開金鑰加密後,返回使用KMS祕密金鑰加密後的資料密鑰密文,以及使用公開金鑰加密後的資料密鑰密文。 | |||
解密密文。 | |||
對密文進行轉加密。即先將密文解密,然後將解密得到的資料或者資料密鑰使用新的主要金鑰再次進行加密,返回加密結果。 | |||
使用非對稱金鑰進行簽名。 | |||
使用非對稱金鑰進行驗簽。 | |||
使用非對稱金鑰進行解密。 | |||
使用非對稱金鑰進行加密。 | |||
擷取非對稱金鑰的公開金鑰。 |
業務類-擷取憑據值
API列表 | 描述 | 共用網關 | 專屬網關 |
擷取憑據值。 |
認證與鑒權
KMS 支援 RAM 鑒權和應用存取點 AAP 鑒權(不推薦),更多資訊可參見管理 RAM 訪問憑據,應用存取點(AAP)管理。
差異點 | RAM 鑒權 | AAP 鑒權(不推薦) |
功能說明 |
|
|
支援的整合方式 | 阿里雲 SDK、憑據 SDK、KMS Agent。 | 憑據 SDK、執行個體 SDK。 |
支援的 API | 全部 OpenAPI。 | OpenAPI-擷取憑據、執行個體 API。 |
支援的網關 | 專屬網關、共用網關 | 專屬網關、共用網關 說明 針對不同的網關要求提供專屬網關和共用網關兩種模式,具體操作可參見AAP鑒權(不推薦)。 |