MENU

AWS Secrets Manager — 機密情報の保管とローテーションを担う

AWS Secrets Manager アイキャッチ
AWS Secrets Manager

AWS Secrets Managerは、AWSが2018年4月に提供開始したシークレット管理サービスで、データベースのパスワード・APIキー・OAuthトークンといった機密情報を安全に保管し、アプリケーションから取り出せるようにする仕組みです。中身はAWS KMSで暗号化されたうえでマネージドな保管庫に格納され、IAMポリシーで「どのIAMロールがどのシークレットを取得できるか」を厳密に制御できます。最大の特徴はRDS・Redshift・DocumentDB・自前リソースに対する自動ローテーション機能で、Lambda関数を介して定期的にパスワードを更新し、利用側のアプリは新しい値を都度Secrets Manager経由で取得する運用が標準化されました。

目次

この記事の目次

  1. 暗号化・参照・ローテーションの三層
  2. 2018年公開とローテーション機能の意義
  3. 現場での主な使われ方
  4. Parameter Store・HashiCorp Vaultとの比較
  5. まとめ

暗号化・参照・ローテーションの三層

暗号化・参照・ローテーションの三層

Secrets Managerはシークレットを保管する際、必ずAWS KMSのカスタマー管理鍵(CMK)またはAWS管理鍵で暗号化します。暗号化はエンベロープ暗号化方式で、シークレット本体はデータキーで暗号化し、データキーをCMKで暗号化する二段構成です。保存先はマネージドなストレージで、利用者がディスク・ファイルを直接見ることはありません。

アクセス制御はIAMポリシーで行い、secretsmanager:GetSecretValueの権限をどのIAMロール・ユーザーに付与するかでアクセス可否が決まります。シークレットには個別のリソースベースポリシーも設定でき、クロスアカウントの利用も可能です。ローテーションは設定した周期(30日・60日・カスタム)でLambda関数を起動し、現行→ペンディング→検証→確定の4ステップを経てパスワードを更新します。RDS・Redshift・DocumentDBには公式のローテーションテンプレートが提供されており、Lambda関数を1から書かずに導入できます。

2018年公開とローテーション機能の意義

2018年公開とローテーション機能の意義

Secrets Managerは2018年4月のAWS Summit San Franciscoで一般提供が発表されました。それまでAWSにはSystems Manager Parameter Storeという無料相当のキー・バリュー保管庫があり、SecureString形式で暗号化値も扱えました。ただし「ローテーション」「クロスアカウントのリソースポリシー」「マルチリージョン同期」といったエンタープライズ機能を補完するために、専用サービスとしてSecrets Managerが投入されました。

提供と同時にRDS用のローテーションテンプレートが公開されたのが大きな意義で、「DBパスワードは月1回自動更新が当然」という運用モデルがAWS上で実現可能になりました。2021年にはマルチリージョン・レプリケーション機能が追加され、DR(災害復旧)構成でも同じシークレットを別リージョンで参照できます。2023年以降はParameter Storeとの同期機能、Lambda Layersでのキャッシュ実装、Kubernetes向けのSecrets Store CSI Driver連携など、利用シーンの広がりに合わせて機能が拡張されています。

現場での主な使われ方

現場での主な使われ方

Secrets Managerの定番用途は、RDSや自社運用DBのパスワード保管とローテーションです。アプリケーションは起動時または接続時にGetSecretValueを呼び出し、毎回最新のパスワードを取得することで、ローテーションがあっても再デプロイ無しに新パスワードに追随できます。Stripe・SendGrid・OpenAIなど外部サービスのAPIキーも、ハードコーディングを避けてSecrets Managerに置き、ロールベースでアクセス制御するのが現代の標準です。

ECSタスク定義のsecretsフィールド、EKSのSecrets Store CSI Driver、Lambdaの環境変数とSDKでの取得などを通じて、コンテナ・サーバレスアプリへ機密情報を注入する経路が整っています。クロスアカウント参照を使えば、複数AWSアカウントから1つのシークレットを共有でき、組織横断的なシークレット管理が可能になります。GitHub Actionsやその他CIから一時的にOIDC経由でIAMロールを引き受け、Secrets Managerから値を取得してビルド・デプロイに使うパターンも、CIシークレットの安全な扱い方として広く採用されています。

Parameter Store・HashiCorp Vaultとの比較

Parameter Store・HashiCorp Vaultとの比較

Parameter StoreはSystems Managerの一機能として無料で使えるキー・バリューストアで、SecureString形式でKMS暗号化値も保管できますが、ローテーション機能が標準では用意されていません。シンプルな設定値や軽い秘密情報ならParameter Store、ローテーションを必須とするDBパスワードやAPIキーならSecrets Manager、という棲み分けが一般的です。

HashiCorp Vaultはマルチクラウド・オンプレでも動く自前運用の高機能シークレット管理ツールで、ダイナミックシークレット生成や複雑なポリシーエンジンを持ちます。ただし自前で運用する分の負担が大きく、AWSに閉じた小〜中規模システムではSecrets Managerが実装コストの低さで選ばれます。DopplerなどのSaaS型シークレット管理も台頭していますが、AWSのIAM・KMSと最も自然に統合され、ローテーション含めた運用を完結できる選択肢として、Secrets ManagerはAWS環境のデファクトに位置付いています。

まとめ

AWS Secrets Managerは2018年提供開始のシークレット管理サービスで、KMS暗号化・IAM制御・自動ローテーションを軸にしています。RDS用テンプレートやマルチリージョン同期、Kubernetes連携など、エンタープライズ運用に必要な機能が整い、機密情報のハードコーディングを避ける標準ルートになりました。Parameter StoreやVaultと棲み分けつつ、AWS環境では機密情報管理の第一選択肢として広く採用されています。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次