gh action 和 cf worker 这些平台的 secret 环境变量存在意义是什么

342 天前
 Tyris

请教一下大家:

如果有坏人成功登录了我的账号,在设置界面看不到我 secret 里面的内容。 可是 secret 对脚本是透明的,别人随便加句打印语句不就知道了吗? 那用 secret 比用明文安全在哪里呢?

967 次点击
所在节点    问与答
12 条回复
LxnChan
342 天前
公开仓库是看不到的
Tyris
342 天前
@LxnChan 是看不到,但,比如我有一个叫`MY_SEC`的 secret ,如果别人在我 workflow 里加一句 bash `echo $MY_SEC` ,在输出的 log 里不就看到了
julyclyde
342 天前
@Tyris 为什么你的 workflow 可以被别人加呢?
krixaar
342 天前
就安全在别人不盗你的号看不到,仅此而已。你号都能被盗了还谈什么安全。
caomingjun
342 天前
@Tyris 直接 echo 是不行的,会变成星号,但是可以输出 base64 啥的
这个的设计的目的之一是,一些组织 /公司内部有专门的凭据管理人员,非凭据管理人员不应该看到凭据,即使他们可能有读取甚至读写仓库的权限。在这种情况下虽然开发可以进行你所说的攻击,但是显然是可以被追责的。在 GitHub 上还有一个目的,公开仓库是向所有人公开 Actions logs 的(不需要登陆仓库所有者的账号,所有人都能看到),可以对他们隐藏 secret 。
另外,即使是攻击者能够更改和运行 workflow ,他也会留下记录,凭据所有者可以比较及时地发现并重置凭据,而如果不用 secret 攻击者可以直接把凭据复制走,没有任何记录,可能引发了重大安全事故你才发现。
Tyris
342 天前
@caomingjun 刚刚去试了一下,无论是 echo,xz,base64 或者 python -c "print (\"$MY_SEC\")"的输出都会打马。不过先写到文件,再 upload-artifact 传出来的密码是完整的。
caomingjun
342 天前
@Tyris 哦 base64 也就不行了啊,我才知道。打星号的机制的目的本来就是防止你意外泄漏,对攻击是没办法的,只能靠日志去查。
不过鉴于 commit 不会记录进安全日志,攻击者是可以删掉 commit 记录和 action 运行记录的,只能说用 2FA 保护好你的账户了。
finab
342 天前
我的一个 github 项目需要用 action 编译上传到商店。
过程中需要使用证书、秘钥之类的东西,不能直接放到仓库里,放到 secret 里正好合适
0o0O0o0O0o
342 天前
为了不让别人可以修改运行你的 actions ,github actions 新增了很多限制,例如 https://github.com/<owner>/<repo>/settings/actions

- Actions permissions: 防止恶意 workflows 供应链攻击
- Fork pull request workflows from outside collaborators: 之前就出过这样的漏洞利用
- Workflow permissions: 缓解措施,就算是被黑了,让伤害尽量小
Trim21
342 天前
不知道 cf worker 啥样,单说 gh action

secrets 的设计就不是在“坏人成功登录了我的账号”这个前提下工作的...

首先 PR 的 workflow run 是读不到你 repo 的 secrets ,能读到 secrets 的 workflow 必需在你仓库里。也就是说要么是你合并了别人的 PR ,要么是其他有写权限的人提交到你的仓库里。

一个简单地而例子,你的 actions 要推 docker 镜像到 docker hub ,你总不能把 docker hub 的 token 明文写在 workflow 里面吧。

这种时候用 secrets ,只要你自己不加 echo 语句,upload-artifact 之类的骚操作,不把泄漏 secrets 的 PR 合并进你的仓库,不给你不信任的人 write 权限,你的 docker hub token 就不会泄漏。
lambdaq
341 天前
这个意义就是给直接复制粘贴增加一丁点门槛。
shyling
341 天前
secret 是为了能看 build logs 的前提下保密,你账号都没了,咋样都泄露了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/942174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX