カスタマーマスターキー (CMK) を定期的にローテーションすることで、単一のキーマテリアルバージョンで保護されるデータ量を制限し、キー侵害のリスクを低減します。Key Management Service (KMS) では、自動ローテーション機能により、アプリケーションコードの変更や既存の暗号化・復号操作を中断することなく、定義したスケジュールでキーマテリアルを置き換えることができます。
キーの自動ローテーションは、Origin = Aliyun_KMS の CMK でのみ利用可能です。サービスマネージドキーおよび Bring Your Own Key (BYOK) キーは、複数のキーバージョンやローテーションをサポートしていません。詳細については、制限事項をご参照ください。自動回転の仕組み
CMK は複数のキーバージョンを持つことができます。各バージョンは独立して生成され、同じ CMK のバージョン間に暗号的な関係はありません。
キーバージョンの種類:
| 種類 | 説明 |
|---|---|
| プライマリキーバージョン | アクティブな暗号鍵です。各 CMK は、いかなる時点においても正確に 1 つのプライマリキーバージョンを持ちます。KMS は、GenerateDataKey または Encrypt を呼び出す際にプライマリキーバージョンを使用します。DescribeKey → PrimaryKeyVersion で照会できます。 |
| 非プライマリキーバージョン | 以前のプライマリキーバージョンで、現在は非アクティブなものです。CMK は 0 個以上の非プライマリキーバージョンを持つことができます。KMS はすべての非プライマリキーバージョンを保持します。これらは、アクティブだったときに暗号化されたデータを復号するために必要です。 |
暗号化では常に現在のプライマリキーバージョンが使用されます。復号では、データの暗号化に使用されたキーバージョンが自動的に選択されます。
キーバージョンの作成方法:
CMK 作成時 —
Origin = Aliyun_KMSでCreateKeyを呼び出すと、KMS は初期キーバージョンを生成し、それをプライマリキーバージョンとして設定します。自動ローテーションによる作成 — 有効にすると、KMS は定期的なスケジュールで新しいキーバージョンを作成し、それをプライマリに昇格させます。
暗号化と復号への影響
ローテーション後、KMS はすべての新しい暗号化に新しいプライマリキーバージョンを使用します。以前のキーバージョンで暗号化されたデータについては、その履歴キーバージョンを使用してのみデータを復号できます。KMS は、各復号リクエストに対して正しい履歴キーバージョンを自動的に選択します。アプリケーションコードの変更は必要ありません。

履歴キーバージョンから現在のプライマリバージョンに暗号文を移行するには、ReEncrypt 操作を呼び出します。ReEncrypt は、元のキーバージョンを使用して暗号文を復号し、その結果を現在のプライマリキーバージョンを使用して再暗号化します。

キーの自動ローテーションの設定
CMK の作成時にキーの自動ローテーションを設定するか、いつでもスケジュールを更新できます。
CMK 作成時に、ローテーションパラメーターを CreateKey に渡します:
| パラメーター | 説明 |
|---|---|
EnableAutomaticRotation | 自動ローテーションを有効にするかどうか |
RotationInterval | KMS が新しいキーバージョンを作成する頻度 |
作成後は、UpdateRotationPolicy を同じパラメーターで呼び出して、ローテーションスケジュールを変更します。
現在のローテーション構成を表示するには、DescribeKey を呼び出します。応答には以下が含まれます:
| フィールド | 説明 | 値 |
|---|---|---|
AutomaticRotation | 現在のローテーションステータス | Enabled、Disabled、Suspended |
RotationInterval | 設定されたローテーション間隔 | 期間の値 |
LastRotationDate | 最後のキーバージョンが作成された日時 | タイムスタンプ |
NextRotationDate | 次のローテーションがスケジュールされている日時 | タイムスタンプ |
ローテーションスケジュールの数式:
NextRotationDate = LastRotationDate + RotationIntervalRotationInterval を更新し、再計算された NextRotationDate が過去の日付になる場合、KMS は直ちにローテーションを実行し、その後新しいスケジュールで継続します。
CMK のステータスとローテーションの動作
ローテーションは、Enabled 状態 (KeyState = Enabled) の CMK でのみ実行されます。
シナリオ:CMK が `Disabled` または `Pending Deletion` 状態になる
KMS は自動ローテーションを一時停止します。DescribeKey は AutomaticRotation = Suspended を返します。ローテーションポリシーの構成は保持され、新しいキーバージョンは作成されません。
シナリオ:CMK が `Enabled` 状態に戻る
自動ローテーションポリシーが再びアクティブになります。KMS は LastRotationDate + RotationInterval に基づいて次のローテーションを計算し、スケジュールを再開します。
シナリオ:`Enabled` ではない CMK のローテーションポリシーを更新する
Disabled または Pending Deletion 状態の CMK に対して UpdateRotationPolicy を呼び出さないでください。
制限事項
以下のキータイプは、複数のキーバージョンや手動および自動のキーローテーションをサポートしていません:
サービスマネージドキー — 特定の Alibaba Cloud サービスに代わって KMS が管理するデフォルトの CMK です。これらのキーはクラウドサービスユーザーに属し、サービスデータの基本的な暗号化を提供します。
BYOK キー —
Origin = EXTERNALで KMS にインポートしたキーです。KMS はこれらのキーに対してキーマテリアルを生成したり、ローテーションタスクを開始したりしません。BYOK キーが複数のバージョンをサポートしない理由は 2 つあります:
オンプレミスのストレージやクラウドとの同期を含め、キーマテリアルの完全なライフサイクルを KMS の外部で管理します。環境をまたいでインポートされたキーマテリアルの複数バージョンを管理することは、重大な運用リスクをもたらします。例えば、キーマテリアルが KMS から削除された場合に猶予期間はありません。
いずれかのバージョンが利用できなくなった場合 (KMS から削除された、または再インポートされたキーマテリアルが元のものと一致しないなど)、そのバージョンで暗号化されたデータの復号が失敗し、システムの整合性に影響を与えます。
詳細については、「キーマテリアルのインポート」をご参照ください。