繁体   English   中英

如何在 github 动作中使用秘密而不泄露秘密

[英]how to use secrets in github actions without revealing the secret

对于公共存储库,在 github 操作中,假设我的操作在 azure 中的计算上运行。 如果 CI 管道必须在 azure 中运行,我对如何保护 azure 身份验证详细信息感到困惑。

假设要使用此操作,我必须使用一个秘密,并且我将环境变量的值设置为秘密 - 我没有失去拥有秘密的意义吗? 恶意用户可以发送打印环境变量值的 PR:

user_password: {{secret.USER_PASSWORD}}

用户代码:

print(os.environment['user_password'])

恶意用户不必猜测,因为工作流程是公开的,并且他知道哪个 env var 拥有秘密。

我哪里错了?

GitHub 与其他 CI 提供者一样,会从日志中编辑大部分机密。 它考虑了多种格式并尝试对它们进行清理。 但是,一般来说,您应该小心避免将它们打印到日志中,因为没有系统是万无一失的,也不是所有可能的编码都可以考虑。

如果您担心分叉的存储库会尝试访问您的秘密, 那么他们就不能 由于您描述的原因,这是特别不允许的。 因此,如果有人针对您的存储库打开 PR,除非分支位于您的存储库中,否则他们将无法访问机密(在这种情况下,不要授予该人对您的存储库的写入权限)。 假设您将在合并之前执行基本的代码审查以捕获任何恶意代码,因此不良行为者将无法使用您的存储库的机密运行任何代码。

不过,一般来说,假设正在运行的系统和程序是受信任的,那么使用环境变量作为向程序传递秘密的一种方式是一种最佳实践。 系统上的其他用户无法看到环境,并且在 CI 系统中,系统和程序被假定为受信任的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM