[アップデート] KMSキーの自動ローテーション間隔を柔軟に変更できるようになりました and ローテーションによるKMSキーの月額料金が最大3USDに設定されました

カスタマーマネージドキーのキーローテーションの運用がやりやすくなりました
2024.04.13

年次ではなく、もっと短い間隔でローテーションしたい

こんにちは、のんピ(@non____97)です。

皆さんはKMSキーのローテーション間隔を年次ではなく、もっと短い間隔でローテーションしたいなと思ったことはありますか? 私はあります。

組織のコンプライアンスによっては3ヶ月などの短い間隔でKMSキーをローテーションする必要があります。

AWSマネージドキー、カスタマーマネージドキーどちらのKMSキーもローテーション間隔は365日固定でした。もし、カスタマーマネージドキーを短い間隔でローテーションさせたい場合は、手動でローテーションをする必要があります。ローテーションを完了させるためにはいくつかステップがあるので、地味に手間です。

今回のアップデートでKMSキーの自動ローテーション間隔を柔軟に変更できるようになりました。

AWS Blogsにも投稿されています。

具体的にはローテーション間隔を90日〜7年(2560日)の間で選択できるようになりました。これはありがたいですね。

加えて、ローテーションによるKMSキーの月額料金が最大3USDに設定されました。

以前は自動ローテーションされる度に既存の暗号化マテリアルを保持するために月額1USD加算されていました。つまりは自動ローテーションをするKMSキーを長く運用していると、その分毎年KMSキーの課金額の負担が増えています。詳細は以下記事をご覧ください。

今回のアップデートにより、ローテーションによるKMSキーの課金は2回目のローテーション後の金額が上限 = 最大3USDに設定されました。これはアツい。

For KMS keys that you rotate automatically or on demand, the first and second rotation of the key adds $1/month (prorated hourly) in cost. This price increase is capped at the second rotation, and any subsequent rotations will not be billed. (Note: this pricing change takes effect in the May 2024 billing cycle.)

Pricing | AWS Key Management Service (KMS) | Amazon Web Services (AWS)

実際に触ってみました。

いきなりまとめ

  • KMSキーの自動ローテーション間隔を90日〜7年(2560日)の間で選択できるようになった
    • カスタマーマネージドキーのみ
    • AWSマネージドキーは対象外
  • オンデマンドでKMSキーローテーションをできるようになった
    • KMSキータイプが対称のもののみ
    • KMSキーごとに最大10回まで
  • ローテーションによるKMSキーの課金は2回目のローテーション後の金額が上限になった (= 最大3USD)
  • KMSキーのローテーション履歴を確認できるようになった

やってみた

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

実際に触ってみましょう。

以下にのように適当にカスタマーマネージドキーを作成しました。デフォルトでは自動キーローテーションは無効に設定されていますね。

カスタマーマネージドキーの作成

自動キーローテーションを有効にします。

キーローテーション有効を選択するとローテーション期間(日)の入力ができるようになりました。今回は90日を設定します。

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

保存をクリックすると、自動キーローテーションの設定が完了しました。次のローテーション日を確認すると、確かに90日後を指していますね。

自動キーローテーションが設定されたことを確認

なお、AWSマネージドキーの自動ローテーションの間隔は変更できません。注意しましょう。

AWSマネージドキー

オンデマンドキーローテーションの実行

みなさん、実は自動キーローテーションよりも、その下のオンデマンドキーローテーションの方が気になっていたのではないでしょうか。

その名の通り、任意のタイミングでキーローテーションできる機能です。手動でローテーションをする場合と異なりマネジメントコンソールから簡単にローテーションを行えます。

オンデマンドキーローテーションは自動ローテーションの有効/無効に関わらず、対称キーを任意のタイミングで最大10回ローテーションを行うことができます。

AWS公式ドキュメントには以下のような記載がありました。

How to perform on-demand key rotation

You can perform on-demand rotation of the key material in customer managed KMS keys, regardless of whether or not automatic key rotation is enabled. Disabling automatic rotation (DisableKeyRotation) does not impact your ability to perform on-demand rotations, nor does it cancel any in progress on-demand rotations. On-demand rotations do not change existing automatic rotation schedules. For example, consider a KMS key that has automatic key rotation enabled with a rotation period of 730 days. If the key is scheduled to automatically rotate on April 14, 2024, and you perform an on-demand rotation on April 10, 2024, the key will automatically rotate, as scheduled, on April 14, 2024 and every 730 days thereafter.

You can perform on-demand key rotation a maximum of 10 times per KMS key. You can use the AWS KMS console to view the number of remaining on-demand rotations available for a KMS key.

On-demand key rotation is supported only on symmetric encryption KMS keys. You cannot perform on-demand rotation of asymmetric KMS keys, HMAC KMS keys, KMS keys with imported key material, or KMS keys in a custom key store. To perform on-demand rotation of a set of related multi-Region keys, invoke the on-demand rotation on the primary key.

Authorized users can use the AWS KMS console and the AWS KMS API to initiate on-demand key rotation and view the key rotation status.

(以下機械翻訳)

オンデマンド・キー・ローテーションの実行方法

自動キー・ローテーションが有効になっているかどうかにかかわらず、カスタマが管理する KMS キーのキーマテリアルのオンデマンド・ローテーションを実行できます。自動ローテーションを無効化(DisableKeyRotation)しても、オンデマンド・ローテーショ ンの実行に影響はなく、実行中のオンデマンド・ローテーションがキャンセルされることもない。オンデマンド・ローテーションは、既存の自動ローテーション・スケジュールを変更しない。例えば、KMS鍵の自動ローテーションが有効で、ローテーション期間が730日であるとする。鍵の自動ローテーションが2024年4月14日に予定されている場合、2024年4月10日にオンデマンド・ローテーションを実行すると、鍵は予定どおり、2024年4月14日とその後730日ごとに自動的にローテーションする。

オンデマンド・ローテーションは、KMS キー 1 つにつき最大 10 回まで実行できる。AWS KMSコンソールを使用して、KMSキーで利用可能なオンデマンド・ローテーションの残り回数を表示できます。

オンデマンド鍵ローテーションは、対称暗号化 KMS 鍵でのみサポートされる。非対称KMS鍵、HMAC KMS鍵、インポートされたキーマテリアルを含むKMS鍵、カスタム・キーストアのKMS鍵については、オンデマンド・ローテーションを実行できない。関連するマルチリージョン鍵セットのオンデマンド・ローテーションを実行するには、プライマリ鍵のオンデマンド・ローテーションを起動する。

権限のあるユーザーは、AWS KMS コンソールと AWS KMS API を使用して、オンデマンド・ローテーションを開始し、キー・ローテーションのステータスを表示できる。

How to perform on-demand key rotation

KMSキー1つにつき最大10回までしか実行できないため、緊急用途で使用する形かと思います。普段の運用では自動キーローテーションを使用しましょう。

実際にやってみます。

今すぐローテーションをクリックすると、以下のように対象のKMSキーとローテーション後のオンデマンドローテーション可能回数が表示されます。

1回目のオンデマンドキーローテーション

キーをローテーションをクリックすると、10秒ほどでキーローテーションが完了しました。これは楽です。

残りのオンデマンドローテーションの数を確認すると、9件になりました。また、キーローテーション履歴に先ほどのローテーションしたタイミングが記録されています。

ローテーションが完了したことを確認

AWS CLIでも試してみましょう。

list-key-rotationsで現在のローテーション履歴を確認します。

$ aws kms list-key-rotations --key-id <KMS Key ID>
{
    "Rotations": [
        {
            "KeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS Key ID>",
            "RotationDate": 1712960475.243,
            "RotationType": "ON_DEMAND"
        }
    ]
}

先ほど1件ローテーションしたことが分かります。

それではrotate-key-on-demandでオンデマンドキーローテーションを行います。

$ aws kms rotate-key-on-demand --key-id <KMS Key ID>
{
    "KeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS Key ID>"
}

$ aws kms list-key-rotations --key-id <KMS Key ID>
{
    "Rotations": [
        {
            "KeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS Key ID>",
            "RotationDate": 1712960475.243,
            "RotationType": "ON_DEMAND"
        },
        {
            "KeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/<KMS Key ID>",
            "RotationDate": 1712960765.796,
            "RotationType": "ON_DEMAND"
        }
    ]
}

キーローテーションが完了し、キーローテーション履歴に記録されたことが分かります。

カスタマーマネージドキーのキーローテーションの運用がやりやすくなりました

KMSキーの自動ローテーション間隔を柔軟に変更できるようになった and ローテーションによるKMSキーの月額料金が最大3USDに設定されたアップデートを紹介しました。

カスタマーマネージドキーのキーローテーションの運用がやりやすくなりましたね。カスタマーマネージドキーを運用されている方には待望のアップデートかと思います。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!