阿里云SDK

更新时间:2025-02-21 02:58:23

阿里云SDK不仅支持通过调用OpenAPI执行创建实例、创建密钥等管控类操作,还支持执行加密解密、获取凭据值等业务类操作。其中管控类操作仅可通过共享网关访问,而业务类操作既支持通过共享网关也能通过专属网关访问。本文介绍业务如何通过阿里云SDK接入KMS。

接入流程简述

image

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

以下表格仅对比在业务类操作中网关之间的差异。

差异点

共享网关

专属网关

差异点

共享网关

专属网关

网络差异

公网或VPC网络。

使用前需要开启公网访问开关。具体操作,请参见通过公网访问KMS实例中的密钥

VPC网络。

性能差异

以加解密性能为例,通过共享网关访问KMSQPS1000。

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

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

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

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

  • KMS实例CA证书:需要配置。但仅阿里云SDK(2.0)支持,阿里云SDK(1.0)不支持,阿里云SDK(1.0)需要将运行时参数HTTPSInsecure设置为true,即client.SetHTTPSInsecure(true)

API差异

支持所有密码运算OpenAPI。具体API列表,请参见本文的业务类-密码运算

专属网关不支持ReEncrypt,其他支持的API和公网访问相同。具体API列表,请参见本文的业务类-密码运算

身份认证和鉴权差异

  • 使用STS Token认证并获取凭据的过程中,仅对GetSecretValue操作进行鉴权,不对Decrypt操作进行鉴权。其他认证方式对两种操作均鉴权。

  • 支持通过acs:SourceVpc、acs:VpcSourceIp条件键进行网络访问控制。

  • 获取凭据的过程中,对GetSecretValue操作、Decrypt操作均进行鉴权。

  • 不支持通过acs:SourceVpc、acs:VpcSourceIp条件键进行网络访问控制。您有网络访问控制的需求时,请联系阿里云技术支持。

  • 设置密钥策略、凭据策略后生效时长最长为5分钟。

审计差异

通过操作审计(ActionTrail),审计操作日志。

通过日志服务 SLS(Simple Log Service),审计操作日志。

支持的OpenAPI

您可以通过共享网关执行管控类操作和业务类操作,通过专属网关执行业务类操作。具体的 API 列表,请查看以下内容。

管控类

服务管理

API

描述

DescribeRegions

查询当前阿里云账号的可用地域列表。

OpenKmsService

为当前阿里云账号开通密钥管理服务。

DescribeAccountKmsStatus

查询当前阿里云账号的密钥管理服务状态。

实例管理

API

描述

ConnectKmsInstance

启用一个KMS实例。

GetKmsInstance

查询一个KMS实例的详情。

ListKmsInstances

查询KMS实例列表。

UpdateKmsInstanceBindVpc

更新KMS实例配置的VPC。

密钥管理

API

描述

CreateKey

创建密钥。用户可以选择由KMS生成密钥材料,也可以选择自己上传密钥材料(即BYOK方式)。

GetParametersForImport

用于在创建外部密钥(BYOK)时,获取将密钥材料导入密钥时所需的参数。

ImportKeyMaterial

用于在创建外部密钥(BYOK)时,将密钥材料导入密钥。

EnableKey

修改密钥的状态为启用。

DisableKey

修改密钥的状态为禁用。

DescribeKey

查询指定密钥的信息。

ListKeys

查询阿里云账号在调用地域的所有密钥。

UpdateKeyDescription

更新密钥的描述信息。

CreateAlias

创建一个别名,并且将别名与一个密钥绑定。

UpdateAlias

更新已存在的别名所代表的密钥ID。

DeleteAlias

删除别名。

ListAliases

查询阿里云账号在调用地域的所有别名。

ListAliasesByKeyId

查询与指定密钥绑定的别名。

SetDeletionProtection

为密钥开启或关闭删除保护。

ScheduleKeyDeletion

计划删除密钥。将密钥的状态设置为待删除状态,处于待删除状态的密钥,会在计划日期到期后删除。

CancelKeyDeletion

取消计划删除。处于待删除状态的密钥,在计划的日期到期之前,可以取消删除的计划,重新设置密钥状态为启用。

DeleteKeyMaterial

删除密钥材料。

重要

仅支持删除默认密钥(主密钥)中的外部密钥材料。

CreateKeyVersion

为密钥创建新的密钥版本。仅软件密钥管理实例中的对称密钥支持。

说明

如果您的密钥不是在KMS实例中创建的密钥,则该操作仅非对称密钥支持。

DescribeKeyVersion

查询指定密钥版本信息。

ListKeyVersions

查询密钥的所有密钥版本。

UpdateRotationPolicy

更新密钥的轮转策略。如果配置密钥自动轮转,KMS将周期性自动生成新的密钥版本。

凭据管理

API

描述

CreateSecret

创建凭据,并存入凭据的初始版本。

ListSecrets

查询当前阿里云账号在调用地域的所有凭据。

DescribeSecret

获取凭据的元数据信息。

UpdateSecret

更新凭据的元数据。

PutSecretValue

为凭据存入一个新版本的凭据值。

说明

仅通用凭据支持。

UpdateSecretVersionStage

更新凭据的版本状态。

说明

仅通用凭据支持。

DeleteSecret

计划删除或直接删除凭据。

RestoreSecret

恢复计划删除中的凭据。

ListSecretVersionIds

查询凭据的所有版本信息。

GetRandomPassword

获得一个随机密码串。

RotateSecret

手动轮转凭据。

UpdateSecretRotationPolicy

更新凭据轮转策略。

标签管理

API

描述

TagResource

为单个密钥或者单个凭据绑定标签。

UntagResource

删除单个密钥或者单个凭据的指定标签。

ListResourceTags

查询单个密钥的所有标签。

TagResources

批量为密钥或凭据绑定标签。

UntagResources

批量删除密钥或者凭据的指定标签。

ListTagResources

批量查询密钥或凭据的所有标签或指定标签。

应用管理

API

描述

CreateNetworkRule

创建一条网络控制规则,设置允许访问KMS的私网IP或私网网段。

DeleteNetworkRule

删除一条网络控制规则。

DescribeNetworkRule

查询一个网络控制规则的详情。

ListNetworkRules

查询网络控制规则列表。

UpdateNetworkRule

更新一个网络控制规则。

CreatePolicy

创建一个权限策略,设置允许应用访问的密钥和凭据。

DeletePolicy

删除一个权限策略。

DescribePolicy

查询一个权限策略的详情。

UpdatePolicy

更新一个权限策略。

ListPolicies

查询权限策略列表。

CreateApplicationAccessPoint

创建一个应用接入点。

DeleteApplicationAccessPoint

删除一个应用接入点。

DescribeApplicationAccessPoint

查询一个应用接入点的详情。

ListApplicationAccessPoints

查询应用接入点列表。

UpdateApplicationAccessPoint

更新一个应用接入点信息。

CreateClientKey

创建一个应用身份凭证(ClientKey)。

DeleteClientKey

删除一个应用身份凭证(ClientKey)。

ListClientKeys

查询应用身份凭证(ClientKey)列表。

GetClientKey

获取一个应用身份凭证(ClientKey)信息。

业务类-密码运算

API列表

描述

共享网关

专属网关

Encrypt

使用对称密钥将明文加密为密文。

GenerateDataKey

生成一个随机的数据密钥,用于本地数据加密。

GenerateDataKeyWithoutPlaintext

生成一个随机的数据密钥,用于本地数据加密,且不返回数据密钥明文。

ExportDataKey

使用传入的公钥加密导出数据密钥。

GenerateAndExportDataKey

随机生成一个数据密钥,通过您指定的KMS密钥和公钥加密后,返回使用KMS密钥加密后的数据密钥密文,以及使用公钥加密后的数据密钥密文。

Decrypt

解密密文。

ReEncrypt

对密文进行转加密。即先将密文解密,然后将解密得到的数据或者数据密钥使用新的主密钥再次进行加密,返回加密结果。

×

AsymmetricSign

使用非对称密钥进行签名。

AsymmetricVerify

使用非对称密钥进行验签。

AsymmetricDecrypt

使用非对称密钥进行解密。

AsymmetricEncrypt

使用非对称密钥进行加密。

GetPublicKey

获取非对称密钥的公钥。

业务类-获取凭据值

API列表

描述

共享网关

专属网关

GetSecretValue

获取凭据值。

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通过共享网关和专属网关访问OpenAPI时认证方式相同,支持AK、STS Token、RamRoleArn、ECS实例RAM角色等基于RAM的身份认证方式。详细内容,请参见管理访问凭据

AccessKey
STS Token
RamRoleArn
ECS RAM角色

阿里云账号默认有所有资源的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服务为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 - 获取扮演角色的临时身份凭证

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

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

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

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

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

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

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

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

    说明

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

    image

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

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

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

    • 可信实体类型:选择阿里云服务

    • 角色类型:选择普通服务角色

    • 受信服务:选择云服务器

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

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

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

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

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

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

支持的开发语言

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

支持的语言

V2.0 SDK(推荐)

V1.0 SDK(不推荐)

支持的语言

V2.0 SDK(推荐)

V1.0 SDK(不推荐)

Java

下载地址:

参考文档:集成SDK

下载地址:aliyun-java-sdk-kms

参考文档:开始使用

Python

下载地址:alibabacloud_kms20160120

参考文档:集成SDK

下载地址:aliyun-python-sdk-kms

参考文档:集成SDK

C++

下载地址:kms-20160120

参考文档:无

下载地址:aliyun-openapi-cpp-sdk/kms

参考文档:无

PHP

下载地址:alibabacloud/kms-20160120

参考文档:快速开始

下载地址:alibabacloud/kms

参考文档:开始使用

.NET(C#)

下载地址:AlibabaCloud.SDK.Kms20160120

参考文档:快速开始

下载地址:aliyun-net-sdk-kms

参考文档:开始使用

Go

下载地址:kms-20160120

参考文档:集成SDK

下载地址:alibaba-cloud-sdk-go

参考文档:开始使用

TypeScript

下载地址:kms20160120

参考文档:无

未提供

Swift

下载地址:kms-20160120

参考文档:无

未提供

  • 本页导读 (1)
  • 接入流程简述
  • 共享网关和专属网关的差异
  • 支持的OpenAPI
  • Endpoint
  • 身份认证与授权
  • 支持的开发语言
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等