AWS Secrets Manager 與 Parameter Store

在 AWS 中使用資料儲存服務

Dunieski Otano

AWS Solutions Architect

硬編碼密碼的災難

  • 開發者把資料庫密碼硬編碼在程式碼中
  • 程式碼推到公開 GitHub 儲存庫
  • 攻擊者 12 分鐘內就找到密碼
  • 資料庫被清空並遭勒索

攻擊示意

在 AWS 中使用資料儲存服務

為何絕不該硬編碼機密

  • 常見錯誤
    • 寫死在原始碼
    • 以純文字放在組態檔
    • 送交到版本控制
  • 後果
    • 暴露於公開儲存庫
    • 難以輪替
    • 缺少稽核軌跡

不要這樣做

在 AWS 中使用資料儲存服務

AWS Secrets Manager 概觀

  • 目的
    • 集中儲存並自動輪替憑證
  • 可儲存內容
    • 資料庫密碼、API 金鑰、OAuth 權杖
  • 重點功能
    • 自動輪替、KMS 加密、稽核紀錄

Secrets Manager

在 AWS 中使用資料儲存服務

Secrets Manager 自動輪替

  • 輪替流程
    • 由 Lambda 函式更新憑證
  • 輪替視窗
    • 設定輪替時間(rate 或 cron)
  • 零停機
    • 輪替期間新舊密碼皆可用

rotation

在 AWS 中使用資料儲存服務

以 JSON 格式儲存機密

  • 結構化機密
    • 多個值放在同一個 secret
  • 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)需付費

Parameter Store

在 AWS 中使用資料儲存服務

Parameter Store 參數型別

  • String
    • 純文字組態(功能旗標、端點)
  • StringList
    • 以逗號分隔的值(IP 位址)
  • SecureString
    • 以 KMS 加密(密碼、API 金鑰)

參數型別

在 AWS 中使用資料儲存服務

Secrets Manager 與 Parameter Store 選用指南

  • 使用 Secrets Manager 當
    • 需要自動輪替
    • 儲存資料庫憑證
  • 使用 Parameter Store 當
    • 靜態組態值
    • 成本敏感(有免費額度)
  • 同時搭配使用
    • 生產環境常見做法

進階模式

在 AWS 中使用資料儲存服務

一起來練習吧!

在 AWS 中使用資料儲存服務

Preparing Video For Download...