iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
DevOps

不僅是程式碼代管平台 - Github 能做些什麼?系列 第 23

GitHub Action Security - 小心 workflow 洩漏敏感資訊

還記得我們在 GitHub Action Automation - 自動化你的管理程序與使用第三方 Action 內有稍微提到,雖然使用已經做好的**第三方 Action (Third-Party Action)**可以節省不少時間,但需要謹慎小心。在這一篇文章,我們將延伸這個主題,簡單說明如何防止 workflow 洩漏敏感資訊。

或許你認為洩漏 Read Only Permission 的 Secret 或 某些執行 Log 無傷大雅,但實際上很多惡意攻擊行為是透過收集相關資訊,最後彙整找出可能弱點進行攻擊,而非直接的帳號密碼破解。透漏的資訊越少,會更加安全。


如何保護你的 GitHub Action

  1. 盡可能將 Credentials, Passowrd, API Key 等 Secret 註冊在 Repository Secrets。 GitHub Secret 是加密的環境變數,有權限的協作人員可以直接使用這個變數進行秘密操作 (不會明碼顯示,透過變數操作);Secret 也不會因為 fork 後建立 pull request 而將 Secret 傳入 workflow。 Secret 使用方法請參考:GitHub Action YAML 撰寫技巧 - 環境變數(Environment Variables) 與 秘密 (Secrets)

如下圖所示,你無法檢視其 Secret 內容,若遺忘了只能移除或更新
https://ithelp.ithome.com.tw/upload/images/20210923/20091494QnL94ugbKp.png

  1. 定時檢視 Secrets 使用情況,若沒有使用則移除,維持必要的資訊即可

  2. 限制只能使用 GitHub/已驗證作者 所製作的 Action。通常我們建議不使用來路不明的 Action,你可以在 Repo > Settings > Actions > Actions permissions 設定中,選擇 Allow select actions。
    https://ithelp.ithome.com.tw/upload/images/20210923/20091494c0tmHxH3wb.png

  3. 使用固定版本的 Action,並且 Code Review 第三方 Action 內容,確認沒有不必要行為在 Action 內,如:大量將執行過程或Secrets,進行印出或寫入檔案的動作。多數 Action 可以在 marketplace 上找到作者的 Github,進而 Review。
    https://ithelp.ithome.com.tw/upload/images/20210923/20091494pwm4qySbie.png

  4. 檢視自己的 workfolw 執行紀錄,確定 Secret 有進行隱碼 (使用 Repository Secrets 的效果)
    https://ithelp.ithome.com.tw/upload/images/20210923/20091494YCxDWfTm05.png


閱讀完本篇文章,你應該對於如何保護你的 GitHub Action 有一定程度的了解,並且有能力建立具有安全性的 workflow。若喜歡我的文章,歡迎點 like, 分享與訂閱。


上一篇
GitHub Advanced Security - 秘密掃描 (Secret Scanning)
下一篇
GitHub Account Security - 立刻啟用 Two-factor authentication
系列文
不僅是程式碼代管平台 - Github 能做些什麼?30

尚未有邦友留言

立即登入留言