shibatch's journey

日々考えていることをつらつら書くだけです

RSA暗号のキーペアはどの程度の頻度でローテーションするべきか

CloudFrontには署名付きURLを発行する機能がある。これはRSA暗号のキーペアを用いて期限付きのURLを発行する機能で、手元に秘密鍵、CloudFrontに共通鍵を置いて、たとえば以下のようなコマンドで発行することができる。

aws cloudfront sign --url https://XXXXXXXX.cloudfront.net/backet_name/dummy.data \
--key-pair-id ********* \
--private-key file://private_key.pem \
--date-less-than 2023-01-31T20:30:00+09:00

さてこのようなキーペアをつかった認証方式はAWSのドキュメントをみると定期的に更新 (変更) することをお勧めします書いてある。定期的って何よ、どの程度なの…??という疑問があがったので調べてみた。

日本語の文献ではこれ!!というベストプラクティスはなかったけれども、海外の文献だと2パターン見つかったのでここに紹介する。どちらもSSHの鍵に関してだけれども、RSA暗号のキーペアと広げてみてもよさそう。

12ヶ月ローテーション説

これは米NIST(米国立標準技術研究所 - セキュリティの勉強をすると1度は聞く名前)が2013年に発行したドラフト版の勧告に書いてある、SSHの鍵に関するもの。

datatracker.ietf.org

2013年なので古い上にExpires: October 06, 2013 となっていてどこまで参考にするかはなかなか難しいところはあるけれど、以下のように書いてある。

Authentication credentials for all trust relationships leading to moderate-impact and high-impact systems MUST be rotated every 12 months, and it is RECOMMENDED that trust relationships leading to low-impact systems be rotated every 12 months.

ざっくり言うとシステムの重要度によって差はあるけど12ヶ月に1度は更新しなさいよ、ということ。

45日〜30日ローテーション説

これはトレンドマイクロが出しているAWS IAM Best Practicesに書かれているもの。 3パターンが書いてあり、90日だと「許容できないリスク(not acceptable risk)」であり、45日は「達成されなければならない(should be achieved)」、30日は「許容範囲内(generally tolerable level of risk)」となっている。

こちらはIAMのアクセスキーの管理に関するベストプラクティスで、割と新しめで、パブリッククラウドで使う鍵の管理として参考にできそうな値である。

結局どうすればいいの

2つの説を紹介したけれど、12ヶ月or45日〜30日 とかなり幅がある。これはこの10年の間でプラットフォームを取り巻く環境が変わり、所有しているサーバへのログイン→パブリッククラウドを用いた構成 に変遷していることは無関係ではなさそう。 結局扱っているサーバの重要度次第なところはあるけれど、トレンドマイクロの基準はIAMだけではなくて割と汎用的に使える考え方ではないかなぁと思ったのでパブリッククラウドで扱う場合は45日〜30日に一度の更新はひとつの目安として良さそう

今回調査するにあたり以下の記事を大いに参考にさせていただいた。

www.thesslstore.com

このブログ記事はThe SSL Store という海外にあるドメイン価格.comみたいなところの記事で信憑性は高そう。また、他にもSSHキーのベストプラクティスがいろいろ載っているので興味のある方はどうぞ。

reference: