阿里雲SDK不僅支援通過調用OpenAPI執行建立執行個體、建立密鑰等管控類操作,還支援執行加密解密、擷取憑據值等業務類操作。其中管控類操作僅可通過共用網關訪問,而業務類操作既支援通過共用網關也能通過專屬網關訪問。本文介紹業務如何通過阿里雲SDK接入KMS。
接入流程簡述
共用網關和專屬網關的差異
以下表格僅對比在業務類操作中網關之間的差異。
差異點 | 共用網關 | 專屬網關 |
網路差異 | 公網或VPC網路。 | KMS私人網路。 |
效能差異 | 以加解密效能為例,通過共用網關訪問KMS時QPS為1000。 | 以您購買的執行個體的計算效能規格為準,例如1000、2000等。 |
初始化用戶端時的配置差異 |
|
|
API差異 | 專屬網關不支援ReEncrypt,其他支援的API和公網訪問相同。具體API列表,請參見本文的業務類-密碼運算、業務類-擷取憑據值。 | |
身份認證和鑒權差異 |
|
|
審計差異 | 通過ActionTrail,審計動作記錄。 | 通過Simple Log Service (SLS),審計動作記錄。 |
支援的OpenAPI
您可以通過共用網關執行管控類操作和業務類操作,通過專屬網關執行業務類操作。具體的 API 列表,請查看以下內容。
通過共用網關調用密碼運算類業務操作,使用前需要開啟公網訪問開關。具體操作,請參見通過公網訪問KMS執行個體中的密鑰。
Endpoint
身份認證與授權
使用阿里雲SDK通過共用網關和專屬網關訪問OpenAPI時認證方式相同,支援AK、STS Token、RamRoleArn、ECS執行個體RAM角色等基於RAM的身份認證方式。詳細內容,請參見管理訪問憑據。
AccessKey
阿里雲帳號預設有所有資源的Administrator許可權且不可修改,其AccessKey泄露會危及資源安全,因此強烈建議不要為主帳號建立AccessKey,請建立專用於API訪問的RAM使用者並建立對應的AccessKey,並完成最小化授權。具體操作,請參見建立AccessKey。
登入RAM控制台,在使用者頁面,單擊目標RAM使用者名稱稱。
在認證管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。

授予RAM使用者訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM使用者,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
STS Token
通過STS服務為RAM使用者或RAM角色頒發一個臨時訪問憑證,可以在限定的有效期間內,以符合策略規定的許可權訪問KMS,超過有效期間後,該憑證自動失效。
為RAM使用者或RAM角色授予
AliyunSTSAssumeRoleAccess許可權。具體操作,請參見為RAM使用者授權、為RAM角色授權。
授予RAM使用者或RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM使用者或RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
使用RAM使用者或RAM角色調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
RamRoleArn
RAM使用者或雲產品可以通過扮演角色的方式擷取臨時許可權,而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM使用者或雲產品臨時扮演一個具有特定RamRoleArn的角色,完成任務后角色許可權被收回,減少泄露風險。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標RAM角色的RamRoleArn。具體操作,請參見查看RAM角色。
說明RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。

ECS RAM角色
ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。
具體操作,請參見執行個體RAM角色。
登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。
信任主體類型:選擇雲端服務。
信任主體名稱:選擇Elastic Compute Service。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
KMS內建了系統權限原則,可以直接綁定到RAM角色,詳細介紹,請參見Key Management Service系統權限原則參考。您也可以自訂權限原則。

方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
登入ECS管理主控台,將RAM角色授予ECS執行個體。

支援的開發語言
下表列舉了支援的語言類型,以及各語言SDK的下載地址和參考文檔。
支援的語言 | V2.0 SDK(推薦) | V1.0 SDK(不推薦) |
Java | 下載地址:
參考文檔:整合SDK | 下載地址: 參考文檔:開始使用 |
Python | 下載地址: 參考文檔:整合SDK | 下載地址: 參考文檔:整合SDK |
C++ | 下載地址: 參考文檔:無 | 下載地址: 參考文檔:無 |
PHP | 下載地址: 參考文檔:快速開始 | 下載地址: 參考文檔:開始使用 |
.NET(C#) | 下載地址: 參考文檔:快速開始 | 下載地址: 參考文檔:開始使用 |
Go | 下載地址: 參考文檔:整合SDK | 下載地址: 參考文檔:開始使用 |
TypeScript | 下載地址: 參考文檔:無 | 未提供 |
Swift | 下載地址: 參考文檔:無 | 未提供 |

