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

Key Management Service:キーの自動ローテーション

最終更新日:Apr 01, 2026

カスタマーマスターキー (CMK) を定期的にローテーションすることで、単一のキーマテリアルバージョンで保護されるデータ量を制限し、キー侵害のリスクを低減します。Key Management Service (KMS) では、自動ローテーション機能により、アプリケーションコードの変更や既存の暗号化・復号操作を中断することなく、定義したスケジュールでキーマテリアルを置き換えることができます。

キーの自動ローテーションは、Origin = Aliyun_KMS の CMK でのみ利用可能です。サービスマネージドキーおよび Bring Your Own Key (BYOK) キーは、複数のキーバージョンやローテーションをサポートしていません。詳細については、制限事項をご参照ください。

自動回転の仕組み

CMK は複数のキーバージョンを持つことができます。各バージョンは独立して生成され、同じ CMK のバージョン間に暗号的な関係はありません。

キーバージョンの種類:

種類説明
プライマリキーバージョンアクティブな暗号鍵です。各 CMK は、いかなる時点においても正確に 1 つのプライマリキーバージョンを持ちます。KMS は、GenerateDataKey または Encrypt を呼び出す際にプライマリキーバージョンを使用します。DescribeKeyPrimaryKeyVersion で照会できます。
非プライマリキーバージョン以前のプライマリキーバージョンで、現在は非アクティブなものです。CMK は 0 個以上の非プライマリキーバージョンを持つことができます。KMS はすべての非プライマリキーバージョンを保持します。これらは、アクティブだったときに暗号化されたデータを復号するために必要です。
暗号化では常に現在のプライマリキーバージョンが使用されます。復号では、データの暗号化に使用されたキーバージョンが自動的に選択されます。

キーバージョンの作成方法:

  • CMK 作成時Origin = Aliyun_KMSCreateKey を呼び出すと、KMS は初期キーバージョンを生成し、それをプライマリキーバージョンとして設定します。

  • 自動ローテーションによる作成 — 有効にすると、KMS は定期的なスケジュールで新しいキーバージョンを作成し、それをプライマリに昇格させます。

暗号化と復号への影響

ローテーション後、KMS はすべての新しい暗号化に新しいプライマリキーバージョンを使用します。以前のキーバージョンで暗号化されたデータについては、その履歴キーバージョンを使用してのみデータを復号できます。KMS は、各復号リクエストに対して正しい履歴キーバージョンを自動的に選択します。アプリケーションコードの変更は必要ありません。

Rotation diagram

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

ReEncrypt diagram

キーの自動ローテーションの設定

CMK の作成時にキーの自動ローテーションを設定するか、いつでもスケジュールを更新できます。

CMK 作成時に、ローテーションパラメーターを CreateKey に渡します:

パラメーター説明
EnableAutomaticRotation自動ローテーションを有効にするかどうか
RotationIntervalKMS が新しいキーバージョンを作成する頻度

作成後は、UpdateRotationPolicy を同じパラメーターで呼び出して、ローテーションスケジュールを変更します。

現在のローテーション構成を表示するには、DescribeKey を呼び出します。応答には以下が含まれます:

フィールド説明
AutomaticRotation現在のローテーションステータスEnabledDisabledSuspended
RotationInterval設定されたローテーション間隔期間の値
LastRotationDate最後のキーバージョンが作成された日時タイムスタンプ
NextRotationDate次のローテーションがスケジュールされている日時タイムスタンプ

ローテーションスケジュールの数式:

NextRotationDate = LastRotationDate + RotationInterval

RotationInterval を更新し、再計算された NextRotationDate が過去の日付になる場合、KMS は直ちにローテーションを実行し、その後新しいスケジュールで継続します。

CMK のステータスとローテーションの動作

ローテーションは、Enabled 状態 (KeyState = Enabled) の CMK でのみ実行されます。

シナリオ:CMK が `Disabled` または `Pending Deletion` 状態になる

KMS は自動ローテーションを一時停止します。DescribeKeyAutomaticRotation = 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 から削除された、または再インポートされたキーマテリアルが元のものと一致しないなど)、そのバージョンで暗号化されたデータの復号が失敗し、システムの整合性に影響を与えます。

    詳細については、「キーマテリアルのインポート」をご参照ください。