すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:シークレット値を取得するためのサンプルコード

最終更新日:Apr 01, 2026

Alibaba Cloud SDK を使用して GetSecretValue を呼び出し、共有ゲートウェイまたは専用ゲートウェイのいずれかを通じてシークレット値を取得します。両ゲートウェイの違いはクライアント初期化のみであり、リクエストおよび例外処理のコードは同一です。

ゲートウェイの選択

共有ゲートウェイ専用ゲートウェイ
使用タイミングパブリックネットワークまたは VPC 経由で KMS にアクセスする一般的なワークロード強化された隔離機能を備えた専用 KMS インスタンスを必要とするワークロード
エンドポイントフォーマットパブリックネットワーク:kms.<REGION_ID>.aliyuncs.com / VPC:kms-vpc.<REGION_ID>.aliyuncs.com<KMS_INSTANCE_ID>.cryptoservice.kms.aliyuncs.com
CA 証明書不要SDK V2.0:必須 / SDK V1.0:未対応 — client.SetHTTPSInsecure(true) を使用して HTTPSInsecuretrue

前提条件

作業を開始する前に、以下の準備が整っていることを確認してください。

  • KMS にシークレットが作成済みの Alibaba Cloud アカウント (root ユーザー)

  • ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET が環境変数として設定されていること

重要

ソースコード内に AccessKey ペアを保存すると、認証情報の漏洩リスクがあります。本番ワークロードには、Security Token Service (STS) トークン を使用してください。

共有ゲートウェイ経由でのシークレット値の取得

完全なサンプルコード

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * AccessKey ID および AccessKey Secret を使用してクライアントを初期化します。
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.kms20160120.Client createClient() throws Exception {
        // プロジェクトコードが漏洩した場合、AccessKey ペアも漏洩し、アカウント内のリソースが危険にさらされる可能性があります。以下のコードは参考例です。
        // よりセキュアな STS トークンの使用を推奨します。認証方式の詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必須。コードの実行環境に ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必須。コードの実行環境に ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // エンドポイントの詳細については、https://api.alibabacloud.com/product/Kms をご参照ください。
        config.endpoint = "kms.ap-southeast-1.aliyuncs.com";
        return new com.aliyun.kms20160120.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.kms20160120.Client client = Sample.createClient();
        com.aliyun.kms20160120.models.GetSecretValueRequest getSecretValueRequest = new com.aliyun.kms20160120.models.GetSecretValueRequest()
                .setSecretName("test****");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // サンプルコードをコピーして実行する場合は、必要に応じて API オペレーションの応答を表示する独自のコードを記述してください。
            client.getSecretValueWithOptions(getSecretValueRequest, runtime);
        } catch (TeaException error) {
            // 実際のビジネスシナリオに基づき慎重に例外を処理し、プロジェクト内で例外を無視しないでください。この例で表示されるエラーメッセージは参考用です。
            // エラーメッセージを出力
            System.out.println(error.getMessage());
            // トラブルシューティング用 URL を提供
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 実際のビジネスシナリオに基づき慎重に例外を処理し、プロジェクト内で例外を無視しないでください。この例で表示されるエラーメッセージは参考用です。
            // エラーメッセージを出力
            System.out.println(error.getMessage());
            // トラブルシューティング用 URL を提供
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

サンプルコードの解説

クライアントの初期化

エンドポイントを、ご利用のリージョンに対応する共有ゲートウェイアドレスに設定します。この例では、シンガポール (ap-southeast-1) のパブリックネットワークエンドポイントを使用しています。

com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://api.alibabacloud.com/product/Kms をご参照ください。
config.endpoint = "kms.ap-southeast-1.aliyuncs.com";

GetSecretValue の呼び出し

test**** を実際の SecretName に置き換えてください。

com.aliyun.kms20160120.models.GetSecretValueRequest getSecretValueRequest = new com.aliyun.kms20160120.models.GetSecretValueRequest()
        .setSecretName("test****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
    client.getSecretValueWithOptions(getSecretValueRequest, runtime);
} catch (TeaException error) {
    System.out.println(error.getMessage());
    System.out.println(error.getData().get("Recommend"));
    com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
    TeaException error = new TeaException(_error.getMessage(), _error);
    System.out.println(error.getMessage());
    System.out.println(error.getData().get("Recommend"));
    com.aliyun.teautil.Common.assertAsString(error.message);
}
説明

応答にはシークレット値とメタデータが含まれます。応答フィールドの完全な一覧については、GetSecretValue をご参照ください。

専用ゲートウェイ経由でのシークレット値の取得

完全なサンプルコード

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * AccessKey ID および AccessKey Secret を使用してクライアントを初期化します。
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.kms20160120.Client createClient() throws Exception {
        // プロジェクトコードが漏洩した場合、AccessKey ペアも漏洩し、アカウント内のリソースが危険にさらされる可能性があります。以下のコードは参考例です。
        // よりセキュアな STS トークンの使用を推奨します。認証方式の詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必須。コードの実行環境に ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必須。コードの実行環境に ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // 専用ゲートウェイエンドポイント
        config.endpoint = "kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com";
        // KMS インスタンス CA 証明書
        config.ca = "-----BEGIN CERTIFICATE-----MIIDuzCCAqOgAwIBAgIJALTKwWAjvbMiMA0GCS****";
        return new com.aliyun.kms20160120.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.kms20160120.Client client = Sample.createClient();
        com.aliyun.kms20160120.models.GetSecretValueRequest getSecretValueRequest = new com.aliyun.kms20160120.models.GetSecretValueRequest()
                .setSecretName("test****");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // サンプルコードをコピーして実行する場合は、必要に応じて API オペレーションの応答を表示する独自のコードを記述してください。
            client.getSecretValueWithOptions(getSecretValueRequest, runtime);
        } catch (TeaException error) {
            // 実際のビジネスシナリオに基づき慎重に例外を処理し、プロジェクト内で例外を無視しないでください。この例で表示されるエラーメッセージは参考用です。
            // エラーメッセージを出力
            System.out.println(error.getMessage());
            // トラブルシューティング用 URL を提供
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 実際のビジネスシナリオに基づき慎重に例外を処理し、プロジェクト内で例外を無視しないでください。この例で表示されるエラーメッセージは参考用です。
            // エラーメッセージを出力
            System.out.println(error.getMessage());
            // トラブルシューティング用 URL を提供
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

分析例

クライアントの初期化

専用ゲートウェイでは、KMS インスタンスのエンドポイントと CA 証明書という 2 つの追加フィールドが必要です。

// 専用ゲートウェイエンドポイント
config.endpoint = "kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com";
// KMS インスタンス CA 証明書
config.ca = "-----BEGIN CERTIFICATE-----MIIDuzCCAqOgAwIBAgIJALTKwWAjvbMiMA0GCS****";

kst-hzz65f176a0ogplgq**** をご利用の KMS インスタンス ID に、CA 証明書の値を KMS インスタンスからダウンロードした CA 証明書にそれぞれ置き換えてください。

説明

SDK V1.0 は CA 証明書をサポートしていません。client.SetHTTPSInsecure(true) を使用して、代わりに HTTPSInsecuretrue に設定してください。

GetSecretValue の呼び出し

リクエストおよび例外処理のコードは共有ゲートウェイの例と同一です。test**** を実際の SecretName に置き換えてください。

com.aliyun.kms20160120.models.GetSecretValueRequest getSecretValueRequest = new com.aliyun.kms20160120.models.GetSecretValueRequest()
        .setSecretName("test****");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
    client.getSecretValueWithOptions(getSecretValueRequest, runtime);
} catch (TeaException error) {
    System.out.println(error.getMessage());
    System.out.println(error.getData().get("Recommend"));
    com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
    TeaException error = new TeaException(_error.getMessage(), _error);
    System.out.println(error.getMessage());
    System.out.println(error.getData().get("Recommend"));
    com.aliyun.teautil.Common.assertAsString(error.message);
}