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

Key Management Service:クイックスタート:シークレットの作成と管理

最終更新日:Apr 01, 2026

Key Management Service (KMS) を使用すると、データベースのパスワード、AccessKey ペア、SSH 認証情報などの機密データをシークレットとして保存し、プログラムで取得できます。このガイドでは、KMS コンソールでシークレットを作成し、Alibaba Cloud SDK for Java を使用してその値を取得する方法について説明します。

前提条件

開始する前に、以下を確認してください:

  • KMS インスタンスが作成され、有効化されていること。詳細は、「KMS インスタンスの購入と有効化」をご参照ください。

  • その KMS インスタンスで対称キーが作成されていること。詳細は、「キーの作成」をご参照ください。

対称キーとシークレットは、同じ KMS インスタンスに属している必要があります。

ステップ 1:シークレットの作成

  1. KMS コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、[リソース] > [シークレット] を選択します。

  2. [シークレット] ページで、作成したいシークレットの種類のタブをクリックし、[インスタンス ID] ドロップダウンリストからインスタンスを選択し、[シークレットの作成] をクリックします。

  3. 表示されるパネルで、シークレットタイプのパラメーターを入力し、[OK] をクリックします。

パラメーターはシークレットタイプによって異なります。ユースケースに合った以下のセクションをご参照ください。

汎用シークレット

汎用シークレットは、API キー、OAuth トークン、証明書、またはカスタムのキーと値のペアなど、あらゆる機密値を保存します。

汎用シークレットは作成時の回転をサポートしていません。作成後に汎用シークレットを回転させるには、「汎用シークレットの管理と使用」をご参照ください。
パラメーター説明
シークレット名リージョン内で一意の名前。
シークレット値保存する機密データ。構造化データの場合は [シークレットキー/値] を、非構造化データの場合は [プレーンテキスト] を選択します。最大サイズ: 30,720 バイト (30 KB)。
初期バージョンこのシークレット値のバージョンラベル。デフォルトは v1 です。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類およびフィルターするためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットへのアクセスを制御するためのリソースベースのポリシー。この設定をスキップした場合、デフォルトポリシーが適用されます。

RAM シークレット

RAM シークレットは、RAM ユーザーの AccessKey ペアを管理し、自動回転をサポートします。

パラメーター説明
RAM ユーザーの選択AccessKey ペアを管理する RAM ユーザー。ユーザーは少なくとも 1 つの AccessKey ペアを持っている必要があります。シークレット名は RAM ユーザーの名前に基づいて自動的に生成されます。
シークレット値選択した RAM ユーザーの AccessKey Secret。最大サイズ:30,720 バイト (30 KB)。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類するためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
自動回転AccessKey ペアを自動的に回転させるかどうか。
日数 (7 日~365 日)回転間隔。自動回転が有効な場合にのみ必須です。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットのリソースベースのポリシー。

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

ApsaraDB RDS では、[単一シークレットの作成] のみがサポートされています。

パラメーター説明
データベースタイプ[ApsaraDB RDS シークレット] を選択します。
シークレット名リージョン内で一意の名前。
ApsaraDB RDS インスタンス管理対象の ApsaraDB RDS インスタンス。
アカウント管理KMS が回転中にデータベースアカウントを管理する方法:[デュアルアカウントの管理] (推奨) — KMS は同一の権限を持つ 2 つのアカウントを維持します。回転中に接続が中断されることはありません。アプリケーションのワークロードにはこれを使用します。[シングルアカウントの管理] — KMS は 1 つのアカウントを管理します。回転中に現在のシークレットバージョンが一時的に利用できなくなる可能性があります。特権アカウントや手動の O&M (運用保守) アカウントにはこれを使用します。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類するためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
自動回転データベースの認証情報を自動的に回転させるかどうか。
回転期間回転間隔 (6 時間~365 日)。自動回転が有効な場合にのみ必須です。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットのリソースベースのポリシー。

デュアルアカウントのオプション:

  • [アカウント作成] タブ:ユーザー名のプレフィックスを指定し、データベースを選択して権限を設定します。シークレットの構成を確定すると、KMS がアカウントを作成します。

  • [既存アカウントのインポート] タブ:ユーザー名を選択し、現在のパスワードを指定します。

    アカウント作成時に設定されたものと同じパスワードを使用してください。ユーザー名とパスワードが一致しない場合、KMS は最初の回転時に正しい認証情報を取得します。

シングルアカウントのオプション:

  • [アカウント作成] タブ:ユーザー名のプレフィックスを指定し、アカウントタイプ ([標準アカウント] または [特権アカウント]) を選択します。標準アカウントの場合は、データベースを選択して権限も設定します。

  • [既存アカウントのインポート] タブ:ユーザー名を選択し、そのパスワードを指定します。

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

[単一シークレットの作成] のみがサポートされています。デュアルモードの新規アカウントのみがサポートされており、対象は PolarDB for MySQL と PolarDB for PostgreSQL のみです。

パラメーター説明
データベースタイプ[PolarDB シークレット] を選択します。
シークレット名リージョン内で一意の名前。
PolarDB クラスター管理対象の PolarDB クラスター。
アカウント管理[デュアルアカウントの管理] のみがサポートされています。KMS は同一の権限を持つ 2 つの標準アカウントを維持します。回転中に接続が中断されることはありません。
シークレット値[アカウント作成] のみがサポートされています。ユーザー名のプレフィックス、権限、およびデータベースを指定します。シークレットの構成を確定すると、KMS がアカウントを作成します。アカウント名は一意である必要があります。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類するためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
自動回転認証情報を自動的に回転させるかどうか。
ローテーション期間回転間隔 (6 時間~365 日)。自動回転が有効な場合にのみ必須です。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットのリソースベースのポリシー。

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

[単一シークレットの作成][複数シークレットの一括作成] の両方がサポートされています。以下の例では、[単一シークレットの作成] を使用します。

新規アカウントのみ管理できます。既存の ApsaraDB for Redis アカウントはインポートできません。

パラメーター説明
データベースタイプ[ApsaraDB for Redis シークレット] を選択します。
シークレット名リージョン内で一意の名前。
ApsaraDB for Redis/Tair インスタンス管理対象の ApsaraDB for Redis インスタンス。
アカウント管理[デュアルアカウントの管理] のみがサポートされています。
シークレット値ユーザー名のプレフィックスを入力します。KMS は ApsaraDB for Redis の操作を呼び出して、同じ権限を持つ 2 つのアカウントを作成します。例えば、user と入力すると、KMS は useruser_clone を作成します。権限:[読み取り/書き込み] または [読み取り専用] (両方のアカウントは同じ権限レベルを共有します)。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類するためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
自動回転認証情報を自動的に回転させるかどうか。
回転期間回転間隔 (6 時間~365 日)。自動回転が有効な場合にのみ必須です。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットのリソースベースのポリシー。

ECS シークレット

ECS シークレットは、Elastic Compute Service (ECS) インスタンス上のユーザーのログイン認証情報 (パスワードまたは SSH キーペア) を管理します。

パラメーター説明
シークレット名リージョン内で一意の名前。
管理対象インスタンス管理対象の ECS インスタンス。
管理対象ユーザーECS インスタンス上の既存のユーザー。例:root (Linux) または Administrator (Windows)。
初期シークレット値保存する認証情報。[パスワード] (ユーザーのログインパスワード) または [キーペア] (SSH キーペア) を選択します。下記の「SSH キーペアの取得」をご参照ください。最大サイズ:30,720 バイト (30 KB)。
CMKこのシークレットの暗号化に使用される対称キー。同じ KMS インスタンスに属している必要があります。RAM ユーザーとロールには、このキーに対して GenerateDataKey を呼び出す権限が必要です。
タグ(任意) シークレットを分類するためのキーと値のペア。各キーまたは値は最大 128 文字で、文字、数字、スラッシュ (/)、バックスラッシュ (\\)、アンダースコア (_)、ハイフン (-)、ピリオド (.)、プラス記号 (+)、等号 (=)、コロン (:)、アットマーク (@)、およびスペースを含めることができます。タグキーは aliyun または acs: で始めることはできません。シークレットごとに最大 20 個のタグを付与できます。
自動回転認証情報を自動的に回転させるかどうか。
ローテーション期間回転間隔 (1 時間~365 日)。自動回転が有効な場合にのみ必須です。
説明(任意) シークレットの説明。
詳細設定 > ポリシー設定(任意) このシークレットのリソースベースのポリシー。
重要

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

SSH キーペアの取得

オプション 1:ECS で作成したキーペアを使用する

  • 秘密鍵:ECS で SSH キーペアを作成すると、ブラウザは自動的に秘密鍵を <key-pair-name>.pem としてダウンロードします。詳細は、「SSH キーペアの作成」をご参照ください。

  • 公開鍵:詳細は、「公開鍵情報の表示」をご参照ください。

オプション 2:ローカルでキーペアを生成する

ssh-keygen を実行して、3072 ビットの RSA キーペアを生成します:

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

これにより、2 つのファイルが生成されます:

  • ~/.ssh/sshKey_demo — 秘密鍵

  • ~/.ssh/sshKey_demo.pub — 公開鍵

ステップ 2:シークレットの取得

この例では、Alibaba Cloud SDK for Java V2.0 を使用して GetSecretValue を呼び出します。

必要な権限: AliyunKMSSecretUserAccess および AliyunKMSCryptoUserAccess

環境のセットアップ

1. Java 開発キット (JDK) のインストール

JDK 8 以降をダウンロードしてインストールします。インストールを確認します:

java -version

2. SDK の依存関係の追加

プロジェクトに以下の Maven の依存関係を追加します。Alibaba Cloud SDK V2.0 を使用していることを確認してください。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>kms20160120</artifactId>
  <version>1.2.3</version>
</dependency>

3. アクセス認証情報の作成

この例では、認証に AccessKey ペアを使用します。他の認証方式については、「アクセス認証情報の管理」をご参照ください。

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

image

RAM ユーザーに、AliyunKMSSecretUserAccessAliyunKMSCryptoUserAccess のシステムポリシーをアタッチして、必要な権限を付与します。詳細は、「RAM ユーザーへの権限付与」をご参照ください。

image

KMS は 2 種類のアクセス制御をサポートしています:

  • ID ベースのポリシー:RAM ID にポリシーをアタッチして、実行可能な操作を定義します。詳細は、「RAM を使用したアクセス制御の実装」をご参照ください。

  • リソースベースのポリシー:KMS リソース (キーとシークレット) に直接ポリシーをアタッチして、誰がアクセスできるかを定義します。詳細は、「キーポリシー」および「シークレットポリシー」をご参照ください。

4. インスタンス CA 証明書のダウンロード

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

  2. インスタンス ID または [操作] 列の [詳細] をクリックします。

  3. インスタンス詳細ページで、[インスタンス CA 証明書] の横にある [ダウンロード] をクリックします。

証明書ファイルを保存します。デフォルトでは PrivateKmsCA_kst-******.pem という名前です。

5. VPC エンドポイントの記録

インスタンス詳細ページで、ご利用のインスタンスの Virtual Private Cloud (VPC) エンドポイントをコピーします。

image

シークレット値の取得

以下の例では、SDK クライアントを初期化し、GetSecretValue を呼び出します。この例では、VPC エンドポイントと CA 証明書を使用して KMS インスタンスに接続します。

コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を設定してください。

重要

ソースコードに AccessKey 認証情報をハードコーディングしないでください。代わりに環境変数または Security Token Service (STS) トークンを使用してください。詳細は、「アクセス認証情報の管理」をご参照ください。

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * KMS クライアントを初期化します。
     *
     * endpoint:KMS インスタンスの VPC エンドポイント。
     *           例:kst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com
     * ca:      インスタンス詳細ページからダウンロードした CA 証明書の内容。
     */
    public static com.aliyun.kms20160120.Client createClient() throws Exception {
        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"));
        config.endpoint = "<インスタンスの VPC エンドポイント>";
        config.ca = "<インスタンスの CA 証明書>";
        return new com.aliyun.kms20160120.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        com.aliyun.kms20160120.Client client = Sample.createClient();

        com.aliyun.kms20160120.models.GetSecretValueRequest request =
                new com.aliyun.kms20160120.models.GetSecretValueRequest()
                        .setSecretName("<SecretName>");

        com.aliyun.teautil.models.RuntimeOptions runtime =
                new com.aliyun.teautil.models.RuntimeOptions();

        try {
            client.getSecretValueWithOptions(request, 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);
        }
    }
}

実行前に以下のプレースホルダーを置き換えてください:

プレースホルダー説明
<インスタンスの VPC エンドポイント>インスタンス詳細ページの VPC エンドポイントkst-hzz65f176a0ogplgq****.cryptoservice.kms.aliyuncs.com
<インスタンスの CA 証明書>PrivateKmsCA_kst-******.pem ファイルの内容(証明書の文字列全体を貼り付けます)
<SecretName>取得するシークレットの名前my-db-password

次のステップ