全部產品
Search
文件中心

Key Management Service:擷取憑據值樣本

更新時間:Dec 26, 2024

初始化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)
}