KMS提供阿里雲SDK、憑據SDK和執行個體SDK(不推薦)三類SDK,本文介紹其接入流程、認證鑒權、支援的API、支援訪問網關類型等資訊,使用者可根據業務需求選擇適合的SDK。
SDK 接入流程圖
阿里雲SDK
阿里雲SDK是封裝好的用於調用雲產品OpenAPI的程式依賴包,方便開發人員快速構建與阿里雲相關的應用程式,不僅支援憑據和密鑰的管控類API還支援業務類API。支援Java、Python、C++、PHP、.NET(僅C#)、Go、TypeScript、Swift多種語言。更多關於阿里雲SDK資訊,請參見阿里雲SDK。
支援的API
阿里雲SDK支援調用OpenAPI執行KMS管控類操作和業務類操作。更多關於API支援情況可參見阿里雲 SDK支援的OpenAPI。
管控類操作:包含預設密鑰、KMS執行個體相關的管控類操作,例如建立密鑰、建立憑據、建立KMS執行個體、修改密鑰標籤等。
業務類操作:
密碼運算:對稱加解密、非對稱加解密、信封加密、產生資料密鑰、數位簽章、驗證簽名等與密碼學相關的操作。
擷取憑據值:擷取KMS執行個體中憑據的憑據值。
在正式環境中使用阿里雲SDK擷取憑據值時,請您做好錯誤重試、憑據緩衝等商務邏輯,避免網路抖動導致擷取憑據值失敗,具體操作可參考見使用指數退避方法對請求錯誤進行重試。
支援的網關類型
阿里雲SDK支援通過共用網關或專屬網關來訪問OpenAPI和執行個體API。其中管控類API操作僅可通過共用網關訪問,而業務類API既支援通過共用網關也能通過專屬網關訪問。
網關類型 | 推薦使用情境 | 支援的API |
共用網關 |
| 全部OpenAPI |
專屬網關 |
| OpenAPI-密碼運算、OpenAPI-擷取憑據值 |
憑據SDK
憑據SDK是基於KMS OpenAPI和KMS執行個體API的自訂封裝,實現在應用中緩衝和重新整理憑據的功能,業務穩定性更高且更易於開發人員在業務應用中整合。僅支援擷取憑據,包含憑據用戶端、憑據JDBC用戶端、RAM憑據外掛程式三種SDK,支援Java(Java 8及以上版本)、Python、Go多種語言。更多關於憑據SDK資訊,請參見憑據SDK。
憑據SDK類型
SDK | 功能說明 |
| |
| |
|
支援的API
憑據SDK僅支援通過OpenAPI和執行個體API(不推薦)執行擷取憑據值的業務類操作,憑據管控類操作請使用阿里雲SDK。
支援的網關類型
憑據SDK通過共用網關或專屬網關來擷取憑據值。
網關類型 | 推薦使用情境 |
共用網關 |
|
專屬網關 |
|
KMS執行個體SDK(不推薦)
應用程式通過KMS執行個體SDK訪問專屬網關Endpoint,完成密碼運算操作、擷取憑據值。支援Java(Java 8及以上版本)、PHP、Go、Python、.NET(僅C#)語言。詳細內容,請參見KMS執行個體SDK(不推薦)。
網關類型對應的Endpoint
KMS提供了兩種Endpoint:
共用網關Endpoint(KMS服務Endpoint):KMS服務的全域網路地址,可通過公網或VPC網路訪問。
格式:
kms.<地區ID>.cryptoservice.kms.aliyuncs.com,地區ID相關資訊,請參見地區和可用性區域。樣本:華東1(杭州)的地址為:
kms.cn-hangzhou.aliyuncs.com,通過VPC網路的地址為:kms-vpc.cn-hangzhou.aliyuncs.com。
專屬網關Endpoint(KMS執行個體Endpoint):特定KMS執行個體的網路地址,僅支援私網訪問。
格式:
<KMS執行個體ID>.cryptoservice.kms.aliyuncs.com。樣本:
kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com。
身份認證及鑒權
KMS提供RAM鑒權、AAP鑒權兩種鑒權方式,共用網關支援RAM鑒權、AAP鑒權,專屬網關僅支援AAP鑒權。
RAM鑒權:RAM角色、STS Token、ECS RAM角色、AK等,更多方式請,參見請參見管理訪問憑據。
重要使用RAM鑒權方式,通過專屬網關使用執行個體下的密鑰和憑據時,需要配置CA認證。
AAP鑒權(不推薦):建立應用存取點下載儲存認證檔案ClientKey,其中包含应用身份凭证内容(ClientKeyContent)和憑證口令(ClientKeyPassword)。
RAM鑒權
AccessKey
阿里雲帳號預設有所有資源的Administrator許可權且不可修改,為了確保資源安全,建議使用RAM使用者建立AccessKey,並根據需求進行最小化授權。
登入RAM控制台,在頁用户面,單擊目標RAM使用者名稱稱。
在认证管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。
授予RAM使用者訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM使用者操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
ECS RAM角色
ECS RAM角色是指為ECS執行個體授予的RAM角色,該RAM角色是一個受信服務為雲端服務器的普通服務角色。使用執行個體RAM角色可以實現在ECS執行個體內部無需配置AccessKey即可擷取臨時訪問憑證(STS Token),從而調用KMS的OpenAPI。
具體操作,請參見執行個體RAM角色。
登入RAM控制台,建立可信實體為阿里雲服務的RAM角色。
信任主體類型:選擇云服务器。
信任主體名稱:選擇Elastic Compute Service。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
登入ECS管理主控台,將RAM角色授予ECS執行個體。

AK+RamRoleArn
RAM使用者或雲產品可以通過扮演角色的方式擷取臨時許可權(STS Token),而不是直接使用長期密鑰,降低了密鑰泄露的風險。例如,在臨時的資料處理任務中,RAM使用者或雲產品臨時扮演一個具有特定RamRoleArn的角色,完成任務后角色許可權被收回,減少泄露風險。
建立使用者AK
登入RAM控制台,在頁面,單擊目標RAM使用者名稱稱。
為RAM使用者指派系統策略
AliyunSTSAssumeRoleAccess或包含許可權操作sts:AssumeRole的自訂策略。在认证管理頁簽下的AccessKey地區,單擊建立AccessKey,並按照指引完成建立。
建立RAM角色並授權:
在頁面,單擊创建角色具體操作,請參見建立RAM角色。
授予RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標RAM角色的RamRoleArn。具體操作,請參見查看RAM角色。
在頁面,單擊目標角色名稱。
進入角色詳情頁,在ARN地區可擷取RamRoleArn資訊。
說明RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。
STS Token
通過STS服務為RAM使用者或RAM角色頒發一個臨時訪問憑證(STS Token),可以在限定的有效期間內,以符合策略規定的許可權訪問KMS,超過有效期間後,該憑證自動失效。
為RAM使用者或RAM角色授予
AliyunSTSAssumeRoleAccess許可權。具體操作,請參見管理RAM使用者的許可權、管理RAM角色的許可權。授予RAM使用者或RAM角色訪問KMS的許可權。
方式一:設定基於身份的策略
單擊RAM角色或使用者操作列的新增授权,直接綁定KMS內建系統權限原則。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
使用RAM使用者或RAM角色調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。具體操作,請參見AssumeRole - 擷取扮演角色的臨時身份憑證。
OIDC Role ARN
建立OIDC身份供應商
使用Resource Access Management員登入RAM控制台,進入整合管理 > SSO管理頁面,並選擇角色SSO。
在OIDC頁簽,單擊创建身份提供商。
在创建身份提供商頁面,設定身份供應商資訊。具體配置,請參見管理OIDC身份供應商。
擷取並儲存OIDC身份資訊(ARN和用戶端ID)
進入整合管理 > SSO管理頁面,單擊目標身份提供商名稱。
進入身份提供商詳情頁,可查看ARN和用戶端識別碼。
建立OIDC身份供應商的RAM角色並授權
使用Resource Access Management員登入RAM控制台,在頁面。
單擊创建角色,在建立頁面右上方,單擊切換編輯器。
在編輯器中指定具體的OIDC身份供應商。選擇可視化編輯模式,並參考如下說明,完成配置。
說明更多模式,請參見建立OIDC身份供應商的RAM角色。
在主體中選擇身份提供商後,單擊下方編輯。
在添加主體彈窗中,參考如下說明,完成配置。
身份提供商类型:選擇OIDC。
身份提供商:選擇之前建立的OIDC身份供應商。
授予OIDC RAM角色訪問KMS的許可權
方式一:設定基於身份的策略
返回身份管理角色列表頁,單擊目標OIDC 角色操作列的新增授权,直接綁定KMS內建系統權限原則到RAM角色。KMS內建系統權限原則,請參見Key Management Service系統權限原則參考。
說明同時支援自訂權限原則,具體操作請參見建立自訂權限原則。
方式二:設定基於資源的策略
KMS支援基於資源的策略,即為單個密鑰和憑據設定存取權限,用於控制哪些阿里雲帳號、RAM使用者、RAM角色有許可權來管理或使用KMS密鑰、憑據。詳細介紹,請參見密鑰策略、憑據策略。
擷取目標 Role ARN
在頁面,單擊目標角色名稱。
進入角色詳情頁,在ARN地區可擷取OIDC Role ARN資訊。
說明Role ARN是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。
簽發並儲存OIDC令牌(OIDC Token)檔案
阿里雲不支援在控制台上直接通過OIDC登入,但可以通過編程方式完成OIDC SSO流程。擷取OIDC令牌涉及一個OAuth流程,常用的方法包括標準的OAuth 2.0流程,從OIDC IdP,擷取OIDC Token。例如當應用程式運行於已啟用RRSA功能的ACK叢集中時,叢集將自動為該應用Pod建立和掛載相應的服務賬戶OIDC Token檔案。
AAP鑒權(不推薦)
共用網關配置
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
建立網路規則(非必須)。
說明如果您不需要基於來源IP限制訪問,則不需要設定網路規則。但為了更高的安全性,通常建議您合理設定。
單擊网络规则頁簽,然後單擊创建网络规则。
在创建网络规则面板,网络类型選擇Public,填寫允许访问的源IP地址後,單擊確定。
建立權限原則。
單擊权限策略,然後單擊创建权限策略。
在创建权限策略面板,按照下方提示完成共用網關配置後,單擊確定。
作用域:KMS共享网关
允许访问的资源:勾選你需要訪問的憑據
网络控制规则(非必須):勾選步驟二建立網路規則。
建立應用存取點AAP。
單擊应用接入頁簽,然後單擊创建应用接入点,。
在创建应用接入点面板,创建模式選擇标准创建,然後按照下方提示完成各項配置。
配置項
說明
认证方式
選擇ClientKey
Client Key加密口令
設定8~64位包含數字、英文大小寫、特殊字元
~!@#$%^&*?_-的字串有效期
重要推薦設定為1年,以降低ClientKey被泄露的風險。請務必在到期前更換,以免無法正常訪問KMS。具體操作,請參見更換ClientKey。
权限策略
選擇您步驟三建立的權限原則。
單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。
專屬網關配置
ClientKey支援快速建立和標準建立兩種方式。關於ClientKey的詳細介紹,請參見應用存取點概述、建立應用存取點。
方式一:快速建立
便捷高效適合於快速測試和開發情境,該方式建立的訪問憑證可以訪問KMS執行個體的全部資源。
登入Key Management Service控制台,在頂部功能表列選擇地區後,在左側導覽列單擊。
在应用接入頁簽,單擊创建应用接入点,在创建应用接入点面板完成各項配置。
配置項
說明
创建模式
選擇快速创建。
作用域(KMS实例)
選擇應用要訪問的KMS執行個體。
应用接入点名称
自訂應用存取點的名稱。
认证方式
預設為ClientKey,不支援修改。
默认权限策略
預設為
key/*secret/*,不支援修改。即應用可以訪問指定KMS執行個體中的所有密鑰和憑據。單擊確認,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。
方式二:標準建立
若希望對資源設定更精細化的存取權限,建議使用標準建立。
請參考建立應用存取點中的標準建立方式,建立用於訪問專屬網關的ClientKey。關鍵配置說明如下:
配置網路規則時,網路類型選擇Private。
配置許可權規則範圍時,請選擇對應的KMS執行個體ID。
建立完成後,瀏覽器會自動下載ClientKey。ClientKey包含以下內容:
应用身份凭证内容(ClientKeyContent):檔案名稱預設為
clientKey_****.json憑證口令(ClientKeyPassword):檔案名稱預設為
clientKey_****_Password.txt。