專案

一般

配置概況

動作

Hotfix #1315

進行中

[Hotfix] 清除 production config 中的 secrets(AWS S3 / DB / LINE)並改用 env var

是由 陳國瑋約 2 個月 前加入.

狀態:
New
優先權:
Immediate
被分派者:
開始日期:
2026-06-10
完成日期:
完成百分比:

0%

預估工時:

概述

問題

java/conf/production/application.properties 內含敏感資訊(AWS access key/secret、DB 密碼、LINE channel token/secret),目前跟著 git 進版控,git log 可追到 7f80281d 等多個 commit(包含 rotate 過的舊 key)。

影響

  • AWS access key 可直接存取 shuxinclinic-hm-storage bucket(ap-northeast-1)
  • DB 密碼可直接連 172.31.45.86:3306
  • LINE channel token/secret 可偽造官方帳號發訊

建議修法

  1. 立即在 AWS console rotate 該 IAM key,產生新 key 後 revoke 舊的
  2. 把 production config 改成 template:application.properties.template 進版控、實際 application.properties 加進 .gitignore
  3. application.properties@Value 從 env var 讀:${AWS_ACCESS_KEY_ID} 取代寫死
  4. 部署用 docker run -e AWS_ACCESS_KEY_ID=... 傳入,或用 AWS Secrets Manager
  5. 考慮改用 IAM role(如果容器在 EC2/ECS 跑,可掛 role 拿 STS token)

範圍

  • java/conf/production/application.properties(commit 在 git history)
  • README2.md 提到部署是 Jenkins + AWS LB,需檢查 Jenkins 環境是否已有 env var 可用

驗證

  • rotate 後用舊 key push S3 應失敗
  • git history 內 git log -p -- java/conf/production/application.properties 還能查到舊值(無法真正抹除,除非用 BFG / filter-repo 強制重寫 history 並 force push — 評估代價)

沒有任何資料可供顯示

動作

匯出至 Atom PDF