Todos los productos
Search
Centro de documentos

Key Management Service:Código de ejemplo para recuperar el valor de un secreto

Última actualización: Sep 03, 2026

Use el cliente SDK de la instancia de KMS para llamar a la API GetSecretValue y recuperar un valor de secreto almacenado en su instancia de KMS.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Una instancia de KMS con como mínimo un secreto creado

  • Un archivo de clave de cliente y su contraseña; descargue la clave de cliente desde la página de detalles de la instancia de KMS en la consola

  • El endpoint de su instancia de KMS, cuyo formato es <KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com

  • El certificado de la autoridad de certificación (CA) de su instancia de KMS; descárguelo desde la página de detalles de la instancia

  • El permiso GetSecretValue sobre el secreto de destino

Ejemplo completo

Toda la configuración se pasa mediante el objeto Config durante la inicialización del cliente. El servicio de la instancia de KMS solo acepta conexiones 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();
        }
    }
}

Reemplace los siguientes marcadores de posición antes de ejecutar el código:

Marcador de posición

Descripción

Ejemplo

<SECRET_NAME>

Nombre del secreto que se desea recuperar

my-db-password

<CLIENT_KEY_FILE>

Ruta al archivo de clave de cliente descargado desde la consola de KMS

/home/user/clientKey.json

<PASSWORD>

Contraseña del archivo de clave de cliente

—

<ENDPOINT>

Endpoint de su instancia de KMS

kst-xxxx.cryptoservice.kms.aliyuncs.com

<CA_CERTIFICATE_PATH>

Ruta al archivo de certificado de CA descargado desde la consola de KMS

/home/user/ca.pem

Funcionamiento

El ejemplo consta de dos partes principales:

1. Inicializar el cliente (referencia)

La función initClient() construye un objeto Config con las credenciales y el endpoint de su instancia de KMS, y luego crea una instancia de Client. Inicialice el cliente una sola vez al iniciar la aplicación y reutilícelo en todas las llamadas posteriores a la API.

2. Llamar a GetSecretValue (referencia de la API)

La función getSecretValueSample() crea un objeto GetSecretValueRequest con el nombre del secreto y llama a client.getSecretValue(). La respuesta incluye:

  • getSecretName() — el nombre del secreto

  • getSecretData() — el valor del secreto (comentado en el ejemplo para evitar registros accidentales)

  • getVersionStages() — las etapas de versión asociadas a la versión devuelta

  • getRequestId() — el ID de solicitud para depuración

Si la llamada falla, se lanza una excepción TeaException. El bloque catch imprime el código de error, el mensaje, el código de estado HTTP, el ID del host y el ID de solicitud para facilitar el diagnóstico del problema.

Pasos siguientes