·6 分鐘CI/CDGitHub Actions自動化
如何在部署管線中加入安全閘門(以GitHub Actions為例)
「部署前請確認」終究會被遺忘。教你5分鐘設定一個每次推送都自動攔截的閘門。
「下次一定會在部署前確認」——這個承諾通常撐不過第三次部署就被忘光了。依賴人的意志力做檢查,最終一定會失敗。答案是把檢查自動化,失敗時直接擋下部署本身。
為什麼「我會確認」注定失敗
忙碌的時候、趕時間的時候、週五下午要部署的時候——人就會跳過檢查清單。跳過一次沒事,下次就更容易跳過。這不是懶惰的問題,而是結構性問題。需要人每次都記得才能維持的規則,終究會被打破。
什麼是閘門
「閘門」很簡單:檢查失敗,就擋下合併(merge)或部署。 就算人忘記確認,管線也會代為擋下。要通過,唯一的方法就是真的修好問題。
在GitHub Actions中最精簡的做法
可以先在repo中新增一個.github/workflows/security.yml檔案開始。
name: security-gate
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run dependency audit
run: npm audit --audit-level=high光是這一步,含有高風險漏洞的PR在合併前就會顯示紅色X標記。 再加上機密資訊掃描、SAST(靜態分析)步驟,覆蓋範圍會更廣。
什麼該設成閘門
全部都擋下的話就沒人能部署了。請訂出優先順序。
- 一定要擋下:寫死的機密資訊、Critical/High等級的CVE
- 只顯示警告:Low/Medium等級、風格問題
- 逐步收緊:一開始只顯示警告,等團隊熟悉後再切換成擋下
放著誤判不管,閘門就會失去作用
如果閘門經常判斷錯誤,團隊就會覺得「又誤判了」,開始尋找繞過的方法(例如習慣性使用跳過檢查的旗標)。維持較低的誤判率是讓閘門長久有效的關鍵。若真有需要,請把例外明確列成清單管理——這比悄悄關掉檢查好得多。
WhiteHat Code只要連接GitHub儲存庫,就會在每次推送、PR時自動掃描,並依嚴重程度整理結果呈現。不用自己搭建閘門,就能立刻開始使用。