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 執行個體。
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 - 擷取扮演角色的臨時身份憑證。
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 角色名稱。
OIDC Role ARN
建立 OIDC 身份供應商
使用 RAM 管理員登入RAM 控制台,進入整合管理 > SSO 管理頁面,並選擇角色 SSO。
在OIDC頁簽,單擊创建身份提供商。
在创建身份提供商頁面,設定身份供應商資訊。具體配置,請參見管理OIDC身份供應商。
擷取並儲存 OIDC 身份資訊(ARN 和用戶端識別碼)
進入整合管理 > SSO 管理頁面,單擊目標身份提供商名稱。
進入身份提供商詳情頁,可查看ARN和用戶端識別碼。
建立 OIDC 身份供應商的 RAM 角色並授權
使用 RAM 管理員登入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 2.0 流程從 OIDC IdP 擷取。例如當應用程式運行於已啟用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,不支援修改。
密碼編譯演算法
選擇用於加密 ClientKey 的密碼編譯演算法。可選 TripleDES-CBC 或 RC2-CBC,預設為 RC2-CBC。
默认权限策略
預設為
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。