SDK使用概述

更新时间:
复制为 MD 格式

KMS提供阿里云SDK、凭据SDK和实例SDK(不推荐)三类SDK,本文介绍其接入流程、认证鉴权、支持的API、支持访问网关类型等信息,用户可根据业务需求选择适合的SDK。

SDK 接入流程图

image

阿里云SDK

阿里云SDK是封装好的用于调用云产品OpenAPI的程序依赖包,方便开发者快速构建与阿里云相关的应用程序,不仅支持凭据和密钥的管控类API还支持业务类API。支持Java、Python、C++、PHP、.NET(仅C#)、Go、TypeScript、Swift多种语言。更多关于阿里云SDK信息,请参见阿里云SDK

image

支持的API

阿里云SDK支持调用OpenAPI执行KMS管控类操作业务类操作。更多关于API支持情况可参见阿里云 SDK支持的OpenAPI

  • 管控类操作:包含默认密钥、KMS实例相关的管控类操作,例如创建密钥、创建凭据、创建KMS实例、修改密钥标签等。

  • 业务类操作:

    • 密码运算:对称加解密、非对称加解密、信封加密、生成数据密钥、数字签名、验证签名等与密码学相关的操作。

    • 获取凭据值:获取KMS实例中凭据的凭据值。

重要

在正式环境中使用阿里云SDK获取凭据值时,请您做好错误重试、凭据缓存等业务逻辑,避免网络抖动导致获取凭据值失败,具体操作可参考见使用指数退避方法对请求错误进行重试

支持的网关类型

阿里云SDK支持通过共享网关或专属网关来访问OpenAPI和实例API。其中管控类API操作仅可通过共享网关访问,而业务类API既支持通过共享网关也能通过专属网关访问。

网关类型

推荐使用场景

支持的API

共享网关

  • 业务需要通过API操作包括实例、密钥、凭据相关的管控操作,例如创建密钥、创建凭据、创建KMS实例等操作。

  • 业务部署在非阿里云VPC上。

  • 非正式环境访问KMS,例如:内部测试环境。

全部OpenAPI

专属网关

  • 业务部署在阿里云VPC。

  • 业务类操作例如加解密、获取凭据等操作频繁,对性能要求较高。

  • 业务数据有较高的安全性要求。

OpenAPI-密码运算、OpenAPI-获取凭据值

凭据SDK

凭据SDK是基于KMS OpenAPIKMS实例API的自定义封装,实现在应用中缓存和刷新凭据的功能,业务稳定性更高且更易于开发者在业务应用中集成。仅支持获取凭据,包含凭据客户端、凭据JDBC客户端、RAM凭据插件三种SDK,支持Java(Java 8及以上版本)、Python、Go多种语言。更多关于凭据SDK信息,请参见凭据SDK

image

凭据SDK类型

SDK

功能说明

凭据客户端

  • 支持所有凭据类型

  • 在应用中用一行代码快速获取凭据。

  • 凭据客户端还封装了在应用中缓存和刷新凭据的功能,业务稳定性更高。

凭据JDBC客户端

  • 开发语言必须为Java(Java 8及以上版本)。

  • 仅支持RDS凭据和凭据值满足{"AccountName":"<数据库账号用户名>","AccountPassword":"<数据库账号密码>"}格式的通用凭据

  • 当您通过JDBC、数据库连接池(包含c3p0DBCP)以及数据库开源框架的方式连接数据库时,可以使用凭据JDBC客户端完成数据库连接身份鉴别,并支持自定义凭据刷新频率。

RAM凭据插件

  • 仅支持RAM凭据

  • 业务应用需要使用该插件支持的SDK版本,详情参见支持的阿里云SDK

支持的API

凭据SDK仅支持通过OpenAPI和实例API(不推荐)执行获取凭据值的业务类操作,凭据管控类操作请使用阿里云SDK。

支持的网关类型

凭据SDK通过共享网关或专属网关来获取凭据值。

网关类型

推荐使用场景

共享网关

  • 获取凭据操作性能要求不高

  • 业务部署在非阿里云VPC上。

  • 非正式环境访问KMS,例如:内部测试环境。

专属网关

  • 业务部署在阿里云VPC。

  • 获取凭据等操作频繁。

  • 业务数据有较高的安全性要求。

KMS实例SDK(不推荐)

应用程序通过KMS实例SDK访问专属网关Endpoint,完成密码运算操作、获取凭据值。支持Java(Java 8及以上版本)、PHP、Go、Python、.NET(仅C#)语言。详细内容,请参见KMS实例SDK

image

网关类型对应的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,并根据需求进行最小化授权。

  1. 登录RAM控制台,在页用户面,单击目标RAM用户名称。

  2. 认证管理页签下的AccessKey区域,单击创建AccessKey,并按照指引完成创建。

  3. 授予RAM用户访问KMS的权限。

    • 方式一:设置基于身份的策略

      单击RAM用户操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略

    • 方式二:设置基于资源的策略

      KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略凭据策略

ECS RAM角色

ECS RAM角色是指为ECS实例授予的RAM角色,该RAM角色是一个受信服务为云服务器的普通服务角色。使用实例RAM角色可以实现在ECS实例内部无需配置AccessKey即可获取临时访问凭证(STS Token),从而调用KMSOpenAPI。

具体操作,请参见实例RAM角色

  1. 登录RAM控制台,创建可信实体为阿里云服务的RAM角色。

    • 信任主体类型:选择云服务器

    • 信任主体名称:选择云服务器ECS

  2. 授予RAM角色访问KMS的权限。

    • 方式一:设置基于身份的策略

      单击RAM角色操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略

    • 方式二:设置基于资源的策略

      KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略凭据策略

  3. 登录ECS管理控制台,将RAM角色授予ECS实例。image

AK+RamRoleArn

RAM用户或云产品可以通过扮演角色的方式获取临时权限(STS Token),而不是直接使用长期密钥,降低了密钥泄露的风险。例如,在临时的数据处理任务中,RAM用户或云产品临时扮演一个具有特定RamRoleArn的角色,完成任务后角色权限被收回,减少泄露风险。

  1. 创建用户AK

    1. 登录RAM控制台,在身份管理 > 用户页面,单击目标RAM用户名称。

    2. RAM用户分配系统策略 AliyunSTSAssumeRoleAccess或包含权限操作sts:AssumeRole的自定义策略。

    3. 认证管理页签下的AccessKey区域,单击创建AccessKey,并按照指引完成创建。

  2. 创建RAM角色并授权:

    1. 身份管理 > 角色页面,单击创建角色具体操作,请参见创建RAM角色

    2. 授予RAM角色访问KMS的权限。

      • 方式一:设置基于身份的策略

        单击RAM角色操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考

        说明

        同时支持自定义权限策略,具体操作请参见创建自定义权限策略

      • 方式二:设置基于资源的策略

        KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略凭据策略

  3. 获取目标RAM角色的RamRoleArn。具体操作,请参见查看RAM角色

    1. 身份管理 > 角色页面,单击目标角色名称。

    2. 进入角色详情页,在ARN区域可获取RamRoleArn信息。

      说明

      RamRoleArnRAM角色的ARN信息,即需要扮演的角色ID。格式为acs:ram::$accountID:role/$roleName。$accountID为阿里云账号ID。$roleNameRAM角色名称。

STS Token

通过STS服务为RAM用户或RAM角色颁发一个临时访问凭证(STS Token),可以在限定的有效期内,以符合策略规定的权限访问KMS,超过有效期后,该凭证自动失效。

  1. 登录RAM控制台,创建RAM用户或RAM角色。具体操作,请参见创建RAM用户创建RAM角色

  2. RAM用户或RAM角色授予AliyunSTSAssumeRoleAccess权限。具体操作,请参见RAM用户授权管理RAM角色的权限

  3. 授予RAM用户或RAM角色访问KMS的权限。

    • 方式一:设置基于身份的策略

      单击RAM角色或用户操作列的新增授权,直接绑定KMS内置系统权限策略。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略

    • 方式二:设置基于资源的策略

      KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略凭据策略

  4. 使用RAM用户或RAM角色调用STS服务的AssumeRole接口获取STS临时访问凭证。具体操作,请参见AssumeRole - 获取扮演角色的临时身份凭证

OIDC Role ARN

  1. 创建OIDC身份提供商

    1. 使用RAM管理员登录RAM控制台,进入集成管理 > SSO管理页面,并选择角色SSO。

    2. OIDC页签,单击创建身份提供商

    3. 创建身份提供商页面,设置身份提供商信息。具体配置,请参见管理OIDC身份提供商

  2. 获取并保存OIDC身份信息(ARN和客户端ID)

    1. 进入集成管理 > SSO管理页面,单击目标身份提供商名称。

    2. 进入身份提供商详情页,可查看ARN客户端 ID。

  3. 创建OIDC身份提供商的RAM角色并授权

    1. 使用RAM管理员登录RAM控制台,在身份管理 > 角色页面。

    2. 单击创建角色,在创建页面右上角,单击切换编辑器

    3. 在编辑器中指定具体的OIDC身份提供商。选择可视化编辑模式,并参考如下说明,完成配置。

      说明

      更多模式,请参见创建OIDC身份提供商的RAM角色

      1. 主体中选择身份提供商后,单击下方编辑。

      2. 添加主体弹窗中,参考如下说明,完成配置。

        • 身份提供商类型:选择OIDC。

        • 身份提供商:选择之前创建的OIDC身份提供商。

  4. 授予OIDC RAM角色访问KMS的权限

    • 方式一:设置基于身份的策略

      返回身份管理角色列表页,单击目标OIDC 角色操作列的新增授权,直接绑定KMS内置系统权限策略到RAM角色。KMS内置系统权限策略,请参见密钥管理服务系统权限策略参考

      说明

      同时支持自定义权限策略,具体操作请参见创建自定义权限策略

    • 方式二:设置基于资源的策略

      KMS支持基于资源的策略,即为单个密钥和凭据设置访问权限,用于控制哪些阿里云账号、RAM用户、RAM角色有权限来管理或使用KMS密钥、凭据。详细介绍,请参见密钥策略凭据策略

  5. 获取目标 Role ARN

    1. 身份管理 > 角色页面,单击目标角色名称。

    2. 进入角色详情页,在ARN区域可获取OIDC Role ARN信息。

      说明

      Role ARNRAM角色的ARN信息,即需要扮演的角色ID。格式为acs:ram::$accountID:role/$roleName。$accountID为阿里云账号ID。$roleNameRAM角色名称。

  6. 签发并保存OIDC令牌(OIDC Token)文件

    阿里云不支持在控制台上直接通过OIDC登录,但可以通过编程方式完成OIDC SSO流程。获取OIDC令牌涉及一个OAuth流程,常用的方法包括标准的OAuth 2.0流程,从OIDC IdP,获取OIDC Token。例如当应用程序运行于已启用RRSA功能的ACK集群中时,集群将自动为该应用Pod创建和挂载相应的服务账户OIDC Token文件。

AAP鉴权(不推荐)

共享网关配置

  1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击应用接入 > 多云接入(原接入点)

  2. 创建网络规则(非必须)。

    说明

    如果您不需要基于来源IP限制访问,则不需要设置网络规则。但为了更高的安全性,通常建议您合理设置。

    1. 单击网络规则页签,然后单击创建网络规则

    2. 创建网络规则面板,网络类型选择Public,填写允许访问的源IP地址后,单击确定

  3. 创建权限策略。

    1. 单击权限策略,然后单击创建权限策略

    2. 创建权限策略面板,按照下方提示完成共享网关配置后,单击确定

      1. 作用域KMS共享网关

      2. 允许访问的资源:勾选你需要访问的凭据

      3. 网络控制规则(非必须):勾选步骤二创建网络规则。

  4. 创建应用接入点AAP。

    1. 单击应用接入页签,然后单击创建应用接入点,。

    2. 创建应用接入点面板,创建模式选择标准创建,然后按照下方提示完成各项配置。

      配置项

      说明

      认证方式

      选择ClientKey

      Client Key加密口令

      设置8~64位包含数字、英文大小写、特殊字符~!@#$%^&*?_-的字符串

      有效期

      重要

      推荐设置为1年,以降低ClientKey被泄露的风险。请务必在到期前更换,以免无法正常访问KMS。具体操作,请参见更换ClientKey

      权限策略

      选择您步骤三创建的权限策略。

    3. 单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:

      • 应用身份凭证内容ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt

专属网关配置

ClientKey支持快速创建和标准创建两种方式。关于ClientKey的详细介绍,请参见应用接入点概述创建应用接入点

  • 方式一:快速创建

    便捷高效适合于快速测试和开发场景,该方式创建的访问凭证可以访问KMS实例的全部资源。

    1. 登录密钥管理服务控制台,在顶部菜单栏选择地域后,在左侧导航栏单击应用接入 > 多云接入(原接入点)

    2. 应用接入页签,单击创建应用接入点,在创建应用接入点面板完成各项配置。

      配置项

      说明

      创建模式

      选择快速创建

      作用域(KMS实例)

      选择应用要访问的KMS实例。

      应用接入点名称

      自定义应用接入点的名称。

      认证方式

      默认为ClientKey,不支持修改。

      默认权限策略

      默认为key/*secret/*,不支持修改。即应用可以访问指定KMS实例中的所有密钥和凭据。

    3. 单击确定,浏览器会自动下载ClientKey。ClientKey包含以下内容:

      • 应用身份凭证内容ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt

  • 方式二:标准创建

    若希望对资源设置更精细化的访问权限,建议使用标准创建。

    1. 请参考创建应用接入点中的标准创建方式,创建用于访问专属网关的ClientKey。关键配置说明如下:

      1. 配置网络规则时,网络类型选择Private

      2. 配置权限规则作用域时,请选择对应的KMS实例ID

    2. 创建完成后,浏览器会自动下载ClientKey。ClientKey包含以下内容:

      • 应用身份凭证内容ClientKeyContent):文件名默认为clientKey_****.json

      • 凭证口令(ClientKeyPassword):文件名默认为clientKey_****_Password.txt