Todos os produtos
Search
Central de documentação

Key Management Service:Sample code for retrieving the secret value

Última atualização: Jun 27, 2026

Utilize o cliente SDK da instância KMS para chamar a API GetSecretValue e obter um valor de segredo armazenado na sua instância KMS.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Uma instância KMS com pelo menos um segredo criado

  • Um arquivo de chave do cliente e sua senha — baixe a chave do cliente na página de detalhes da instância KMS no console

  • O endpoint da sua instância KMS — o formato é <KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com

  • O certificado da autoridade certificadora (CA) da sua instância KMS — baixe-o na página de detalhes da instância

  • A permissão GetSecretValue no segredo de destino

Complete example

Toda a configuração é transmitida por meio do objeto Config durante a inicialização do cliente. O serviço da instância KMS aceita apenas conexões HTTPS.

package com.aliyun.dkms.gcs.sdk.example;

import com.aliyun.dkms.gcs.openapi.models.Config;
import com.aliyun.dkms.gcs.openapi.util.models.RuntimeOptions;
import com.aliyun.dkms.gcs.sdk.Client;
import com.aliyun.dkms.gcs.sdk.models.GetSecretValueRequest;
import com.aliyun.dkms.gcs.sdk.models.GetSecretValueResponse;
import com.aliyun.tea.TeaException;

public class GetSecretValueSample {

    private static Client client = null;

    public static void main(String[] args) {
        try {
            // Initialize the KMS instance client.
            initClient();

            String secretName = "<SECRET_NAME>";

            // Retrieve the secret value.
            getSecretValueSample(secretName);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void initClient() throws Exception {
        Config config = new Config();
        // The KMS instance service only accepts HTTPS connections.
        config.setProtocol("https");
        // Path to the client key file.
        config.setClientKeyFile("<CLIENT_KEY_FILE>");
        // Password for the client key file.
        config.setPassword("<PASSWORD>");
        // Endpoint format: <KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com
        config.setEndpoint("<ENDPOINT>");
        // Path to the CA certificate file of the KMS instance.
        config.setCaFilePath("<CA_CERTIFICATE_PATH>");
        // Alternatively, pass the CA certificate content directly.
        // config.setCa("<CA_CERTIFICATE_CONTENT>");
        client = new Client(config);
    }

    private static void getSecretValueSample(String secretName) {
        GetSecretValueRequest request = new GetSecretValueRequest()
                .setSecretName(secretName);
        try {
            // To skip server certificate verification, use the commented code below.
            // RuntimeOptions runtimeOptions = new RuntimeOptions();
            // runtimeOptions.setIgnoreSSL(true);
            // GetSecretValueResponse getSecretValueResponse = client.getSecretValueWithOptions(request, runtimeOptions);
            GetSecretValueResponse getSecretValueResponse = client.getSecretValue(request);
            System.out.printf("SecretName: %s%n", getSecretValueResponse.getSecretName());
            // System.out.printf("SecretData: %s%n", getSecretValueResponse.getSecretData());
            System.out.printf("VersionStages: %s%n", getSecretValueResponse.getVersionStages());
            System.out.printf("RequestId: %s%n", getSecretValueResponse.getRequestId());
        } catch (Exception e) {
            if (e instanceof TeaException) {
                System.out.printf("Code: %s%n", ((TeaException) e).getCode());
                System.out.printf("Message: %s%n", ((TeaException) e).getMessage());
                System.out.printf("HttpCode: %s%n", ((TeaException) e).getData().get("httpCode"));
                System.out.printf("HostId: %s%n", ((TeaException) e).getData().get("hostId"));
                System.out.printf("RequestId: %s%n", ((TeaException) e).getData().get("requestId"));
            }
            e.printStackTrace();
        }
    }
}

Substitua os seguintes espaços reservados antes de executar:

Espaço reservado

Descrição

Exemplo

<SECRET_NAME>

Nome do segredo a ser recuperado

my-db-password

<CLIENT_KEY_FILE>

Caminho para o arquivo de chave do cliente baixado do console KMS

/home/user/clientKey.json

<PASSWORD>

Senha do arquivo de chave do cliente

—

<ENDPOINT>

Endpoint da sua instância KMS

kst-xxxx.cryptoservice.kms.aliyuncs.com

<CA_CERTIFICATE_PATH>

Caminho para o arquivo de certificado CA baixado do console KMS

/home/user/ca.pem

Como funciona

O exemplo consiste em duas partes principais:

1. Inicializar o cliente (referência)

A função initClient() constrói um objeto Config com as credenciais e o endpoint da sua instância KMS e, em seguida, cria uma instância de Client. Inicialize o cliente uma única vez na inicialização do aplicativo e reutilize-o em todas as chamadas de API subsequentes.

2. Chamar GetSecretValue (referência da API)

A função getSecretValueSample() monta uma GetSecretValueRequest com o nome do segredo e invoca client.getSecretValue(). A resposta inclui:

  • getSecretName() — o nome do segredo

  • getSecretData() — o valor do segredo (comentado no exemplo para evitar logs acidentais)

  • getVersionStages() — os estágios de versão associados à versão retornada

  • getRequestId() — o ID da solicitação para depuração

Se a chamada falhar, uma TeaException será lançada. O bloco catch imprime o código de erro, a mensagem, o código de status HTTP, o ID do host e o ID da solicitação para auxiliar no diagnóstico do problema.

Próximos passos