获取凭据值示例

初始化KMS实例SDK客户端后,您可以通过客户端调用GetSecretValue接口获取凭据值。本文介绍获取凭据值的代码示例。

完整代码示例

调用GetSecretValue接口获取凭据值。

源码github地址:get_secret_value.go

获取凭据值完整代码示例

package main

import (
	"fmt"
	"github.com/alibabacloud-go/tea/tea"
	dedicatedkmsopenapi "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/openapi"
	dedicatedkmsopenapiutil "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/openapi-util"
	dedicatedkmssdk "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/sdk"
	"io/ioutil"
)

func main() {
	// 凭据名称
	secretName := "<your-dkms-secret-name>"

	// 创建KMS实例SDK Client对象
	client := getDkmsClientByClientKeyContent()
	//client := getDkmsClientByClientKeyFile()

	getSecretValueRequest := &dedicatedkmssdk.GetSecretValueRequest{
		SecretName: tea.String(secretName),
	}
	// 验证服务端证书
	ca, err := ioutil.ReadFile("path/to/caCert.pem")
	if err != nil {
		panic(err)
	}
	runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
		Verify: tea.String(string(ca)),
	}
	// 或,忽略证书
	//runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
	//	IgnoreSSL: tea.Bool(true),
	//}

	// 调用获取凭据值接口
	response, err := client.GetSecretValueWithOptions(getSecretValueRequest, runtimeOptions)
	if err != nil {
		panic(err)
	}

	// 凭据名称
	_secretName := tea.StringValue(response.SecretName)
	// 凭据值
	_secretData := tea.StringValue(response.SecretData)
	// 请求ID
	_RequestId := tea.StringValue(response.RequestId)

	fmt.Println("SecretName:", _secretName)
	//fmt.Println("SecretData:", _secretData)
	fmt.Println("RequestId:", _RequestId)
}

// 使用ClientKey内容创建KMS实例SDK Client对象
func getDkmsClientByClientKeyContent() *dedicatedkmssdk.Client {
	// 创建KMS实例SDK Client配置
	config := &dedicatedkmsopenapi.Config{
	        // 连接协议请设置为"https"。KMS实例服务仅允许通过HTTPS协议访问。
		Protocol: tea.String("https"),
		// 请替换为ClientKey文件的内容
		ClientKeyContent: tea.String("yourClientKeyContent"),
		// 请替换为创建ClientKey时输入的加密口令
		Password: tea.String("yourClientKeyPassword"),
		// 设置endpoint为<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
		Endpoint: tea.String("yourEndpoint"),
	}
	// 创建KMS实例SDK Client对象
	client, err := dedicatedkmssdk.NewClient(config)
	if err != nil {
		// 异常处理
		panic(err)
	}
	return client
}

// 使用ClientKey文件路径创建KSM实例SDK Client对象
func getDkmsClientByClientKeyFile() *dedicatedkmssdk.Client {
	// 创建DKMS Client配置
	config := &dedicatedkmsopenapi.Config{
		// 连接协议请设置为"https"。KMS实例服务仅允许通过HTTPS协议访问。
		Protocol: tea.String("https"),
		// 请替换为ClientKey文件的路径
		ClientKeyFile: tea.String("yourClientKeyFile"),
		// 请替换为创建ClientKey时输入的加密口令
		Password: tea.String("yourClientKeyPassword"),
                 // 设置endpoint为<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
		Endpoint: tea.String("yourEndpoint"),
	}
	// 创建KMS实例SDK Client对象
	client, err := dedicatedkmssdk.NewClient(config)
	if err != nil {
		// 异常处理
		panic(err)
	}
	return client
}

代码示例解析

初始化客户端

选择使用ClientKey内容或者ClientKey文件路径创建KMS实例SDK Client对象。

关于初始化客户端的详细介绍,请参见初始化客户端

import (
    dedicatedkmsopenapi "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/openapi"
    dedicatedkmssdk "github.com/aliyun/alibabacloud-dkms-gcs-go-sdk/sdk"
  "github.com/alibabacloud-go/tea/tea"
)

// 使用ClientKey内容创建KMS实例SDK Client对象
func getDkmsClientByClientKeyContent() *dedicatedkmssdk.Client {
	// 创建KMS实例SDK Client配置
	config := &dedicatedkmsopenapi.Config{
	        // 连接协议请设置为"https"。KMS实例服务仅允许通过HTTPS协议访问。
		Protocol: tea.String("https"),
		// 请替换为ClientKey文件的内容
		ClientKeyContent: tea.String("yourClientKeyContent"),
		// 请替换为创建ClientKey时输入的加密口令
		Password: tea.String("yourClientKeyPassword"),
		// 设置endpoint为<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
		Endpoint: tea.String("yourEndpoint"),
	}
	// 创建KMS实例SDK Client对象
	client, err := dedicatedkmssdk.NewClient(config)
	if err != nil {
		// 异常处理
		panic(err)
	}
	return client
}

// 使用ClientKey文件路径创建KSM实例SDK Client对象
func getDkmsClientByClientKeyFile() *dedicatedkmssdk.Client {
	// 创建DKMS Client配置
	config := &dedicatedkmsopenapi.Config{
		// 连接协议请设置为"https"。KMS实例服务仅允许通过HTTPS协议访问。
		Protocol: tea.String("https"),
		// 请替换为ClientKey文件的路径
		ClientKeyFile: tea.String("yourClientKeyFile"),
		// 请替换为创建ClientKey时输入的加密口令
		Password: tea.String("yourClientKeyPassword"),
                 // 设置endpoint为<your KMS Instance Id>.cryptoservice.kms.aliyuncs.com。
		Endpoint: tea.String("yourEndpoint"),
	}
	// 创建KMS实例SDK Client对象
	client, err := dedicatedkmssdk.NewClient(config)
	if err != nil {
		// 异常处理
		panic(err)
	}
	return client
}

调用GetSecretValue接口获取凭据值

func main() {
	// 凭据名称
	secretName := "<your-dkms-secret-name>"

	// 创建KMS实例SDK Client对象
	client := getDkmsClientByClientKeyContent()
	//client := getDkmsClientByClientKeyFile()

	getSecretValueRequest := &dedicatedkmssdk.GetSecretValueRequest{
		SecretName: tea.String(secretName),
	}
	// 验证服务端证书
	ca, err := ioutil.ReadFile("path/to/caCert.pem")
	if err != nil {
		panic(err)
	}
	runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
		Verify: tea.String(string(ca)),
	}
	// 或,忽略证书
	//runtimeOptions := &dedicatedkmsopenapiutil.RuntimeOptions{
	//	IgnoreSSL: tea.Bool(true),
	//}

	// 调用获取凭据值接口
	response, err := client.GetSecretValueWithOptions(getSecretValueRequest, runtimeOptions)
	if err != nil {
		panic(err)
	}

	// 凭据名称
	_secretName := tea.StringValue(response.SecretName)
	// 凭据值
	_secretData := tea.StringValue(response.SecretData)
	// 请求ID
	_RequestId := tea.StringValue(response.RequestId)

	fmt.Println("SecretName:", _secretName)
	//fmt.Println("SecretData:", _secretData)
	fmt.Println("RequestId:", _RequestId)
}