通过使用阿里云凭据管家客户端(SecretsManager Client),应用程序可在运行时使用托管在凭据管家中的各类凭据,从而避免在应用程序代码中硬编码凭据信息。本文介绍如何安装及使用凭据管家客户端。

功能特性

凭据管家客户端基于KMS凭据API,封装了凭据缓存、最佳实践和设计模式,使更易于开发者在业务系统中集成。凭据管家客户端具有以下功能特性:
  • 支持开发者在应用中快速集成凭据管家能力,一行代码读取凭据信息。
  • 封装凭据在应用中缓存和刷新的功能。
  • 封装API错误的重试机制,智能处理服务端错误。
  • 开放插件式设计模式,支持开发者自定义扩展缓存、错误重试等功能模块。

操作流程

凭据管家客户端

Java SDK代码示例

您可以访问SecretsManager Client for Java开源代码仓库了解更多安装信息和源代码。

  1. 通过Maven的方式在项目中安装凭据管家客户端。
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-secretsmanager-client</artifactId>
        <version>x.x.x</version>
    </dependency>
    说明 请确保凭据管家客户端版本为1.3.2及以上版本。
  2. 通过配置文件(secretsmanager.properties)来配置凭据管家客户端运行参数。
    配置文件(secretsmanager.properties)提供相关参数,参数配置项名称为cache_client_dkms_config_infocache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力,数组中各配置项的含义如下。
    配置项说明
    regionId表示KMS实例所在地域。
    endpoint表示KMS实例的VPC地址。
    clientKeyFile表示client key文件(JSON格式)的绝对路径或相对路径。
    passwordFromFilePathpasswordFromEnvVariable
    • passwordFromFilePath:表示从文件中获取client key文件的凭证口令。元素值是一个字符串(文件绝对路径或相对路径),该路径所指文件中包含的内容是凭证口令。
    • passwordFromEnvVariable:表示从环境变量获取client key文件的凭证口令。元素值是一个字符串(环境变量名称),该环境变量的值是凭证口令。
    ignoreSslCerts表示是否忽略SSL证书。取值:
    • true:表示忽略SSL证书。
    • false:表示验证SSL证书。
    caFilePath表示KMS实例CA证书文件的绝对路径或相对路径。
    • 方式一:通过文件获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
    • 方式二:通过环境变量获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
      说明 您还需要设置环境变量,环境变量名称即您在passwordFromEnvVariable中指定的名称,环境变量的值为ClientKey文件的凭证口令。
  3. 构建和使用凭据管家客户端。
    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();
            }
        }
    }

Python SDK代码示例

您可以访问SecretsManager Client for Python开源代码仓库了解更多安装信息和源代码。

  1. 执行pip命令安装凭据管家客户端。
    pip install aliyun-secret-manager-client
  2. 通过修改配置文件(secretsmanager.properties)来配置凭据管家客户端运行参数。
    配置文件(secretsmanager.properties)提供相关参数,参数配置项名称为cache_client_dkms_config_infocache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力,数组中各配置项的含义如下。
    配置项说明
    regionId表示KMS实例所在地域。
    endpoint表示KMS实例的VPC地址。
    clientKeyFile表示client key文件(JSON格式)的绝对路径或相对路径。
    passwordFromFilePathpasswordFromEnvVariable
    • passwordFromFilePath:表示从文件中获取client key文件的凭证口令。元素值是一个字符串(文件绝对路径或相对路径),该路径所指文件中包含的内容是凭证口令。
    • passwordFromEnvVariable:表示从环境变量获取client key文件的凭证口令。元素值是一个字符串(环境变量名称),该环境变量的值是凭证口令。
    ignoreSslCerts表示是否忽略SSL证书。取值:
    • true:表示忽略SSL证书。
    • false:表示验证SSL证书。
    caFilePath表示KMS实例CA证书文件的绝对路径或相对路径。
    • 方式一:通过文件获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
    • 方式二:通过环境变量获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
      说明 您还需要设置环境变量,环境变量名称即您在passwordFromEnvVariable中指定的名称,环境变量的值为ClientKey文件的凭证口令。
  3. 构建和使用凭据管家客户端。
    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__)

Go SDK代码示例

您可以访问SecretsManager Client for Go开源代码仓库了解更多安装信息和源代码。

  1. 使用go get命令,在项目中使用凭据管家客户端。
    go get -u github.com/aliyun/aliyun-secretsmanager-client-go
  2. 通过修改配置文件(secretsmanager.properties)来配置凭据管家客户端运行参数。
    配置文件(secretsmanager.properties)提供相关参数,参数配置项名称为cache_client_dkms_config_infocache_client_dkms_config_info采用JSON数组格式,您可配置多个KMS实例,以支持业务获得更高标准的服务可用性保障和容灾能力,数组中各配置项的含义如下。
    配置项说明
    regionId表示KMS实例所在地域。
    endpoint表示KMS实例的VPC地址。
    clientKeyFile表示client key文件(JSON格式)的绝对路径或相对路径。
    passwordFromFilePathpasswordFromEnvVariable
    • passwordFromFilePath:表示从文件中获取client key文件的凭证口令。元素值是一个字符串(文件绝对路径或相对路径),该路径所指文件中包含的内容是凭证口令。
    • passwordFromEnvVariable:表示从环境变量获取client key文件的凭证口令。元素值是一个字符串(环境变量名称),该环境变量的值是凭证口令。
    ignoreSslCerts表示是否忽略SSL证书。取值:
    • true:表示忽略SSL证书。
    • false:表示验证SSL证书。
    caFilePath表示KMS实例CA证书文件的绝对路径或相对路径。
    • 方式一:通过文件获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
    • 方式二:通过环境变量获取client key凭证口令,配置文件(secretsmanager.properties)内容示例如下。
      cache_client_dkms_config_info=[{"regionId":"<your dkms region>","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<your_password_env_variable>","clientKeyFile":"<your client key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
      说明 您还需要设置环境变量,环境变量名称即您在passwordFromEnvVariable中指定的名称,环境变量的值为ClientKey文件的凭证口令。
  3. 构建和使用凭据管家客户端。
    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)
    }