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

ApsaraMQ for RocketMQ:RAM シークレットの管理と使用

最終更新日:Mar 01, 2026

RAM ユーザーの AccessKey ID と AccessKey Secret のセキュリティを強化する必要がある場合は、Key Management Service (KMS) を使用して RAM シークレットを管理します。KMS は、集中管理、動的呼び出し、自動ローテーションにより、ハードコーディングされたシークレットの漏洩リスクを排除するのに役立ちます。

重要

KMS を使用してメッセージ送受信データリンクの RAM シークレットを管理する場合は、次の点にご注意ください:

  • リクエストのレイテンシー:KMS から RAM シークレットを取得するために追加のリクエストが必要となり、レイテンシーが増加します。

  • グレースフルデグラデーション:サービス例外やジッターなどの KMS の問題がメッセージ送受信機能に影響を与えないように、アプリケーションが KMS 依存関係の低下を処理できることを確認してください。

機能紹介

Key Management Service (KMS) を使用して RAM シークレットを管理する場合、アプリケーションで AccessKey を設定する必要はなくなります。代わりに、シークレット名のみを設定し、それを使用して有効な AccessKey を取得し、Alibaba Cloud API を呼び出すことができます。RAM シークレットはローテーションもサポートしており、AccessKey の漏洩リスクを低減します。

image.png

制限事項

管理できるのは RAM ユーザー (サブアカウント) の AccessKey のみです。Alibaba Cloud アカウント (ルートアカウント) の AccessKey はサポートされていません。

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

ローテーション中に、Resource Access Management (RAM) は新しい AccessKey を作成し、古いものを削除します。その後、KMS はシークレット値を新しい AccessKey で更新します。次のローテーション方法がサポートされています:

ローテーション方法

ローテーション期間

ユースケース

定期的な自動ローテーション

約 2 日

この AccessKey を使用するアプリケーションは、すでに RAM シークレットを統合し、定期的に読み取っています。

AccessKey の漏洩リスクを低減するために、自動ローテーションの間隔を 3 か月以内に設定することを推奨します。

即時ローテーション

10 分から 2 日の間で設定できます。

RAM シークレットが漏洩した場合は 30 分に設定します。その他のシナリオでは 2 日に設定します。

  • RAM シークレットの漏洩を検出した場合、緊急対応として即時ローテーションをトリガーします。

  • アプリケーションを RAM シークレットと統合する際、テストのために手動でローテーションをトリガーします。

重要
  • シークレットのローテーション中に、そのシークレットに関連付けられている RAM ユーザーを削除しないでください。削除すると、ローテーションが失敗する可能性があります。

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

前提条件

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

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

  • RAM ユーザー (サブアカウント) または RAM ロールを使用して RAM シークレットを管理する場合、ご利用の Alibaba Cloud アカウント (ルートアカウント) が、その RAM ユーザーまたは RAM ロールにシステムポリシー AliyunKMSSecretAdminAccess および AliyunRAMReadOnlyAccess を付与していることを確認してください。詳細については、「RAM ユーザーの権限管理」または「RAM ロールの権限管理」をご参照ください。

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

RAM シークレットを使用するには、KMS に AccessKey へのアクセスを許可する必要があります。これにより、KMS はシークレットを管理し、ローテーションを実行できるようになります。

次の手順を実行します:

  1. Key Management Service コンソールにログインします。トップメニューバーでリージョンを選択します。左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. RAM Secrets タブをクリックします。インスタンス管理 を選択し、資格情報の作成 をクリックします。

  3. RAM シークレット作成ページで、Authorize KMS to access AccessKey pairs. をクリックして、クラウドリソースの権限付与ページを開きます。

    image

  4. クラウドリソースの権限付与ページで、[権限付与の確認] をクリックします。

    警告

    管理権限のない RAM ユーザー (サブアカウント) または RAM ロールを使用している場合は、RAM 管理者 (リソース管理権限を持つ RAM ユーザーまたはルートアカウント) に権限付与を完了してもらう必要があります。

    image

  5. 権限付与後、システムは自動的に AliyunKMSManageRAMCredentialsRole サービスリンクロールを作成し、AliyunKMSManageRAMCredentialsRolePolicy 権限ポリシーをアタッチします。KMS はこのロールを使用して、ご利用の RAM シークレットを管理し、ローテーションを実行します。

    Resource Access Management (RAM) コンソールにログインして、サービスリンクロールとアクセスポリシーの詳細を表示できます。詳細については、「RAM ロールの表示」および「アクセスポリシーに関する情報の表示」をご参照ください。

ステップ 2: RAM 認証情報を作成する

  1. Key Management Service コンソールにログインします。トップメニューバーでリージョンを選択します。左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. RAM Secrets タブをクリックします。インスタンス管理 を選択し、次に 資格情報の作成 をクリックしますAuthorize KMS to access AccessKey pairs. というプロンプトが表示された場合は、まず権限付与を完了する必要があります。 手順については、「ステップ 1: RAM ユーザーの AccessKey を管理する権限を KMS に付与する」をご参照ください。

  3. RAM シークレットのパラメーターを設定します。次の表にパラメーターを示します。設定が完了したら、[OK] をクリックします。

    パラメーター

    説明

    Select RAM User

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

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

    Secret Value

    RAM ユーザーの AccessKey Secret。

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

    CMK

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

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

    • RAM ユーザーまたは RAM ロールを使用する場合、マスターキーに対して GenerateDataKey 操作を呼び出す権限が必要です。

    タグ

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

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

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

    • 各シークレットには最大 20 個のキーと値のペアを追加できます。

    自動ローテーション

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

    Days (7 Days to 365 Days)

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

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

    説明

    シークレットの説明。

    Advanced Settings > ポリシー設定

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

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

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

KMS は、OpenAPI の GetSecretValue 操作または KMS インスタンス API の GetSecretValue 操作 (非推奨) を呼び出すことにより、RAM シークレットを取得するための複数の方法を提供します。これらの方法には、Secrets クライアント、KMS インスタンス SDK、Alibaba Cloud SDK、または KMS Agent の使用が含まれます。必要に応じて方法を選択してください:

説明
  • リトライメカニズムを実装して、サービスの安定性を向上させます。

  • KMS は複数の認証方式を提供します。セキュリティを強化するために、ECS インスタンスのインスタンス RAM ロールまたは RAM ロールの使用を優先することを推奨します。

  • エンドポイントの説明:

    共有ゲートウェイのエンドポイント:詳細については、「エンドポイント」をご参照ください。

    専用ゲートウェイのエンドポイント:{Instance ID}.cryptoservice.kms.aliyuncs.com

統合方法

ユースケース

サポートされるゲートウェイタイプ

RAM シークレットプラグイン

  • アプリケーションは Java (Java 8 以降)、Go、または Python で開発されている必要があります。

  • アプリケーションは、プラグインでサポートされている SDK バージョンを使用する必要があります。詳細については、「サポートされている Alibaba Cloud SDK」をご参照ください。

  • 共有ゲートウェイ

  • 専用ゲートウェイ

Secrets クライアント

アプリケーションは Java (Java 8 以降)、Go、または Python で開発されている必要があります。

  • 共有ゲートウェイ

  • 専用ゲートウェイ

Alibaba Cloud SDK

アプリケーションは Java (Java 6 以降)、PHP、Go、Python、.NET (C# のみ)、C++、または Node.js で開発されている必要があります。

  • 専用ゲートウェイ (推奨)

  • 共有ゲートウェイ

KMS Agent

  • KMS に頻繁にアクセスする、まとめてデプロイされた大規模アプリケーションに適しています。

  • KMS Agent は標準の HTTP インターフェイスを介してサービスを提供し、任意のプログラミング言語で記述されたアプリケーションをサポートします。

  • 専用ゲートウェイ (推奨)

  • 共有ゲートウェイ

KMS インスタンス SDK (非推奨)

アプリケーションは Java (Java 8 以降)、PHP、Go、Python、または .NET (C# のみ) で開発されている必要があります。

専用ゲートウェイ

参考

詳細については、「RAM シークレットの管理と使用」をご参照ください。