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

Key Management Service:シークレットの概要

最終更新日:Mar 18, 2025

Key Management Service(KMS)を使用すると、機密データを保存するためのシークレットを作成できます。 シークレットをアプリケーションに統合できます。 これにより、機密データを一元的に管理できます。 このトピックでは、シークレットを作成および取得する方法について説明します。

背景情報

KMS を使用すると、シークレットのライフサイクルを管理できます。 たとえば、シークレットの作成、削除、変更ができます。 アプリケーションコードでは、SDK を使用してシークレットを取得できます。 これにより、アプリケーションにハードコードされたシークレットによって機密データが漏洩するのを防ぐことができます。

KMS を使用すると、汎用シークレット、Resource Access Management(RAM)シークレット、データベースシークレット、および Elastic Compute Service(ECS)シークレットを管理できます。 シークレットの詳細については、「概要」をご参照ください。

使用上の注意

KMS は、キーを使用してシークレットを暗号化します。 キーとシークレットは同じ KMS インスタンスに属している必要があり、キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類」をご参照ください。

前提条件

ステップ 1:シークレットを作成する

シークレットを作成するときに、シークレットのローテーションを設定できます。 KMS は、シークレットのセキュリティを確保するために、シークレットを定期的に更新します。

  1. KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. 資格情報管理 ページで、作成するシークレットの種類に基づいてタブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンス ID を選択し、資格情報の作成 をクリックします。 表示されるパネルで、パラメータを設定し、[OK] をクリックします。

    汎用シークレット

    説明

    汎用シークレットを作成するときに、シークレットのローテーションを設定することはできません。 汎用シークレットをローテーションする方法の詳細については、「汎用シークレットを管理および使用する」をご参照ください。

    パラメータ

    説明

    資格情報名

    シークレットの名前。 シークレット名は、現在のリージョン内で一意です。

    Secret Value

    管理する機密データの種類。 有効な値:[シークレットキー/値] および [プレーンテキスト]

    値の長さは 30,720 バイト(30 KB)を超えることはできません。

    Initial Version

    シークレットの初期バージョン。 デフォルト値:[v1]。 カスタムバージョン番号を指定することもできます。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

    RAM シークレット

    パラメータ

    説明

    Select RAM User

    シークレットを作成する RAM ユーザー。 選択した RAM ユーザーは、少なくとも 1 つの AccessKey ペアを持っている必要があります。 詳細については、「AccessKey ペアを作成する」をご参照ください。

    シークレット名は、RAM ユーザーの名前に基づいて自動的に生成されます。 シークレット名は、現在のリージョン内で一意です。

    Secret Value

    RAM ユーザーの AccessKey シークレット。

    値の長さは 30,720 バイト(30 KB)を超えることはできません。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    Days (7 Days to 365 Days)

    自動シークレットローテーションの間隔。 この設定は、自動ローテーションを有効にする場合にのみ必須です。

    KMS は、このパラメータの値に基づいてシークレットを定期的に更新します。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

    データベースシークレット(ApsaraDB RDS)

    シングル資格情報の作成 のみ選択できます。

    パラメータ

    説明

    データベースタイプ

    作成するデータベースシークレットの種類。 ApsaraDB RDS 資格情報 を選択します。

    資格情報名

    シークレットの名前。 シークレット名は、現在のリージョン内で一意です。

    ApsaraDB RDS インスタンス

    Alibaba Cloud アカウント内で管理する既存の ApsaraDB RDS インスタンス。

    アカウント管理

    • デュアルアカウント管理(推奨):このモードは、アプリケーションが ApsaraDB RDS インスタンスにアクセスするためにシークレットを使用するシナリオに適しています。 このモードでは、KMS は同じ権限を持つ 2 つのアカウントを管理します。 このモードでは、シークレットがローテーションされるときに、アプリケーションと ApsaraDB RDS インスタンス間の接続が中断されません。

      • アカウントを作成 タブをクリックし、ユーザー名のプレフィックスを指定し、データベースを選択し、権限を指定します。

        説明

        KMS はアカウントをすぐに作成しません。 KMS は、シークレット情報を確認して確定した後にアカウントを作成します。

      • 存在するアカウントをインポート タブをクリックし、ユーザー名を選択し、ユーザー名のパスワードを指定します。

        説明

        ApsaraDB RDS インスタンスを作成したときにアカウントに指定したパスワードと同じパスワードを指定することをお勧めします。 ユーザー名と指定したパスワードが一致しない場合は、シークレットが最初にローテーションされたときに有効なユーザー名とパスワードを取得できます。

    • シングルアカウント管理:このモードは、特権アカウントまたは手動 O&M アカウントが管理されるシナリオに適しています。 このモードでは、シークレットがローテーションされるときに、シークレットの現在のバージョンが一時的に使用できなくなる場合があります。

      • アカウントを作成 タブをクリックし、ユーザー名のプレフィックスを指定し、アカウントの種類を選択します。

        [アカウントの種類] パラメータには、標準アカウント または 特権アカウント を選択できます。 標準アカウント を選択した場合は、データベースを選択し、アカウントの権限を指定する必要があります。

      • 存在するアカウントをインポート タブをクリックし、ユーザー名を選択し、ユーザー名のパスワードを指定します。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    ローテーション期間

    自動シークレットローテーションの間隔。 この設定は、自動ローテーションを有効にする場合にのみ必須です。 値の範囲は 6 時間~ 365 日です。

    KMS は、このパラメータの値に基づいてシークレットを定期的に更新します。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

    データベースシークレット(PolarDB)

    シングル資格情報の作成 のみ選択できます。 PolarDB シークレットを作成する場合は、デュアルモードの新しいアカウントのみがサポートされていることに注意してください。 新しいアカウントは、PolarDB for MySQL および PolarDB for PostgreSQL のみサポートしています。

    パラメータ

    説明

    データベースタイプ

    作成するデータベースシークレットの種類。 [polardb シークレット] を選択します。

    資格情報名

    シークレットの名前。 シークレット名は、現在のリージョン内で一意です。

    [polardb クラスタ]

    Alibaba Cloud アカウント内で管理する既存の PolarDB クラスタ。

    アカウント管理

    デュアルアカウント管理 のみサポートされています。

    このモードは、アプリケーションが PolarDB クラスタにアクセスするためにシークレットを使用するシナリオに適しています。 このモードでは、KMS は同じ権限を持つ 2 つのアカウントを管理します。 このモードでは、シークレットがローテーションされるときに、アプリケーションと PolarDB クラスタ間の接続が中断されません。

    [シークレット値]

    アカウントを作成 のみサポートされています。

    新しいアカウントの種類は標準です。 PolarDB クラスタを選択した後、新しいアカウントのユーザー名のプレフィックス、権限、およびデータベースを指定します。

    説明
    • KMS はアカウントをすぐに作成しません。 KMS は、シークレット情報を確認して確定した後にアカウントを作成します。

    • アカウント名は一意である必要があります。 そうしないと、シークレットでアカウントを管理できません。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    ローテーション期間

    自動シークレットローテーションの間隔。 この設定は、自動ローテーションを有効にする場合にのみ必須です。 値の範囲は 6 時間~ 365 日です。

    KMS は、このパラメータの値に基づいてシークレットを定期的に更新します。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

    データベースシークレット(ApsaraDB for Redis)

    シングル資格情報の作成Create Bulk Secrets がサポートされています。 次の例では、[単一シークレットの作成] が選択されています。

    パラメータ

    説明

    データベースタイプ

    作成するデータベースシークレットの種類。 ApsaraDB for Redis Secrets を選択します。

    Secret Name

    シークレットの名前。 シークレット名は、現在のリージョン内で一意です。

    [apsaradb For Redis/tair インスタンス]

    Alibaba Cloud アカウント内で管理する既存の ApsaraDB for Redis インスタンス。

    アカウント管理

    デュアルアカウント管理 のみサポートされています。

    Secret Value

    KMS を使用して ApsaraDB for Redis インスタンスのアカウントを管理する場合、新しいアカウントのみ管理できます。 既存のアカウントは管理できません。

    • Account Name: ユーザー名プレフィックスを入力します。その後、KMS は ApsaraDB for Redis 操作を呼び出して、同じ権限を持つ 2 つのアカウントを作成します。 たとえば、user というユーザー名プレフィックスを入力すると、user アカウントと user _clone アカウントが作成されます。

    • Permissions:有効な値は、Read/Write および Read-Only です。 2 つの ApsaraDB for Redis アカウントは、同じ権限を持っています。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    [タグ]

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    ローテーション期間

    自動シークレットローテーションの間隔。 この設定は、自動ローテーション を有効にする場合にのみ必須です。 値の範囲は 6 時間~ 365 日です。

    KMS は、このパラメータの値に基づいてシークレットを定期的に更新します。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

    ECS シークレット

    パラメータ

    説明

    資格情報名

    シークレットの名前。 シークレット名は、現在のリージョン内で一意です。

    Managed Instance

    Alibaba Cloud アカウント内で管理する既存の ECS インスタンス。

    Managed User

    ECS インスタンス上の既存のユーザーの名前(Linux オペレーティングシステムの root ユーザー、Windows オペレーティングシステムの Administrator ユーザーなど)。

    Initial Secret Value

    値の長さは 30,720 バイト(30 KB)を超えることはできません。

    • [パスワード]:ECS インスタンスにログインするために使用されるユーザーのパスワード。

    • [キーペア]:ECS インスタンスにログインするために使用されるユーザーの SSH キーペア。

      SSH キーペアを取得する

      • ECS で作成された SSH キーペア

        • 秘密鍵:SSH キーペアを作成した後、ブラウザは秘密鍵ファイルをコンピュータに自動的にダウンロードします。 ファイル名は キーペア名.pem 形式です。 詳細については、「SSH キーペアを作成する」をご参照ください。

        • 公開鍵:公開鍵に関する情報を表示する方法の詳細については、「公開鍵情報を表示する」をご参照ください。

      • 自動生成された SSH キーペア

        キーペアが生成された後、キーペアの秘密鍵と公開鍵を保存します。たとえば、ssh-keygen コマンドを実行して、3072 ビットの Rivest-Shamir-Adleman(RSA)キーペアを生成して保存します。

        ssh-keygen -t RSA -b 3072 -m PEM -f ~/.ssh/sshKey_demo -N ""

        次のファイルが生成されます。

        • ~/.ssh/sshKey_demo:秘密鍵が含まれています。

        • ~/.ssh/sshKey_demo.pub:公開鍵が含まれています。

    説明

    有効なシークレット値を入力してください。 無効なシークレット値を入力した場合、KMS から取得したパスワードまたはキーペアは、ECS シークレットが最初にローテーションされるまで ECS インスタンスへのログインに使用できません。

    CMK

    シークレットの現在の値の暗号化に使用されるキー。

    重要
    • キーとシークレットは同じ KMS インスタンスに属している必要があります。 キーは対称キーである必要があります。 KMS でサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAM ユーザーまたは RAM ロールである場合は、キーを使用して GenerateDataKey 操作を呼び出す権限を持っている必要があります。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグは、キーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。

    • タグキーは、aliyun または acs: で始めることはできません。

    • シークレットごとに最大 20 個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    ローテーション期間

    自動シークレットローテーションの間隔。 この設定は、自動ローテーションを有効にする場合にのみ必須です。 値の範囲は 1 時間~ 365 日です。

    KMS は、このパラメータの値に基づいてシークレットを定期的に更新します。

    説明

    シークレットの説明。

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「概要」をご参照ください。

    デフォルトポリシーを使用し、シークレットを作成した後にビジネス要件に基づいてポリシーを変更できます。

ステップ 2:シークレットを取得する

次の例では、Alibaba Cloud SDK for Java を使用します。

準備

  1. 環境を準備します。

    環境要件

    Java Development Kit(JDK)8 以降をダウンロードしてインストールします。

    バージョンチェック

    ターミナルで java -version コマンドを実行して、JDK のバージョンを確認します。

  2. SDK for Java をインストールします。

    次の Maven 依存関係をプロジェクトに追加します。 その後、Alibaba Cloud SDK の Java パッケージが Maven リポジトリから自動的にダウンロードされます。 Alibaba Cloud SDK V2.0 が使用されていることを確認してください。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>kms20160120</artifactId>
      <version>1.2.3</version>
    </dependency>
  3. API 操作の呼び出しに使用できる認証情報を作成します。

    Alibaba Cloud SDK は、複数の RAM ベースの認証方式をサポートしています。 この例では、RAM ユーザーの AccessKey ペアが使用されます。 認証方式の詳細については、「アクセス認証情報を管理する」をご参照ください。

    1. RAM コンソール で RAM ユーザーの AccessKey ペアを作成します。 詳細については、「AccessKey ペアを作成する」をご参照ください。

      RAM ユーザーの AccessKey ペアがすでに作成されている場合は、この手順をスキップします。image

    2. 必要な権限を RAM ユーザーに付与します。

      たとえば、RAM ユーザーがシークレットを取得するための権限を必要とする場合は、システムポリシー AliyunKMSSecretUserAccess および AliyunKMSCryptoUserAccess を RAM ユーザーにアタッチできます。 詳細については、「RAM ユーザーに権限を付与する」をご参照ください。 image

      説明

      KMS は、次の権限設定方法を提供します。

      • ID ベースのポリシー:上記の例のポリシーは ID ベースのポリシーです。 ID ベースのポリシーは、ID を対応する権限に関連付けてアクセス制御を実装します。 詳細については、「RAM を使用してアクセス制御を実装する」をご参照ください。

      • リソースベースのポリシー:リソースベースのポリシーには、キーポリシーとシークレットポリシーが含まれます。 このようなポリシーはリソースに直接関連付けられており、特定のリソースのアクセスルールを定義するために使用されます。 詳細については、「キーポリシー」および「シークレットポリシー」をご参照ください。

  4. KMS インスタンスの認証局(CA)証明書を取得します。

    1. インスタンス管理 ページで、[ソフトウェアキー管理] タブまたは [ハードウェアキー管理] タブを選択し、ターゲットインスタンスを選択します。

    2. インスタンス ID または [アクション] 列の [詳細] をクリックします。 [詳細] ページで、[インスタンス CA 証明書] の横にある [ダウンロード] をクリックします。

      証明書を安全に保管してください。 ダウンロードしたファイルの名前は、デフォルトで PrivateKmsCA_kst-******.pem になります。

      image

  5. インスタンスの Virtual Private Cloud(VPC)エンドポイントを取得します。

    インスタンスの詳細ページでインスタンスの VPC エンドポイントを記録します。

    image

シークレットの取得

  1. Alibaba Cloud SDK を初期化します。

    重要

    Alibaba Cloud SDK V2.0 が使用されていることを確認してください。 config.endpoint パラメータをインスタンスの VPC エンドポイントに設定し、インスタンスの CA 証明書を設定する必要があります。

        public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // プロジェクトコードが漏洩した場合、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが危険にさらされる可能性があります。 次のサンプルコードは参照用です。
            // セキュリティトークンサービス(STS)トークンを使用してセキュリティを強化することをお勧めします。 認証方式の詳細については、https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials?spm=a2c63.p38356.help-menu-262060.d_1_4_1_2.1ad47c23arIlrq を参照してください。
            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"));
            // インスタンスの VPC エンドポイントを入力します。 例:kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com。
            config.endpoint = "<インスタンスの VPC エンドポイント>";
            // インスタンスの CA 証明書の内容を入力します。
            config.ca = "<インスタンスの CA 証明書>";
            return new com.aliyun.kms20160120.Client(config);
        }
  2. GetSecretValue 操作を呼び出して、シークレットを取得します。

    // このファイルは自動生成されています。編集しないでください。ありがとうございます。
    package com.aliyun.sample;
    
    import com.aliyun.tea.*;
    
    public class Sample {
    
      public static com.aliyun.kms20160120.Client createClient() throws Exception {
            // プロジェクトコードが漏洩した場合、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが危険にさらされる可能性があります。 次のサンプルコードは参照用です。
            // セキュリティトークンサービス(STS)トークンを使用してセキュリティを強化することをお勧めします。 認証方式の詳細については、https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials?spm=a2c63.p38356.help-menu-262060.d_1_4_1_2.1ad47c23arIlrq を参照してください。
            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"));
            // インスタンスの VPC エンドポイントを入力します。 例:kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com。
            config.endpoint = "<インスタンスの VPC エンドポイント>";
            // インスタンスの CA 証明書の内容を入力します。
            config.ca = "<インスタンスの CA 証明書>";
            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("<SecretName>");
            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);
            }        
        }
    }