Key Management Service (KMS) は、キーのセキュリティとビジネスデータを強化するために、キーを定期的にローテーションできるキーローテーション機能を提供します。このトピックでは、キーローテーションの仕組みと設定方法について説明します。
キーをローテーションする理由
単一のキーバージョンで暗号化されるデータ量を減らし、暗号解読攻撃のリスクを低減します。
これは、単一のキーバージョンによって暗号化される合計バイト数を指します。キーを定期的にローテーションすることで、各キーバージョンの暗号解読の攻撃対象領域を減らし、暗号化スキーム全体のセキュリティを向上させます。
セキュリティインシデントに対応できるように備えます。
これにより、システムはセキュリティインシデントに対応できるようになります。キーのローテーションをシステム設計と実装に組み込むことで、日常的なセキュリティ管理タスクの一部とします。
キーが侵害される可能性のあるタイムウィンドウを短縮します。
ローテーションごとに新しいキーでデータを再暗号化する場合、ローテーション期間がキー侵害のタイムウィンドウになります。つまり、攻撃者はデータにアクセスするために、次のローテーションまでにキーを解読する必要があります。この方法は、暗号解読攻撃からデータを保護する上で非常に効果的です。
コンプライアンス要件を満たします。
定期的なキーのローテーションは、組織がさまざまなコンプライアンス要件を満たすのに役立ちます。キーのローテーションを要求する基準には、以下が含まれますが、これらに限定されません。
クレジットカード業界データセキュリティ基準 (PCI DSS)。
中国国家暗号管理局が発行した暗号関連の業界標準。例:GM/T 0051-2016 暗号デバイス管理 - 対称キー管理技術仕様。
米国国立標準技術研究所 (NIST) が発行した暗号関連の標準。例:NIST Special Publication 800-57 Key Management の推奨事項。
キーローテーションの仕組み
キーは複数のキーバージョンを持つことができます。キーの各バージョンは、暗号学的に互いに関連していません。KMS は、新しいキーバージョンを作成することでキーをローテーションし、常に最新のキーバージョンを暗号操作に使用します。使用するキーバージョンを指定することはできません。
キーのローテーションでは新しいキーバージョンが作成されますが、キー ID、キー ARN、エイリアス、またはキーのその他のプロパティは変更されません。
KMS は、所属するキーが削除された場合にのみ、キーバージョンを削除します。
キーのローテーションは、クラウドサービスや SDK の呼び出しに影響を与えません。
キーを作成すると、KMS は初期キーバージョンを生成し、それをプライマリバージョンとして設定します。ローテーション後、KMS は新しいキーバージョンを生成し、それを新しいプライマリバージョンとして設定します。次の図にこのプロセスを示します。
定期的な自動ローテーションを設定した場合、次回のローテーション時刻は次の数式で計算されます:次回ローテーション時刻 = 最終ローテーション時刻 + ローテーション期間。
DescribeKey オペレーションを呼び出すことができます。応答では、
LastRotationDateフィールドが最終ローテーション時刻を指定し、NextRotationDateフィールドが次回のスケジュールされたローテーション時刻を指定します。キーが定期的な自動ローテーションに設定されており、スケジュールされたローテーションの合間に手動での即時ローテーションを実行した場合、手動ローテーションの時刻が次回ローテーション時刻を計算するための最終ローテーション時刻になります。
注意事項
キータイプとキーマテリアルソース
キータイプ
キーマテリアルソース
定期的な自動ローテーション
手動での即時ローテーション
ソフトウェアキー (対称)
Key Management Service
外部 (キーマテリアルのインポート)
ソフトウェアキー (非対称)
Key Management Service, 外部 (キーマテリアルのインポート)
ハードウェアキー (対称および非対称)
Key Management Service
外部 (キーマテリアルのインポート)
キーステータス:キーは Enabled 状態である必要があります。
キーが Disabled または 削除保留中 状態の場合、KMS はキーのローテーションを一時停止します。キーが再度有効になると、ローテーションは再開されます。
特定のキーに関する追加条件:
デフォルトキーの場合、キーのローテーションには別途付加価値サービスを購入する必要があります。
デフォルトキーのローテーション設定
課金
KMS は、クラウドサービスによるサーバーサイド暗号化のためにデフォルトキーを無料で提供します。ただし、デフォルトキーのキーローテーションは付加価値サービスです。
料金: 9 USD/年/リージョン。本サービスをご購入いただくと、指定されたリージョン内のすべてのデフォルトキー (サービスキーおよびカスタマーマスターキー (CMK) を含む) がローテーションの対象となります。
ローテーション方法とスケジュール
定期的な自動ローテーションのみがサポートされています。手動での即時ローテーションはサポートされていません。
ローテーション期間は 365 日で、変更できません。ローテーションを有効にすると、最初のローテーションはキーバージョンが作成されてから 365 日後に行われます。その後のローテーションは 365 日ごとに行われます。
キーローテーションの付加価値サービスは年間サブスクリプションです。次回のローテーションがスケジュール通りに実行されるように、サブスクリプションがアクティブであることを確認してください。
定期的な自動ローテーションの有効化
キーローテーションの付加価値サービスを購入します。
Key Management Service コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
デフォルトキー タブで、付加価値サービス (VAS) の購入 をクリックし、パラメーターを設定します。
インスタンスタイプ:[付加価値プラン] を選択します。
付加価値プラン:[デフォルトキーのローテーション] を選択します。
リージョン:デフォルトキーが配置されているリージョンを選択します。
購入数量:リージョンごとに 1 セットのみ購入します。
サービス規約をよく読み、[今すぐ購入] をクリックし、次に [ローテーションサービスの購入] をクリックして購入を完了します。
キーのローテーションを有効にします。
サービスキー
設定は不要です。KMS が自動的にローテーションを有効にします。
カスタマーマスターキー (CMK)
コンソールでの操作
キー管理 ページの デフォルトキー タブで、CMK の ID をクリックします。
詳細ページの下部にある Key Version タブをクリックし、次に Configure Rotation をクリックします。
Configure Rotation Policy ダイアログボックスで、Rotation Status スイッチをオンにし、OK をクリックします。キー詳細ページで、Rotation Status が 有効 に変わり、Rotation Period が 日 単位で表示されます。
API の使用
キー作成時にローテーションを有効にします。
CreateKey オペレーションを呼び出し、EnableAutomaticRotation および RotationInterval パラメーターを設定します。
キー作成後にローテーションを有効にします。
UpdateRotationPolicy オペレーションを呼び出し、EnableAutomaticRotation および RotationInterval パラメーターを設定します。
ローテーションされたキーの使用
デフォルトキーは、クラウドプロダクトでのサーバーサイド暗号化にのみ使用できます。ローテーションを有効にすると、クラウドプロダクトが自動的にキーを管理するため、手動操作は不要です。詳細については、「クラウドプロダクトと KMS の統合の概要」をご参照ください。
ローテーション詳細の表示
コンソールでの操作
キー管理 ページの デフォルトキー タブで、表示したいサービスキーまたはカスタマーマスターキー (CMK) を見つけます。
キー ID をクリックします。詳細ページで、Rotation Status、Rotation Period、および Key Version を表示します。
API の使用
DescribeKey オペレーションを呼び出し、返された AutomaticRotation および RotationInterval パラメーターを確認します。
ListKeyVersions オペレーションを呼び出し、返された KeyVersions パラメーターを確認します。
KMS インスタンスのキーローテーション設定
クォータの消費
ローテーションは KMS インスタンスのキークォータを消費します。各キーバージョンは 1 つのキークォータを消費します。たとえば、キーに 3 つのキーバージョン (V1、V2、V3) がある場合、3 つのキークォータを消費します。詳細については、「KMS インスタンスのアップグレード」をご参照ください。
ローテーション方法と日付
定期的な自動ローテーションと手動での即時ローテーションがサポートされています。
定期的な自動ローテーション:7 日から 365 日のカスタムローテーション期間に基づいて、新しいキーバージョンが定期的に生成されます。
手動での即時ローテーション:新しいキーバージョンがすぐに生成されます。
ローテーションの有効化
定期的な自動ローテーションの有効化
コンソールでの操作
キー作成時にローテーションを有効にします。詳細については、「キーの管理」をご参照ください。
キー管理 ページの キー タブで、KMS インスタンス ID を選択し、キーの作成 をクリックします。
キーの作成 パネルで、パラメーターを設定し、自動ローテーション を有効にし、ローテーション期間 を設定します。その後、確認 をクリックします。
キー作成時にローテーションを有効にしなかった場合は、後で有効にします。
キー管理 ページの キー タブで、KMS インスタンス ID を選択し、対象キーの ID をクリックします。
キー詳細ページの Key Version セクションで、Configure Rotation をクリックします。ローテーションポリシーの設定 ダイアログボックスで、定期的な自動ローテーションを有効にし、ローテーション期間を設定してから、確認 をクリックします。
API の使用
キー作成時にローテーションを有効にします。
CreateKey オペレーションを呼び出し、EnableAutomaticRotation および RotationInterval パラメーターを設定します。
キー作成時にローテーションを有効にしなかった場合は、後で有効にします。
UpdateRotationPolicy オペレーションを呼び出し、EnableAutomaticRotation および RotationInterval パラメーターを設定します。
手動での即時ローテーション
KMS によって生成されたキーマテリアルを持つキー。
コンソールでの操作
キー管理 ページの キー タブで、KMS インスタンス ID を選択し、対象キーの ID をクリックします。
キー詳細ページの Key Version セクションで、Configure Rotation をクリックします。ローテーションポリシーの設定 ダイアログボックスで、Rotate Now を選択し、確認 をクリックします。
API の使用
CreateKeyVersion オペレーションを呼び出します。
インポートされたキーマテリアルを持つ Bring Your Own Key (BYOK)。
新しいキーマテリアルのインポート
Key Management Service コンソールにログインします。上部のナビゲーションバーでリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。
カスタマーマスターキー タブで、KMS インスタンス ID を選択し、対象キーの [アクション] 列にある 詳細 をクリックします。
キーマテリアルとバージョン タブの左上隅にある 新しいキーマテリアルのインポート をクリックします。キーマテリアルをインポートします。詳細については、「対称キーマテリアルのインポート」をご参照ください。
新しいキーマテリアルがインポートされると、新しいキーバージョンが生成されます。キーバージョンリストで新しいキーバージョンを表示できます。ステータスは「ローテーション保留中」です。
重要現在の新しいバージョンがローテーションされる前に、新しいバージョンをインポートすることはできません。
ローテーションの実行
ステップ 1 で生成されたキーバージョンの [アクション] 列で、ローテーション をクリックします。
Rotate Now ダイアログボックスで、キーマテリアル ID が正しいことを確認し、確認 をクリックします。
ローテーションされたキーの使用
クラウドプロダクトのサーバーサイド暗号化にキーを使用する場合、ローテーションを有効にするとクラウドプロダクトが自動的にキーを管理します。手動操作は不要です。自社開発アプリケーションでデータを暗号化するためにキーを使用する場合は、暗号操作のために以下の API オペレーションを呼び出します。デフォルトでは、オペレーションはローテーション後の最新のキーバージョンを使用します。
Alibaba Cloud SDK を使用する場合
Alibaba Cloud SDK は OpenAPI オペレーションを呼び出します。暗号化と復号には以下のオペレーションを呼び出します。
データキーの生成:GenerateDataKey。KMS は指定されたキーのプライマリバージョンを使用してデータキーを暗号化します。
データの暗号化:Encrypt。KMS は指定されたキーのプライマリバージョンを使用してプレーンテキストを暗号化します。
データの復号:Decrypt。KMS は入力された暗号文に対応するキーバージョンを使用してデータを復号します。
KMS インスタンス SDK を使用する場合 (非推奨)
この SDK は新規ユーザーには推奨されません。KMS インスタンス SDK はインスタンス API オペレーションを呼び出します。暗号化と復号には以下のオペレーションを呼び出します。
データキーの生成:AdvanceGenerateDataKey。KMS は指定されたキーのプライマリバージョンを使用してデータキーを暗号化します。
データの暗号化:AdvanceEncrypt。KMS は指定されたキーのプライマリバージョンを使用してプレーンテキストを暗号化します。
データの復号:AdvanceDecrypt。KMS は入力された暗号文に対応するキーバージョンを使用してデータを復号します。
キーの自動ローテーションを有効にする場合は、Encrypt、Decrypt、または GenerateDataKey オペレーションを使用しないでください。これらのオペレーションは、暗号化と復号に初期キーバージョンを使用し、ローテーション後に生成された新しいキーバージョンは使用しません。
ローテーション詳細の表示
コンソールでの操作
キー管理 ページの キー タブで、KMS インスタンス ID を選択し、対象キーの ID をクリックします。
詳細ページでは、Rotation Status、Rotation Period、およびKey Versionを確認できます。
API の使用
DescribeKey オペレーションを呼び出します。応答の AutomaticRotation および RotationInterval パラメーターを確認します。
ListKeyVersions オペレーションを呼び出します。応答の KeyVersions パラメーターを確認します。