AWS Secrets Manager と Parameter Store

AWS データストアの活用

Dunieski Otano

AWS Solutions Architect

パスワードの直接記述による被害

  • 開発者がデータベースのパスワードをコードに直接記述
  • コードをパブリックな GitHub リポジトリにプッシュ
  • 攻撃者が12分でパスワードを発見
  • データベースが消去され、身代金を要求される

攻撃

AWS データストアの活用

シークレットを直接記述してはいけない理由

  • よくある間違い
    • ソースコードへの直接記述
    • 設定ファイルへの平文記録
    • バージョン管理へのコミット
  • 結果
    • パブリックリポジトリでの漏洩
    • ローテーションが困難
    • 監査ログが残らない

禁止

AWS データストアの活用

AWS Secrets Manager の概要

  • 目的
    • 認証情報の保存と自動ローテーション
  • 保存対象
    • データベースパスワード、API キー、OAuth トークン
  • 主な機能
    • 自動ローテーション、KMS 暗号化、監査ログ

sm

AWS データストアの活用

Secrets Manager の自動ローテーション

  • ローテーションの仕組み
    • Lambda 関数が認証情報を更新
  • ローテーションのタイミング
    • 実行タイミングを設定(rate または cron)
  • ゼロダウンタイム
    • ローテーション中は新旧両方のパスワードが有効

ローテーション

AWS データストアの活用

JSON 形式でシークレットを保存する

  • 構造化されたシークレット
    • 1つのシークレットに複数の値を保存
  • JSON 形式
    • {"username": "admin", "password": "...", "host": "db.example.com"}
  • 取得とパース
    • GetSecretValue API を使用

取得

AWS データストアの活用

Parameter Store の概要

  • 所属 AWS Systems Manager
  • 目的
    • 設定情報と静的シークレットの保存
  • 階層的な構成
    • /app/prod/db/password
    • /app/dev/api-key
  • 無料枠
    • 標準パラメータ最大10,000件(最大4 KB)
    • 高度なパラメータ(最大8 KB)は有料

ps

AWS データストアの活用

Parameter Store のパラメータタイプ

  • String
    • 平文の設定情報(機能フラグ、エンドポイントなど)
  • StringList
    • カンマ区切りの値(IP アドレスなど)
  • SecureString
    • KMS で暗号化(パスワード、API キーなど)

タイプ

AWS データストアの活用

Secrets Manager vs Parameter Store 選択ガイド

  • Secrets Manager を使う場面
    • 自動ローテーションが必要な場合
    • データベース認証情報を保存する場合
  • Parameter Store を使う場面
    • 静的な設定値を扱う場合
    • コストを抑えたい場合(無料枠あり)
  • 両方を組み合わせる
    • 本番環境でよく使われるパターン

高度な設定

AWS データストアの活用

練習しましょう!

AWS データストアの活用

Preparing Video For Download...