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内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
ECS RAM角色
ECS RAM角色是指为ECS实例授予的RAM角色,该RAM角色是一个受信服务为云服务器的普通服务角色。使用实例RAM角色可以实现在ECS实例内部无需配置AccessKey即可获取临时访问凭证(STS Token),从而调用KMS的OpenAPI。
具体操作,请参见实例RAM角色。
登录RAM控制台,创建可信实体为阿里云服务的RAM角色。
信任主体类型:选择云服务器。
信任主体名称:选择云服务器ECS。
授予RAM角色访问KMS的权限。
方式一:设置基于身份的策略
单击RAM角色操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
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内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
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内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略、凭据策略。
使用RAM用户或RAM角色调用STS服务的AssumeRole接口获取STS临时访问凭证。具体操作,请参见AssumeRole - 获取扮演角色的临时身份凭证。
OIDC Role ARN
创建OIDC身份提供商
使用RAM管理员登录RAM控制台,进入集成管理 > SSO管理页面,并选择角色SSO。
在OIDC页签,单击创建身份提供商。
在创建身份提供商页面,设置身份提供商信息。具体配置,请参见管理OIDC身份提供商。
获取并保存OIDC身份信息(ARN和客户端ID)
进入集成管理 > SSO管理页面,单击目标身份提供商名称。
进入身份提供商详情页,可查看ARN和客户端 ID。
创建OIDC身份提供商的RAM角色并授权
使用RAM管理员登录RAM控制台,在页面。
单击创建角色,在创建页面右上角,单击切换编辑器。
在编辑器中指定具体的OIDC身份提供商。选择可视化编辑模式,并参考如下说明,完成配置。
说明更多模式,请参见创建OIDC身份提供商的RAM角色。
在主体中选择身份提供商后,单击下方编辑。
在添加主体弹窗中,参考如下说明,完成配置。
身份提供商类型:选择OIDC。
身份提供商:选择之前创建的OIDC身份提供商。
授予OIDC RAM角色访问KMS的权限
方式一:设置基于身份的策略
返回身份管理角色列表页,单击目标OIDC 角色操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考。
说明同时支持自定义权限策略,具体操作请参见创建自定义权限策略。
方式二:设置基于资源的策略
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鉴权(不推荐)
共享网关配置
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
创建网络规则(非必须)。
说明如果您不需要基于来源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实例的全部资源。
登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击。
在应用接入页签,单击创建应用接入点,在创建应用接入点面板完成各项配置。
配置项
说明
创建模式
选择快速创建。
作用域(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。