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, 分享与订阅。


<<:  大人也舍不得离开的公园 — 共融游乐场 Inclusive Playground

>>:  Kotlin Android 第18天,从 0 到 ML - View Binding

【Day 11】For 回圈

前言 今天要来介绍一点 for 回圈,因为接下来的 list 会用到!会介绍一些基本的 for 的用...

Day 05-撰文在疫苗发作时,之module 是 terraform 执行与调用的基本单位

module 是 terraform 执行与调用的基本单位。本章简单介绍 module 的内容与使用...

部署 Kolla-Ansible 使用 External Ceph

在部署 Kolla-Ansible 时,虽然能够同时部署 Ceph Cluster,但是在一些情况下...

Day-22 常用System Call

常用System Call tags: IT铁人 前面提到了OS会提供许多API给User执行,让U...

[Day28]C# 鸡础观念- 物件导向(oop)~ 继承(Inheritance)

在人类中,基因肯定是世世代代在传承, 下一代除了接收了上一代的基因之外, 可能还会偷偷的进化, C#...