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 の漏洩リスクを低減します。

制限事項
管理できるのは RAM ユーザー (サブアカウント) の AccessKey のみです。Alibaba Cloud アカウント (ルートアカウント) の AccessKey はサポートされていません。
RAM シークレットのローテーション
ローテーション中に、Resource Access Management (RAM) は新しい AccessKey を作成し、古いものを削除します。その後、KMS はシークレット値を新しい AccessKey で更新します。次のローテーション方法がサポートされています:
ローテーション方法 | ローテーション期間 | ユースケース |
定期的な自動ローテーション | 約 2 日 | この AccessKey を使用するアプリケーションは、すでに RAM シークレットを統合し、定期的に読み取っています。 AccessKey の漏洩リスクを低減するために、自動ローテーションの間隔を 3 か月以内に設定することを推奨します。 |
即時ローテーション | 10 分から 2 日の間で設定できます。 RAM シークレットが漏洩した場合は 30 分に設定します。その他のシナリオでは 2 日に設定します。 |
|
シークレットのローテーション中に、そのシークレットに関連付けられている RAM ユーザーを削除しないでください。削除すると、ローテーションが失敗する可能性があります。
シークレットのローテーション中は、定期的なローテーションポリシーを設定したり、即時ローテーションをトリガーしたりすることはできません。
前提条件
KMS インスタンスが購入され、有効化されていること。詳細については、「KMS インスタンスの購入と有効化」をご参照ください。
KMS インスタンスでシークレットを暗号化するための対称キーを作成済みであること。詳細については、「キーの作成」をご参照ください。
RAM ユーザー (サブアカウント) または RAM ロールを使用して RAM シークレットを管理する場合、ご利用の Alibaba Cloud アカウント (ルートアカウント) が、その RAM ユーザーまたは RAM ロールにシステムポリシー AliyunKMSSecretAdminAccess および AliyunRAMReadOnlyAccess を付与していることを確認してください。詳細については、「RAM ユーザーの権限管理」または「RAM ロールの権限管理」をご参照ください。
ステップ 1:RAM ユーザーの AccessKey を管理するための権限を KMS に付与
RAM シークレットを使用するには、KMS に AccessKey へのアクセスを許可する必要があります。これにより、KMS はシークレットを管理し、ローテーションを実行できるようになります。
次の手順を実行します:
Key Management Service コンソールにログインします。トップメニューバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブをクリックします。インスタンス管理 を選択し、資格情報の作成 をクリックします。
RAM シークレット作成ページで、Authorize KMS to access AccessKey pairs. をクリックして、クラウドリソースの権限付与ページを開きます。

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

権限付与後、システムは自動的に AliyunKMSManageRAMCredentialsRole サービスリンクロールを作成し、AliyunKMSManageRAMCredentialsRolePolicy 権限ポリシーをアタッチします。KMS はこのロールを使用して、ご利用の RAM シークレットを管理し、ローテーションを実行します。
Resource Access Management (RAM) コンソールにログインして、サービスリンクロールとアクセスポリシーの詳細を表示できます。詳細については、「RAM ロールの表示」および「アクセスポリシーに関する情報の表示」をご参照ください。
ステップ 2: RAM 認証情報を作成する
Key Management Service コンソールにログインします。トップメニューバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブをクリックします。インスタンス管理 を選択し、次に 資格情報の作成 をクリックします。 Authorize KMS to access AccessKey pairs. というプロンプトが表示された場合は、まず権限付与を完了する必要があります。 手順については、「ステップ 1: RAM ユーザーの AccessKey を管理する権限を KMS に付与する」をご参照ください。
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 はこのパラメーターの値に基づいて定期的にシークレットを更新します。
説明
シークレットの説明。
シークレットのポリシー設定。詳細については、「概要」をご参照ください。
デフォルトのポリシーを使用し、シークレット作成後にビジネス要件に基づいてポリシーを変更できます。
ステップ 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。
統合方法 | ユースケース | サポートされるゲートウェイタイプ |
|
| |
アプリケーションは Java (Java 8 以降)、Go、または Python で開発されている必要があります。 |
| |
アプリケーションは Java (Java 6 以降)、PHP、Go、Python、.NET (C# のみ)、C++、または Node.js で開発されている必要があります。 |
| |
|
| |
KMS インスタンス SDK (非推奨) | アプリケーションは Java (Java 8 以降)、PHP、Go、Python、または .NET (C# のみ) で開発されている必要があります。 | 専用ゲートウェイ |
参考
詳細については、「RAM シークレットの管理と使用」をご参照ください。