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の鍵に関するもの。
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日に一度の更新はひとつの目安として良さそう。
今回調査するにあたり以下の記事を大いに参考にさせていただいた。
このブログ記事はThe SSL Store という海外にあるドメイン版価格.comみたいなところの記事で信憑性は高そう。また、他にもSSHキーのベストプラクティスがいろいろ載っているので興味のある方はどうぞ。
reference: