なぜ鍵管理が重要なの?
どんなに強い暗号アルゴリズムも、鍵が漏洩したら意味がない。ソースコードにAWSのシークレットキーをハードコードしてGitHubにpushしてしまう事故は毎日起きている。暗号の強度はアルゴリズムではなく鍵管理で決まるんだ。「暗号は簡単、鍵管理が難しい」はセキュリティの格言だよ
AWS KMSって何?
AWSのKey Management Service。暗号鍵の生成・管理をAWSがやってくれるマネージドサービス。鍵はHSM(耐タンパー性を持つ専用ハードウェア)内で保護され、外部に取り出せない。S3の暗号化、RDSの暗号化、Secrets Managerとの連携など、AWSサービス全体で統合的に使えるのが便利だよ
鍵のローテーションは必要?
必須だよ。定期的に鍵を新しくすることで、万一漏洩した場合の被害を限定できる。AWS KMSは年1回の自動ローテーション設定が可能。PCI DSSでは暗号鍵の定期ローテーションが義務。古い鍵で暗号化されたデータは新しい鍵で再暗号化するか、古い鍵を一定期間保持して復号に使うんだよ
開発者が気をつけることは?
①絶対にソースコードに鍵を書かない(環境変数かSecrets Managerを使う)、②.envファイルを.gitignoreに必ず入れる、③git-secretsでコミット時に鍵の混入を検知、④Vaultなどのシークレット管理ツールを使う、⑤本番と開発で鍵を分離する。GitHub Secret Scanningが有効なリポジトリではpushした瞬間にAWSキーが自動失効するよ