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

Key Management Service:RAM シークレットの管理と使用

最終更新日:Apr 02, 2026

アプリケーションのソースコードに AccessKey ペアをハードコーディングすることは、一般的なセキュリティリスクです。コードやデプロイされたアーティファクトを検査できる人なら誰でも、認証情報を不正に取得できてしまいます。RAM シークレットを使用すると、RAM ユーザーの AccessKey ペアを Key Management Service (KMS) に保存し、ローテーションできます。これにより、アプリケーションはビルド時に認証情報を埋め込むのではなく、ランタイムに有効な認証情報を取得します。

このトピックでは、KMS の権限付与、RAM シークレットの作成、アプリケーションへの統合、およびシークレットのライフサイクル管理について説明します。

仕組み

image.png

RAM ユーザーの AccessKey ペアを RAM シークレットとして保存した後、アプリケーションをシークレット名のみで設定します。実行時、アプリケーションは GetSecretValue を呼び出して現在の AccessKey ペアを取得します。シークレットを回転すると、KMS が RAM 内に新しい AccessKey ペアを作成し、新しい認証情報を現在のシークレット値として書き込み、古い AccessKey ペアを削除します。アプリケーションは、次回の取得時にコード変更なしで新しい認証情報を使用します。

使用制限:RAM シークレットとして管理できるのは、RAM ユーザーの AccessKey ペアのみです。Alibaba Cloud アカウント (root ユーザー) の AccessKey ペアは管理できません。

シークレットのローテーション

KMS は、2 つのローテーション方法をサポートしています:

ローテーション方法使用する状況ローテーション期間
自動ローテーションRAM シークレットは、それを定期的に読み取るアプリケーションに組み込まれています。約 2 日 (推奨:3 か月以内)
即時ローテーションシークレットが漏洩した場合の緊急対応、またはアプリケーションがシークレットを取得する際に手動でローテーションをトリガーする場合。10 分~ 2 日 (推奨:漏洩したシークレットは 30 分、それ以外は 2 日)
重要
  • ローテーションの進行中にシークレットに関連付けられている RAM ユーザーを削除しないでください。削除するとローテーションが失敗します。

  • シークレットのローテーション中は、自動ローテーションポリシーを設定したり、即時ローテーションをトリガーしたりすることはできません。

前提条件

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

  • 購入済みで有効化された KMS インスタンス

  • シークレットの暗号化に使用する、KMS インスタンスで作成された対称キー。詳細については、「キーの作成」をご参照ください。

  • (RAM ユーザーまたは RAM ロールを使用する場合に必須) シークレットの管理に使用する RAM ユーザーまたは RAM ロールに、AliyunKMSSecretAdminAccess および AliyunRAMReadOnlyAccess システムポリシーがアタッチされていること。詳細については、「RAM ユーザーへの権限付与」または「RAM ロールへの権限付与」をご参照ください。

Alibaba Cloud アカウントに AliyunKMSManageRAMCredentialsRole または AliyunKMSManagedRAMCrendentialsRole サービスリンクロールが既にある場合は、ステップ 1 をスキップしてください。KMS には、RAM ユーザーの AccessKey ペアを管理する権限が既に付与されています。

ステップ 1:RAM ユーザーの AccessKey ペアを管理する権限を KMS に付与

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

  2. [カスタマー管理シークレット] タブをクリックし、[RAM シークレット] タイプを見つけ、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、[シークレットの作成] をクリックします。

  3. [RAM シークレットの作成] パネルで、[KMS に AccessKey ペアへのアクセスを許可] をクリックします。

  4. [クラウドリソースアクセス権限付与] ページで: 権限付与が完了すると、KMS は自動的に AliyunKMSManageRAMCredentialsRole サービスリンクロールを作成し、AliyunKMSManageRAMCredentialsRolePolicy 権限ポリシーをアタッチします。KMS はこのロールを使用して RAM シークレットを管理し、シークレットのローテーションを実行します。サービスリンクロールとポリシーの詳細を表示するには、「RAM ロールの情報の表示」および「ポリシーの情報の表示」をご参照ください。

    • AliyunKMSManageRAMCredentialsRole または AliyunKMSManagedRAMCrendentialsRole ロールを持たない RAM 管理者の場合は、[承認に同意] をクリックします。

    • それ以外の場合は、[クラウドリソースアクセス承認] リンクを RAM 管理者または Alibaba Cloud アカウントの所有者に送信して、権限付与を完了してもらいます。

  5. RAM シークレット作成ページに戻り、更新ボタンをクリックして続行します。

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

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

  2. [カスタマー管理シークレット] タブをクリックし、[RAM シークレット] タイプを見つけ、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、[シークレットの作成] をクリックします。

  3. パラメーターを設定し、[OK] をクリックします。

パラメーター説明
[RAM ユーザーの選択]管理する AccessKey ペアを持つ RAM ユーザーです。この RAM ユーザーは、少なくとも 1 つの AccessKey ペアを持っている必要があります。詳細については、「AccessKey ペアの作成」をご参照ください。シークレット名は RAM ユーザー名から自動生成され、リージョン内で一意です。
[シークレット値]RAM ユーザーの AccessKey シークレットです。最大サイズは 30,720 バイト (30 KB) です。
[CMK]シークレット値を暗号化するために使用されるカスタマーマスターキー (CMK) です。キーとシークレットは同じ KMS インスタンスに属している必要があり、キーは対称キーである必要があります。RAM ユーザーまたはロールの場合、このキーを使用して GenerateDataKey を呼び出す権限が必要です。サポートされているキータイプについては、「対称キーと非対称キーの仕様」をご参照ください。
[タグ]シークレットを分類および管理するためのキーと値のペアです。各タグキーと値は、文字、数字、/\_-.+=:@、およびスペースを使用して、最大 128 文字まで設定できます。タグキーは aliyun または acs: で始めることはできません。1 つのシークレットにつき、最大 20 個のキーと値のペアを設定できます。
[自動ローテーション]シークレットの自動ローテーションを有効にするかどうかを指定します。
[日数 (7 日~ 365 日)]自動ローテーションの間隔です。自動ローテーションが有効な場合にのみ必須です。
説明シークレットの任意の説明です。
[詳細設定] > [ポリシー設定]シークレットのリソースポリシーです。詳細については、「シークレットポリシーの概要」をご参照ください。デフォルトポリシーを使用し、作成後に調整することができます。

ステップ 3:RAM シークレットをアプリケーションに統合

以下のいずれかの方法を使用して GetSecretValue を呼び出し、ランタイムに RAM シークレットを取得します。セキュリティを強化するため、ハードコーディングされた認証情報ではなく、ECS インスタンス RAM ロールまたは標準の RAM ロールを使用して認証することを推奨します。

アプリケーションにリトライメカニズムを実装して、一時的なエラーを処理し、信頼性を向上させてください。
エンドポイント:
共有ゲートウェイ: 「エンドポイント」をご参照ください。
専用ゲートウェイ:{INSTANCE_ID}.cryptoservice.kms.aliyuncs.com
方法最適な用途サポートされているゲートウェイ
RAM シークレットプラグインJava 8以降、Go、またはPythonのアプリケーションで、サポートされているSDKバージョン共有ゲートウェイ、専用ゲートウェイ
シークレットクライアントJava 8+、Go、または Python アプリケーション共有ゲートウェイ、専用ゲートウェイ
Alibaba Cloud SDKJava 8+ (SDK V1.0 では Java 6+)、PHP、Go、Python、.NET (C# のみ)、C++、TypeScript、または Swift のアプリケーション専用ゲートウェイ (推奨)、共有ゲートウェイ
KMS エージェント多くのアプリケーションが KMS にアクセスするマルチアプリケーションデプロイメント。標準の HTTP API を介して任意の言語をサポートします。専用ゲートウェイ (推奨)、共有ゲートウェイ
KMS インスタンス SDK (非推奨)Java 8+、PHP、Go、Python、または .NET (C# のみ) のアプリケーション専用ゲートウェイのみ

シークレットのライフサイクル管理

RAM シークレットのローテーション

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

  2. [カスタマー管理シークレット] タブをクリックし、[RAM シークレット] タイプを見つけ、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、対象のシークレットを見つけて、[アクション] 列の [詳細] をクリックします。

  3. ローテーションポリシーを設定します:

    • 自動ローテーション:右上隅の [ローテーションの設定] をクリックし、[自動ローテーション] を有効または無効にしてから、[OK] をクリックします。

    • 即時ローテーション:右上隅の [今すぐローテーション] をクリックします。[ローテーションの設定] ダイアログボックスで、[ローテーションウィンドウ] を 10 分から 2 日の間の値に設定し、[OK] をクリックします。

RAM シークレットの削除

RAM シークレットを削除すると、Secrets Manager からのみ削除されます。関連付けられている RAM ユーザーの AccessKey ペアは RAM からは削除されません。

警告

削除する前に、シークレットが使用中でないことを確認してください。アクティブなシークレットを削除すると、サービス障害が発生する可能性があります。

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

  2. [カスタマー管理シークレット] タブをクリックし、[RAM シークレット] タイプを見つけ、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、対象のシークレットを見つけて、[アクション] 列の [削除のスケジューリング] をクリックします。

  3. [削除のスケジューリング] ダイアログボックスで、削除方法を選択し、[OK] をクリックします:

    • 削除の予約: 保持期間 (7~30 日) を設定します。期間が終了すると、KMS はシークレットを削除します。保持期間中は、[操作] 列の [OK] をクリックすると削除をキャンセルできます。

    • すぐに削除:KMS はシークレットをすぐに削除します。

タグの管理

タグは、シークレットを分類および管理するためのキーと値のペアです。各タグキーと値は最大 128 文字です。タグキーは aliyun または acs: で始めることはできません。各シークレットは最大 20 個のキーと値のペアをサポートします。

単一のシークレットにタグを追加する

タグは、[シークレット一覧] ページまたは [シークレットの詳細] ページから追加できます。

  • [シークレット] リストページから

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

    2. シークレットタイプに基づいてタブをクリックし、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、目的のシークレットを見つけ、[タグ] 列の image.png アイコンをクリックします。

    3. [追加] をクリックします。[タグの編集] ダイアログボックスで、1 つ以上の [タグキー][タグ値] のペアを入力し、[OK] をクリックします。[閉じる] をクリックして確認メッセージを閉じます。

  • [シークレット詳細] ページから

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

    2. シークレットのタイプに基づいてタブをクリックし、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、対象のシークレットを見つけて、[アクション] 列の [詳細] をクリックします。

    3. [シークレット詳細] ページで、[タグ] の横にある image.png アイコンをクリックします。

    4. [タグの編集] ダイアログボックスで、1 つ以上の [タグキー][タグ値] のペアを入力し、[OK] をクリックします。[閉じる] をクリックして確認メッセージを閉じます。

複数のシークレットのタグを一度に追加または削除する

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

  2. シークレットのタイプに基づいてタブをクリックし、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、リストから対象のシークレットを選択します。

  3. リストの下部で:

    • タグの追加[タグの追加] をクリックします。[タグの追加] ダイアログボックスで、1 つ以上の [タグキー][タグ値] のペアを入力し、[OK] をクリックします。[閉じる] をクリックして確認メッセージを閉じます。

    • タグの削除: [タグの削除] をクリックします。[一括削除] ダイアログボックスで、削除するタグを選択し、[キャンセル] をクリックします。確認メッセージを閉じるには、[閉じる] をクリックします。

アカウントのチェック

アカウントチェック機能は、RAM シークレットに関連付けられている RAM ユーザーがまだ存在し、シークレットに保存されている AccessKey ID が RAM ユーザーの現在の AccessKey ID と一致することを確認します。

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

  2. [カスタマー管理シークレット] タブをクリックし、[RAM シークレット] タイプを見つけ、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、対象のシークレットを見つけて、[アクション] 列の [詳細] をクリックします。

  3. [バージョン] セクションで、[アカウントのチェック] をクリックし、結果を確認します。

よくある質問