凭据SDK

更新时间: 2025-03-26 11:25:28

凭据SDK是基于KMS OpenAPI和KMS实例API的自定义封装,封装了在应用中缓存和刷新凭据的功能,业务稳定性更高且更易于开发者在业务应用中集成。本文介绍业务如何接入凭据SDK。

接入概览

凭据SDK仅支持业务类操作中的获取凭据值,既支持共享网关也支持专属网关访问。

image

共享网关和专属网关的差异

凭据SDK支持通过共享网关和专属网关调用OpenAPI和实例API来获取凭据。共享网关为KMS服务的全局网络,可通过公网或VPC网访问,专属网关为特定KMS实例的网络,仅支持私网访问

差异点

共享网关

专属网关

推荐使用场景

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

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

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

  • 业务部署在阿里云VPC。

  • 获取凭据等操作频繁。

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

网络差异

公网或VPC网络。

KMS私网网络。

性能差异

以加解密性能为例,通过共享网关访问KMS时QPS为1000。

以您购买的实例的计算性能规格为准,例如1000、2000等。

初始化客户端时的配置差异

  • Endpoint:专属网关Endpoint,格式为<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com

    例如kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com

  • KMS实例CA证书:需要配置。

API差异

OpenAPI-GetSecretValue

实例API-GetSecretValue

身份认证和鉴权差异

  • RAM鉴权:RamRoleArn、ECS RAM角色、STS Token、AccessKey

  • AAP鉴权(不推荐):ClientKey(共享网关配置)

AAP鉴权:ClientKey(专属网关配置)

凭据SDK类型

凭据SDK提供凭据客户端、凭据JDBC客户端、RAM凭据插件三种SDK,通过共享网关或专属网关调用OpenAPI-GetSecretValue或实例API-GetSecretValue(不推荐)获取KMS凭据值。每种SDK支持的鉴权方式和API类型存在差异,详情可参考下表:

SDK类型

使用说明

网关及鉴权方式说明

凭据客户端

  • 支持所有凭据类型

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

共享网关:

  • RAM鉴权:RamRoleArn、ECS RAM角色、STS Token、AccessKey

  • AAP鉴权(不推荐):ClientKey(共享网关配置)

属网关(不推荐):

AAP鉴权:ClientKey(专属网关配置)

凭据JDBC客户端

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

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

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

共享网关:

  • RAM鉴权:RamRoleArn、ECS RAM角色、STS Token、AccessKey

  • AAP鉴权(不推荐):ClientKey(共享网关配置)

专属网关(不推荐):

AAP鉴权:ClientKey(专属网关配置)

RAM凭据插件

  • 仅支持RAM凭据

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

共享网关:

  • RAM鉴权:ECS RAM角色

  • AAP鉴权(不推荐):ClientKey(共享网关配置)

专属网关(不推荐):

AAP鉴权:ClientKey(专属网关配置)

支持的API

API列表

描述

共享网关

专属网关

GetSecretValue(OpenAPI)

获取凭据值

对

错

GetSecretValue(实例API)

获取凭据值

错

对

Endpoint

共享网关Endpoint(又称KMS服务Endpoint)

  • 中国地区

    地域

    地域ID

    公网接入地址

    VPC接入地址

    华东1(杭州)

    cn-hangzhou

    kms.cn-hangzhou.aliyuncs.com

    kms-vpc.cn-hangzhou.aliyuncs.com

    华东2(上海)

    cn-shanghai

    kms.cn-shanghai.aliyuncs.com

    kms-vpc.cn-shanghai.aliyuncs.com

    华南1(深圳)

    cn-shenzhen

    kms.cn-shenzhen.aliyuncs.com

    kms-vpc.cn-shenzhen.aliyuncs.com

    华南2(河源)

    cn-heyuan

    kms.cn-heyuan.aliyuncs.com

    kms-vpc.cn-heyuan.aliyuncs.com

    华南3(广州)

    cn-guangzhou

    kms.cn-guangzhou.aliyuncs.com

    kms-vpc.cn-guangzhou.aliyuncs.com

    华北1(青岛)

    cn-qingdao

    kms.cn-qingdao.aliyuncs.com

    kms-vpc.cn-qingdao.aliyuncs.com

    华北2(北京)

    cn-beijing

    kms.cn-beijing.aliyuncs.com

    kms-vpc.cn-beijing.aliyuncs.com

    华北3(张家口)

    cn-zhangjiakou

    kms.cn-zhangjiakou.aliyuncs.com

    kms-vpc.cn-zhangjiakou.aliyuncs.com

    华北5(呼和浩特)

    cn-huhehaote

    kms.cn-huhehaote.aliyuncs.com

    kms-vpc.cn-huhehaote.aliyuncs.com

    华北6(乌兰察布)

    cn-wulanchabu

    kms.cn-wulanchabu.aliyuncs.com

    kms-vpc.cn-wulanchabu.aliyuncs.com

    西南1(成都)

    cn-chengdu

    kms.cn-chengdu.aliyuncs.com

    kms-vpc.cn-chengdu.aliyuncs.com

    中国香港

    cn-hongkong

    kms.cn-hongkong.aliyuncs.com

    kms-vpc.cn-hongkong.aliyuncs.com

  • 其他国家和地区

    地域

    地域ID

    公网接入地址

    VPC接入地址

    新加坡

    ap-southeast-1

    kms.ap-southeast-1.aliyuncs.com

    kms-vpc.ap-southeast-1.aliyuncs.com

    马来西亚(吉隆坡)

    ap-southeast-3

    kms.ap-southeast-3.aliyuncs.com

    kms-vpc.ap-southeast-3.aliyuncs.com

    印度尼西亚(雅加达)

    ap-southeast-5

    kms.ap-southeast-5.aliyuncs.com

    kms-vpc.ap-southeast-5.aliyuncs.com

    菲律宾(马尼拉)

    重要

    该地域下仅有一个可用区,KMS在该地域不承诺SLA。

    ap-southeast-6

    kms.ap-southeast-6.aliyuncs.com

    kms-vpc.ap-southeast-6.aliyuncs.com

    泰国(曼谷)

    重要

    该地域下仅有一个可用区,KMS在该地域不承诺SLA。

    ap-southeast-7

    kms.ap-southeast-7.aliyuncs.com

    kms-vpc.ap-southeast-7.aliyuncs.com

    日本(东京)

    ap-northeast-1

    kms.ap-northeast-1.aliyuncs.com

    kms-vpc.ap-northeast-1.aliyuncs.com

    德国(法兰克福)

    eu-central-1

    kms.eu-central-1.aliyuncs.com

    kms-vpc.eu-central-1.aliyuncs.com

    英国(伦敦)

    eu-west-1

    kms.eu-west-1.aliyuncs.com

    kms-vpc.eu-west-1.aliyuncs.com

    美国(硅谷)

    us-west-1

    kms.us-west-1.aliyuncs.com

    kms-vpc.us-west-1.aliyuncs.com

    美国(弗吉尼亚)

    us-east-1

    kms.us-east-1.aliyuncs.com

    kms-vpc.us-east-1.aliyuncs.com

    阿联酋(迪拜)

    me-east-1

    kms.me-east-1.aliyuncs.com

    kms-vpc.me-east-1.aliyuncs.com

专属网关Endpoint(又称KMS实例Endpoint)

格式为<YOUR_KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com,例如kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com

说明

请将<YOUR_KMS_INSTANCE_ID>替换为您实际使用的KMS实例ID。

身份认证与授权

凭据SDK支持RAM鉴权和AAP鉴权(不推荐)两种鉴权方式。RAM鉴权包含RAM角色、ECS RAM角色、STS Token、AccessKey,AAP鉴权针对不同的网关提供专属网关配置和共享网关配置两种模式

重要
  • RAM鉴权只支持访问共享网关。

  • 专属网关只支持AAP鉴权(专属网关配置)。

认证方式

访问凭据类型

网关类型

RAM鉴权

RamRoleArn、ECS RAM角色、STS Token、AccessKey

说明

RAM凭据插件仅支持ECS RAM角色。

共享网关

AAP鉴权(不推荐)

ClientKey(共享网关配置)、ClientKey(专属网关配置)

共享网关、专属网关

RAM鉴权

AccessKey

阿里云账号默认有所有资源的Administrator权限且不可修改,其AccessKey泄露会危及资源安全,因此强烈建议不要为主账号创建AccessKey,请创建专用于API访问的RAM用户并创建对应的AccessKey,并完成最小化授权。具体操作,请参见创建AccessKey

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

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

    image

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

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

      KMS内置了系统权限策略,可以直接绑定到RAM用户,详细介绍,请参见密钥管理服务系统权限策略参考。您也可以自定义权限策略。image

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

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

STS Token

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

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

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

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

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

      KMS内置了系统权限策略,可以直接绑定到RAM用户或RAM角色,详细介绍,请参见密钥管理服务系统权限策略参考。您也可以自定义权限策略。image

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

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

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

RamRoleArn

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

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

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

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

      KMS内置了系统权限策略,可以直接绑定到RAM角色,详细介绍,请参见密钥管理服务系统权限策略参考。您也可以自定义权限策略。image

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

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

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

    说明

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

    image

ECS RAM角色

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

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

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

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

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

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

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

      KMS内置了系统权限策略,可以直接绑定到RAM角色,详细介绍,请参见密钥管理服务系统权限策略参考。您也可以自定义权限策略。image

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

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

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

AAP鉴权(不推荐

共享网关配置

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

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

    说明

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

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

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

    image

  3. 创建权限策略。

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

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

      1. 作用域KMS共享网关

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

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

    image

  4. 创建应用接入点AAP。

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

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

      配置项

      说明

      认证方式

      选择ClientKey

      Client Key加密口令

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

      有效期

      重要

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

      权限策略

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

    3. 单击确定,浏览器会自动下载ClientKey。

      ClientKey包含应用身份凭证内容(ClientKeyContent)凭证口令(ClientKeyPassword)应用身份凭证内容(ClientKeyContent)文件名默认为clientKey_****.json凭证口令(ClientKeyPassword)文件名默认为clientKey_****_Password.txt

专属网关配置

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

  2. 应用接入页签,单击创建应用接入点

  3. 创建应用接入点面板,创建模式选择快速创建后,作用域(KMS实例)选择应用要访问的KMS实例。

  4. 单击确定,浏览器会自动下载ClientKey。

    ClientKey包含应用身份凭证内容(ClientKeyContent)凭证口令(ClientKeyPassword)应用身份凭证内容(ClientKeyContent)文件名默认为clientKey_****.json凭证口令(ClientKeyPassword)文件名默认为clientKey_****_Password.txt

更多关于AAP鉴权信息,请参考创建应用接入点

支持的开发语言

下表列举了支持的语言类型以及各语言SDK的参考文档。

凭据SDK

支持的语言

凭据客户端

Java(Java 8及以上版本)、Python、Go

凭据JDBC客户端

Java(Java 8及以上版本)

RAM凭据插件

Java(Java 8及以上版本)、Python、Go

上一篇: 获取凭据值示例 下一篇: 凭据客户端
阿里云首页 密钥管理服务 相关技术圈