Alibaba Cloud API を呼び出す際、RAM ユーザーの認証は AccessKey によって実行されます。AccessKey には、AccessKey ID と AccessKey Secret が含まれます。 AccessKey をハードコーディングすることによるセキュリティリスクを防ぐために、Key Management Service(KMS)シークレット(RAM シークレットとも呼ばれます)を使用して AccessKey を管理できます。このトピックでは、RAM シークレットの管理と使用方法について説明します。
機能の説明
KMS を使用して RAM シークレットを管理する場合、アプリケーションに AccessKey ペアを設定する必要はありません。設定する必要があるのはシークレット名だけで、それを使用して操作の呼び出しに有効な AccessKey ペアを取得できます。 また、RAM シークレットをローテーションして、AccessKey ペアの漏洩のリスクを軽減することもできます。
制限事項
RAM ユーザーの AccessKey ペアのみを管理できます。 Alibaba Cloud アカウントの AccessKey ペアは管理できません。
RAM シークレットのローテーション
ローテーション中、RAM は AccessKey ペアを作成し、古い AccessKey ペアを削除します。 KMS は新しい AccessKey をシークレット値として書き込み、古い AccessKey ペアに関連付けられているシークレット値を削除します。シークレットのローテーションでは、2 つの方法がサポートされています。次の表に、これらの方法を示します。
ローテーション方法 | ローテーション期間 | シナリオ |
自動ローテーション | 約 2 日 | RAM シークレットはアプリケーションに統合されています。 アプリケーションは定期的に RAM シークレットを読み取ります。 AccessKey ペアの漏洩のリスクを最小限に抑えるために、自動ローテーション期間を 3 か月以内に指定することをお勧めします。 |
即時ローテーション | 10 分から 2 日までのローテーション期間を指定できます。 RAM シークレットが漏洩した場合、ローテーション期間を 30 分に指定することをお勧めします。 他のシナリオでは、2 日のローテーション期間が最適です。 |
|
RAM シークレットがローテーションされている場合は、そのシークレットに関連付けられている RAM ユーザーを削除しないでください。 これは、シークレットのローテーションの失敗を防ぐのに役立ちます。
RAM シークレットがローテーションされている場合は、自動ローテーションポリシーを設定したり、即時ローテーションを実行したりすることはできません。
前提条件
シークレットの暗号化に使用する対称キーが KMS インスタンスに作成されています。 詳細については、「キーを作成する」をご参照ください。
RAM ユーザーまたは RAM ロールを使用して RAM シークレットを管理する場合、AliyunKMSSecretAdminAccess システムポリシーと AliyunRAMReadOnlyAccess システムポリシーが RAM ユーザーまたは RAM ロールにアタッチされています。 詳細については、「RAM ユーザーに権限を付与する」または「RAM ロールに権限を付与する」をご参照ください。
現在の RAM アカウントに関連付けられている Alibaba Cloud アカウントに、AliyunKMSManageRAMCredentialsRole サービスロールまたは AliyunKMSManagedRAMCrendentialsRole サービスロールがすでに存在する場合は、ステップ 1:RAM ユーザーの AccessKey ペアを管理するための権限を KMS に付与するをスキップします。 KMS には、デフォルトで RAM ユーザーの AccessKey ペアを管理するための権限があります。
ステップ 1:RAM ユーザーの AccessKey ペアを管理するための権限を KMS に付与する
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンス ID を選択し、資格情報の作成 をクリックします。
[RAM シークレットの作成] パネルで、Authorize KMS to access AccessKey pairs. をクリックします。
AliyunKMSManageRAMCredentialsRole または AliyunKMSManagedRAMCrendentialsRole を持たない RAM 管理者ユーザーを使用している場合は、[クラウド リソース アクセス承認] ページで [承認に同意する] をクリックします。 そうでない場合は、[クラウド リソース アクセス承認] リンクを RAM 管理者または Alibaba Cloud アカウントに送信して承認を行います。
承認が完了すると、システムは自動的にサービスロール AliyunKMSManageRAMCredentialsRole を作成し、権限ポリシー AliyunKMSManageRAMCredentialsRolePolicy をアタッチします。 KMS はこのロールを使用して RAM シークレットを管理し、RAM シークレットのローテーションなどのタスクを実行します。
RAM コンソールにログインして、サービスロールとポリシーの詳細を表示できます。 詳細については、「RAM ロールの情報を表示する」および「ポリシーの基本情報を表示する」をご参照ください。
承認が完了したら、RAM シークレット作成ページに戻り、更新ボタンをクリックできます。 その後、RAM シークレットを作成できます。
ステップ 2:RAM シークレットを作成する
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブを クリック し、インスタンス管理 ドロップダウン リスト から必要なインスタンス ID を選択し、資格情報の作成 を クリック します。次に、パラメーターを構成し、[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 は、RAM シークレット プラグイン、Secret Client、Alibaba Cloud SDK、KMS Agent、および KMS インスタンス SDK を提供して、GetSecretValue(OpenAPI) または GetSecretValue(KMS インスタンス API)(非推奨)操作を呼び出して RAM シークレットの値を取得します。
サービスの信頼性を高めるために、アプリケーションに堅牢なエラーリトライメカニズムを実装することをお勧めします。
KMS は複数の認証方法を提供します。 セキュリティを強化するために、ECS インスタンス RAM ロールまたは標準 RAM ロールのいずれかの使用をお勧めします。
エンドポイント:
共有ゲートウェイエンドポイント:エンドポイント をご参照ください。
専用ゲートウェイエンドポイント:
{INSTANCE_ID}.cryptoservice.kms.aliyuncs.com
方法 | 適用可能なシナリオ | サポートされているゲートウェイ |
|
| |
アプリケーションは、Java 8 以降、Go、または Python で開発されています。 |
| |
アプリケーションは、Java 8 以降(Alibaba Cloud SDK V1.0 を使用する場合は Java 6 以降)、PHP、Go、Python、.NET(C# のみ)、C++、TypeScript、および Swift をサポートしています。 |
| |
|
| |
KMS インスタンス SDK(非推奨) | アプリケーションは、Java 8 以降、PHP、Go、Python、または .NET(C# のみ)で開発されています。 | 専用ゲートウェイ |
次のステップ
RAM シークレットをローテーションする
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンス ID を選択し、ローテーションするシークレットを見つけ、詳細 列の 操作 をクリックします。
シークレットローテーションポリシーを設定します。
自動ローテーション:ページの右上隅にある Configure Rotation Policy をクリックし、[自動ローテーション] を有効または無効にして、[OK] をクリックします。OK
即時ローテーション: ページの右上隅にある Rotate Now をクリックします。Configure Rotation Policy ダイアログボックスで、Rotation Window パラメーターを 10 分から 2 日までの値に設定し、[OK] をクリックします。
RAM シークレットを削除する
シークレットをすぐに削除することも、スケジュールされたタスクを作成してシークレットを削除することもできます。 RAM シークレットを削除すると、RAM シークレットは Secrets Manager からのみ削除されます。 RAM シークレットに関連付けられている RAM ユーザーの AccessKey ペアは、RAM からは削除されません。
RAM シークレットを削除する前に、RAM シークレットが使用されていないことを確認してください。 使用中の RAM シークレットを削除すると、サービス障害が発生する可能性があります。
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
[RAM シークレット] タブをクリックし、[インスタンス ID] ドロップダウンリストから必要なインスタンス ID を選択し、削除するシークレットを見つけ、[削除のスケジュール][アクション] 列の をクリックします。
Schedule Deletion ダイアログボックスで、シークレットを削除する方法を選択し、[OK] をクリックします。
Schedule Deletion を選択した場合は、[保持期間(7~30 日)] を設定します。 スケジュールされた削除期間が終了すると、KMS はシークレットを削除します。
Delete Immediately を選択すると、システムはすぐにシークレットを削除します。
スケジュールされた削除期間中は、操作 列の [OK] をクリックして削除をキャンセルできます。
シークレットにタグを追加する
タグを使用して、シークレットを分類および管理できます。 タグはキーと値のペアで構成されます。
タグキーまたはタグ値の長さは最大 128 文字で、文字、数字、スラッシュ(/)、バックスラッシュ(\)、アンダースコア(_)、ハイフン(-)、ピリオド(.)、プラス記号(+)、等号(=)、コロン(:)、アットマーク(@)、およびスペースを含めることができます。
タグキーは aliyun または acs: で始めることはできません。
シークレットごとに最大 20 個のキーと値のペアを設定できます。
シークレットのタグを追加する
ソリューション | 説明 |
方法 1:[シークレット] ページでタグを追加するシークレット |
|
方法 2:[シークレットの詳細] ページでタグを追加するシークレットの詳細 |
|
複数のシークレットのタグを一度に設定する
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
シークレットのタイプに基づいてタブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンス ID を選択し、シークレットリストから目的のシークレットを選択します。
タグを追加する:シークレットリストの下部にある [タグの追加] をクリックします。 [タグの追加] ダイアログボックスで、タグを追加タグを追加[タグキー] と [タグ値] に複数の値を入力し、[OK] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。OK閉じる
タグを削除する:シークレットリストの下部にある [タグの削除] をクリックします。 [一括削除] ダイアログボックスで、削除するタグを選択し、[削除] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。タグの削除バッチ削除削除閉じる
アカウントを確認する
アカウント確認機能を使用すると、RAM シークレットによって示される RAM ユーザーが存在するかどうか、および RAM ユーザーの AccessKey ID がシークレットに保存されているものと同じかどうかを確認できます。
KMS コンソール にログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。
RAM Secrets タブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンス ID を選択し、管理するシークレットを見つけ、詳細 を 操作 列でクリックします。
Versions セクションで、Check Account をクリックします。 確認が完了したら、確認結果を表示します。