SDK介绍
凭据客户端基于KMS实例API,封装了凭据缓存、最佳实践和设计模式,更易于开发者在业务系统中集成。此外KMS还提供了KMS实例SDK和阿里云SDK,也可以用于获取凭据值。详细信息,请参见SDK参考。
说明 如果您需要对凭据进行管控类操作,仅支持使用阿里云SDK。
 凭据客户端具有以下功能特性:
通过共享网关获取凭据值
网络类型为公网或VPC网络。
步骤一:创建访问凭证
支持ECS实例RAM角色、RamRoleArn、STS Token、AccessKey等基于RAM的身份认证方式。详细内容,请参见管理访问凭据。
ECS实例RAM角色
ECS RAM角色是指为ECS实例授予的RAM角色,该RAM角色是一个受信服务为云服务器的普通服务角色。使用实例RAM角色可以实现在ECS实例内部无需配置AccessKey即可获取临时访问凭证(STS Token),从而调用KMS的OpenAPI。
具体操作,请参见实例RAM角色。
- 登录RAM控制台,创建可信实体为阿里云服务的RAM角色。 - 信任主体类型:选择云服务。 
- 信任主体名称:选择云服务器ECS。 
 
- 授予RAM角色访问KMS的权限。 
- 登录ECS管理控制台,将RAM角色授予ECS实例。 
 
RamRoleArn
RAM用户或云产品可以通过扮演角色的方式获取临时权限,而不是直接使用长期密钥,降低了密钥泄露的风险。例如,在临时的数据处理任务中,RAM用户或云产品临时扮演一个具有特定RamRoleArn的角色,完成任务后角色权限被收回,减少泄露风险。
- 登录RAM控制台,创建RAM角色。具体操作,请参见创建RAM角色。 
 
- 授予RAM角色访问KMS的权限。 
- 获取目标RAM角色的RamRoleArn。具体操作,请参见查看RAM角色。 
 - 说明 - RamRoleArn是RAM角色的ARN信息,即需要扮演的角色ID。格式为acs:ram::$accountID:role/$roleName。$accountID为阿里云账号ID。$roleName为RAM角色名称。 
 
 
 
AccessKey
以使用RAM用户的AccessKey为例。
阿里云账号默认有所有资源的Administrator权限且不可修改,其AccessKey泄露会危及资源安全,因此强烈建议不要为主账号创建AccessKey,请创建专用于API访问的RAM用户并创建对应的AccessKey,并完成最小化授权。具体操作,请参见创建AccessKey。
- 登录RAM控制台,在用户页面,单击目标RAM用户名称。 
- 在认证管理页签下的AccessKey区域,单击创建AccessKey,并按照指引完成创建。 
 
- 授予RAM用户访问KMS的权限。 
ClientKey(不推荐)
请参考创建应用接入点中的标准创建方式,创建用于访问共享网关的ClientKey。
步骤二:安装凭据客户端
Java
通过Maven的方式在项目中安装凭据客户端。
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client</artifactId>
    <version>1.4.x</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.x</version>
</dependency>
步骤三:初始化客户端并获取凭据值
Java
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量 - 不同操作系统的环境变量配置方法不同,具体操作,请参见在Linux、macOS和Windows系统配置环境变量。 - ECS实例RAM角色| 参数 | 参数值 |  | credentials_type | 固定取值ecs_ram_role。 |  | credentials_role_name | RAM角色名称。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - RamRoleArn| 参数 | 参数值 |  | credentials_type | 固定取值ram_role。 |  | credentials_role_session_name | RAM角色的名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - STS Token| 参数 | 参数值 |  | credentials_type | 固定取值sts。 |  | credentials_role_session_name | RAM角色名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - AccessKey| 参数 | 参数值 |  | credentials_type | 固定取值ak。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - ClientKey| 参数 | 参数值 |  | credentials_type | 固定取值client_key。 |  | client_key_password_from_env_variable | 表示从系统环境变量获取ClientKey的凭证口令(password)。取值为password的系统环境变量名称。 配置本参数时,您需要将password配置到系统环境变量中,变量名称由您自定义。 |  | client_key_password_from_file_path | 表示从文件中获取ClientKey的凭证口令(password)。取值为password的文件绝对路径或相对路径。 配置本参数时,您需要将password配置到文件中,文件名称由您自定义。 
 说明 client_key_password_from_env_variable与client_key_password_from_file_path为二选一。 |  | client_key_private_key_path | ClientKey文件的绝对路径或相对路径。 配置本参数时,您需要将ClientKey文件保存到合适位置,文件名称由您自定义。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 不同的认证方式,需要设置的配置文件内容不同。 - ECS实例RAM角色- # 访问凭据类型
credentials_type=ecs_ram_role
# ECS RAM Role名称
credentials_role_name=#credentials_role_name#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - RAMRoleArn- # 访问凭据类型
credentials_type=ram_role
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - STS Token- # 访问凭据类型
credentials_type=sts
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - AccessKey- # 访问凭据类型
credentials_type=ak
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - ClientKey- # 访问凭据类型
credentials_type=client_key
# 读取client key的解密密码:支持从环境变量或者文件读取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
# Client Key私钥文件路径
client_key_private_key_path=#your client key private key file path#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
public class CacheClientEnvironmentSample {
    public static void main(String[] args) {
        try {
            //构建凭据客户端
            SecretCacheClient client = SecretCacheClientBuilder.newClient();
            //使用构建好的客户端获取凭据信息
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
 
- 方式二:通过自定义配置文件初始化客户端- 需要注意配置文件名称和文件路径由您自行定义。 - 配置文件 - 不同的认证方式,需要设置的配置文件内容不同。 - ECS实例RAM角色- # 访问凭据类型
credentials_type=ecs_ram_role
# ECS RAM Role名称
credentials_role_name=#credentials_role_name#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - RAMRoleArn- # 访问凭据类型
credentials_type=ram_role
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - STS Token- # 访问凭据类型
credentials_type=sts
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - AccessKey- # 访问凭据类型
credentials_type=ak
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - ClientKey- # 访问凭据类型
credentials_type=client_key
# 读取client key的解密密码:支持从环境变量或者文件读取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
# Client Key私钥文件路径
client_key_private_key_path=#your client key private key file path#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 
- 获取凭据值示例代码如下,请将示例代码中的- #customConfigFileName#替换为您自定义的配置文件名称,- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
public class CacheClientCustomConfigFileSample {
    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard().withCustomConfigFile("#customConfigFileName#").build()).build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            System.out.println("CacheSecretException:" + e.getMessage());
        }
    }
}
 
- 方式三:通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
public class CacheClientSimpleParametersSample {
    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard().withCredentialsProvider(CredentialsProviderUtils
                            .withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))).withRegion("#regionId#").build()).build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
 
Python
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量- 不同操作系统的环境变量配置方法不同,具体操作,请参见在Linux、macOS和Windows系统配置环境变量。 - ECS实例RAM角色| 参数 | 参数值 |  | credentials_type | 固定取值ecs_ram_role。 |  | credentials_role_name | RAM角色名称。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - RamRoleArn| 参数 | 参数值 |  | credentials_type | 固定取值ram_role。 |  | credentials_role_session_name | RAM角色的名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - STS Token| 参数 | 参数值 |  | credentials_type | 固定取值sts。 |  | credentials_role_session_name | RAM角色名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - AccessKey| 参数 | 参数值 |  | credentials_type | 固定取值ak。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - ClientKey| 参数 | 参数值 |  | credentials_type | 固定取值client_key。 |  | client_key_password_from_env_variable | 表示从系统环境变量获取ClientKey的凭证口令(password)。取值为password的系统环境变量名称。 配置本参数时,您需要将password配置到系统环境变量中,变量名称由您自定义。 |  | client_key_password_from_file_path | 表示从文件中获取ClientKey的凭证口令(password)。取值为password的文件绝对路径或相对路径。 配置本参数时,您需要将password配置到文件中,文件名称由您自定义。 
 说明 client_key_password_from_env_variable与client_key_password_from_file_path为二选一。 |  | client_key_private_key_path | ClientKey文件的绝对路径或相对路径。 配置本参数时,您需要将ClientKey文件保存到合适位置,文件名称由您自定义。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 不同的认证方式,需要设置的配置文件内容不同。 - ECS实例RAM角色- # 访问凭据类型
credentials_type=ecs_ram_role
# ECS RAM Role名称
credentials_role_name=#credentials_role_name#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - RAMRoleArn- # 访问凭据类型
credentials_type=ram_role
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - STS Token- # 访问凭据类型
credentials_type=sts
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - AccessKey- # 访问凭据类型
credentials_type=ak
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - ClientKey- # 访问凭据类型
credentials_type=client_key
# 读取client key的解密密码:支持从环境变量或者文件读取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
# Client Key私钥文件路径
client_key_private_key_path=#your client key private key file path#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
if __name__ == '__main__':
    #构建凭据客户端
    secret_cache_client = SecretManagerCacheClientBuilder.new_client()
    #使用构建好的客户端获取凭据信息
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
 
- 方式二:通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - import os
from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
if __name__ == '__main__':
    secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
        .with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
        .with_region("#regionId#").build()) \
    .build();
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
 
Go
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量- 不同操作系统的环境变量配置方法不同,具体操作,请参见在Linux、macOS和Windows系统配置环境变量。 - ECS实例RAM角色| 参数 | 参数值 |  | credentials_type | 固定取值ecs_ram_role。 |  | credentials_role_name | RAM角色名称。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - RamRoleArn| 参数 | 参数值 |  | credentials_type | 固定取值ram_role。 |  | credentials_role_session_name | RAM角色的名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - STS Token| 参数 | 参数值 |  | credentials_type | 固定取值sts。 |  | credentials_role_session_name | RAM角色名称。 |  | credentials_role_arn | RAM角色的资源ARN。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - AccessKey| 参数 | 参数值 |  | credentials_type | 固定取值ak。 |  | credentials_access_key_id | AccessKey ID。 |  | credentials_access_secret | AccessKey Secret。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 - ClientKey| 参数 | 参数值 |  | credentials_type | 固定取值client_key。 |  | client_key_password_from_env_variable | 表示从系统环境变量获取ClientKey的凭证口令(password)。取值为password的系统环境变量名称。 配置本参数时,您需要将password配置到系统环境变量中,变量名称由您自定义。 |  | client_key_password_from_file_path | 表示从文件中获取ClientKey的凭证口令(password)。取值为password的文件绝对路径或相对路径。 配置本参数时,您需要将password配置到文件中,文件名称由您自定义。 
 说明 client_key_password_from_env_variable与client_key_password_from_file_path为二选一。 |  | client_key_private_key_path | ClientKey文件的绝对路径或相对路径。 配置本参数时,您需要将ClientKey文件保存到合适位置,文件名称由您自定义。 |  | cache_client_region_id | 格式为[{"regionId":"<your region id>"}],请将<your region id>替换为您真实的地域ID。 
 重要 Linux系统下,使用export命令设置环境变量时,请添加转义字符,即[{\"regionId\":\"<your region id>\"}]。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 不同的认证方式,需要设置的配置文件内容不同。 - ECS实例RAM角色- # 访问凭据类型
credentials_type=ecs_ram_role
# ECS RAM Role名称
credentials_role_name=#credentials_role_name#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - RAMRoleArn- # 访问凭据类型
credentials_type=ram_role
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - STS Token- # 访问凭据类型
credentials_type=sts
# 角色名称
credentials_role_session_name=#role name#
# 资源短名称
credentials_role_arn=#role arn#
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - AccessKey- # 访问凭据类型
credentials_type=ak
# AK
credentials_access_key_id=#access key id#
# SK
credentials_access_secret=#access key secret#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 - ClientKey- # 访问凭据类型
credentials_type=client_key
# 读取client key的解密密码:支持从环境变量或者文件读取
client_key_password_from_env_variable=#your client key private key password environment variable name#
client_key_password_from_file_path=#your client key private key password file path#
# Client Key私钥文件路径
client_key_private_key_path=#your client key private key file path#
# 关联的KMS服务地域
cache_client_region_id=[{"regionId":"#regionId#"}]
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - package main
import (
    "fmt"
    "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
)
func main() { 
   //构建凭据客户端
    client, err := sdk.NewClient()
    if err != nil {
        // Handle exceptions
        panic(err)
    }
   //使用构建好的客户端获取凭据信息
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // Handle exceptions
        panic(err)
    }
    fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
}
 
- 方式二:通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - package main
import (
	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
	"os"
)
func main() {
	client, err := sdk.NewSecretCacheClientBuilder(service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").Build()).Build()
	if err != nil {
		// Handle exceptions
		panic(err)
	}
	secretInfo, err := client.GetSecretInfo("#secretName#")
	if err != nil {
		// Handle exceptions
		panic(err)
	}
}
 
通过专属网关获取凭据值(不推荐)
网络类型为KMS私有网络。
步骤一:创建访问凭证
访问凭证仅支持ClientKey。
步骤二:安装凭据客户端
Java
通过Maven的方式在项目中安装凭据客户端。
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client</artifactId>
    <version>1.4.x</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.x</version>
</dependency>
步骤三:初始化凭据客户端并获取凭据值
Java
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 参数配置项为- cache_client_dkms_config_info,- cache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力。
 - 方式一:通过环境变量获取ClientKey凭证口令 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 该方式您还需要将ClientKey的凭证口令(ClientKeyPassword)的内容配置到环境变量中,变量名称由您自定义,配置完成后将- <YOUR_PASSWORD_ENV_VARIABLE>替换为变量名称。示例如下:
 - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
- 方式二:通过文件获取ClientKey凭证口令 - ClientKey的凭证口令(ClientKeyPassword)下载后文件名默认为- clientKey_****_Password.txt,您也可以修改文件名称,但需要将cache_client_dkms_config_info取值中- <your Client Key file path>替换为修改后的文件路径。
 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 示例如下: - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
public class CacheClientEnvironmentSample {
    public static void main(String[] args) {
        try {
            //构建凭据客户端
            SecretCacheClient client = SecretCacheClientBuilder.newClient();
            //使用构建好的客户端获取凭据信息
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
 
- 方式二:通过自定义配置文件初始化客户端- 配置文件名称和文件路径由您自行定义。 - 配置文件 - 参数配置项为- cache_client_dkms_config_info,- cache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力。
 - 方式一:通过环境变量获取ClientKey凭证口令 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 该方式您还需要将ClientKey的凭证口令(ClientKeyPassword)的内容配置到环境变量中,变量名称由您自定义,配置完成后将- <YOUR_PASSWORD_ENV_VARIABLE>替换为变量名称。示例如下:
 - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
- 方式二:通过文件获取ClientKey凭证口令 - ClientKey的凭证口令(ClientKeyPassword)下载后文件名默认为- clientKey_****_Password.txt,您也可以修改文件名称,但需要将cache_client_dkms_config_info取值中- <your Client Key file path>替换为修改后的文件路径。
 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 示例如下: - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- 获取凭据值示例代码如下,请将示例代码中的- #customConfigFileName#替换为您自定义的配置文件名称,- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
public class CacheClientCustomConfigFileSample {
    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard().withCustomConfigFile("#customConfigFileName#").build()).build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            System.out.println("CacheSecretException:" + e.getMessage());
        }
    }
}
 
- 方式三:通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
public class CacheClientSimpleParametersSample {
    public static void main(String[] args) {
        try {
            SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                    BaseSecretManagerClientBuilder.standard().withCredentialsProvider(CredentialsProviderUtils
                            .withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))).withRegion("#regionId#").build()).build();
            SecretInfo secretInfo = client.getSecretInfo("#secretName#");
            System.out.println(secretInfo);
        } catch (CacheSecretException e) {
            e.printStackTrace();
        }
    }
}
 
Python
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过系统环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 参数配置项为- cache_client_dkms_config_info,- cache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力。
 - 方式一:通过环境变量获取ClientKey凭证口令 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 该方式您还需要将ClientKey的凭证口令(ClientKeyPassword)的内容配置到环境变量中,变量名称由您自定义,配置完成后将- <YOUR_PASSWORD_ENV_VARIABLE>替换为变量名称。示例如下:
 - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
- 方式二:通过文件获取ClientKey凭证口令 - ClientKey的凭证口令(ClientKeyPassword)下载后文件名默认为- clientKey_****_Password.txt,您也可以修改文件名称,但需要将cache_client_dkms_config_info取值中- <your Client Key file path>替换为修改后的文件路径。
 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 示例如下: - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
if __name__ == '__main__':
    #构建凭据客户端
    secret_cache_client = SecretManagerCacheClientBuilder.new_client()
    #使用构建好的客户端获取凭据信息
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
 
- 方式二:通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - import os
from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
if __name__ == '__main__':
    secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
        .with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
        .with_region("#regionId#").build()) \
    .build();
    secret_info = secret_cache_client.get_secret_info("#secretName#")
    print(secret_info.__dict__)
 
Go
根据初始化客户端方式不同,获取凭据值示例代码不同。选取以下一种方式即可。
- 方式一:通过系统环境变量或secretsmanager.properties配置文件初始化客户端- 环境变量或secretsmanager.properties配置文件选其中一种即可。 - 环境变量 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- secretsmanager.properties配置文件 - 配置文件名称固定为- secretsmanager.properties。
 - 参数配置项为- cache_client_dkms_config_info,- cache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力。
 - 方式一:通过环境变量获取ClientKey凭证口令 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 该方式您还需要将ClientKey的凭证口令(ClientKeyPassword)的内容配置到环境变量中,变量名称由您自定义,配置完成后将- <YOUR_PASSWORD_ENV_VARIABLE>替换为变量名称。示例如下:
 - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
- 方式二:通过文件获取ClientKey凭证口令 - ClientKey的凭证口令(ClientKeyPassword)下载后文件名默认为- clientKey_****_Password.txt,您也可以修改文件名称,但需要将cache_client_dkms_config_info取值中- <your Client Key file path>替换为修改后的文件路径。
 - 配置文件内容为: - cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
 - 示例如下: - cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
 
 - 各配置项说明: | 配置项 | 配置项含义 | 说明 |  | regionId | KMS实例所在地域ID。 | 具体的地域ID,请参见地域和接入地址。 |  | endpoint | KMS实例的域名地址,格式为{实例ID}.kms.aliyuncs.com。 | 访问实例管理页面,在实例详情页面查看实例VPC地址,即endpoint。 |  | clientKeyFile | ClientKey文件(JSON格式)的绝对路径或相对路径。 | 
 重要 ClientKey文件和凭证口令是一一对应的,仅支持您在创建ClientKey时获取。如果您在创建时未保存,则需要在应用接入点AAP中重新创建ClientKey。更多详细内容,请参见创建应用接入点。 |  | passwordFromFilePath或passwordFromEnvVariable |  |  | ignoreSslCerts | 是否忽略KMS实例SSL证书的有效性检查。KMS实例内置SSL证书,使用SSL/TLS协议用于身份验证和加密通信。取值: | 正式生产环境中,请将该值设置为false。 |  | caFilePath | KMS实例CA证书文件的绝对路径或相对路径。 KMS实例CA证书,用于检查KMS实例SSL证书的有效性。例如:检查KMS实例SSL证书是否由对应的CA中心签发、是否在有效期内、以及对应的域名是否为KMS实例的域名地址(endpoint)。 | 访问实例管理页面,在实例详情页面,单击实例CA证书区域的下载。 |  
 
- 获取凭据值示例代码如下,请将示例代码中的- #secretName#替换为您的凭据名称。
 - package main
import (
    "fmt"
    "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
)
func main() { 
   //构建凭据客户端
    client, err := sdk.NewClient()
    if err != nil {
        // Handle exceptions
        panic(err)
    }
   //使用构建好的客户端获取凭据信息
    secretInfo, err := client.GetSecretInfo("#secretName#")
    if err != nil {
        // Handle exceptions
        panic(err)
    }
    fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
}
 
- 通过指定参数(accessKey、accessSecret、regionId)初始化客户端- 仅适用于认证方式为AccessKey的场景。 
 - 说明 - 阿里云账号AccessKey拥有所有OpenAPI的访问权限,建议您使用RAM用户进行API访问或日常运维。强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 - 本示例以将AccessKey配置在环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式来实现身份验证为例。 
 
- 获取凭据值示例代码如下,请将示例代码中的- #regionId#替换为实际地域ID,- #secretName#替换为您的凭据名称。
 - package main
import (
	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
	"github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
	"os"
)
func main() {
	client, err := sdk.NewSecretCacheClientBuilder(service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").Build()).Build()
	if err != nil {
		// Handle exceptions
		panic(err)
	}
	secretInfo, err := client.GetSecretInfo("#secretName#")
	if err != nil {
		// Handle exceptions
		panic(err)
	}
}