Cap*_*row 2 github github-actions
对于公共存储库,在 github 操作中,假设我的操作在 azure 中的计算上运行。如果 CI 管道必须在 azure 中运行,我对如何保护 azure auth 细节感到困惑。
让我们说要使用这个动作,我必须使用一个秘密,我将一个环境变量的值设置为秘密 - 我没有失去拥有秘密的意义吗?恶意用户可以发送打印环境变量值的 PR:
user_password: {{secret.USER_PASSWORD}}
Run Code Online (Sandbox Code Playgroud)
用户代码:
print(os.environment['user_password'])
Run Code Online (Sandbox Code Playgroud)
恶意用户不必猜测,因为工作流程是公开的,并且他知道哪个 env var 拥有秘密。
我哪里错了?
与其他 CI 提供商一样,GitHub 会从日志中删除大部分机密。它考虑了各种格式并尝试清理它们。但是,一般来说,您应该小心避免将它们打印到日志中,因为没有系统是万无一失的,也不是所有可能的编码都可以考虑。
如果您担心分叉存储库试图访问您的机密,他们不能;由于您描述的原因,这是特别不允许的。因此,如果有人针对您的存储库打开 PR,除非分支在您的存储库中,否则他们将无法访问机密(在这种情况下,不要授予该人对您的存储库的写访问权限)。假设您将在合并之前执行基本的代码审查以捕获任何恶意代码,因此不良行为者将无法运行任何带有存储库机密的代码。
但总的来说,假设运行的系统和程序是可信的,使用环境变量作为向程序传递机密的方式是最佳实践。系统上的其他用户无法看到环境,而在 CI 系统中,系统和程序被认为是可信的。
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |