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

时间:2020-07-24 19:14:37

标签: github github-actions

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

让我们说要使用此操作,我必须使用一个秘密,然后将环境变量的值设置为秘密-我是否没有失去拥有秘密的意义?恶意用户可以发送PR,打印环境变量的值:

user_password: {{secret.USER_PASSWORD}}

用户代码:

print(os.environment['user_password'])

由于工作流程是公开的,因此恶意用户不必猜测,他知道哪个环境变量具有机密。

我在哪里错了?

1 个答案:

答案 0 :(得分:3)

GitHub与其他CI提供程序一样,删除了日志中的大多数机密。它考虑多种格式并尝试清除它们。但是,一般来说,您应该小心避免将它们打印到日志中,因为没有一个系统能做到万无一失,而且并不是所有可能的编码都可以考虑。

如果您担心分叉的存储库试图访问您的机密,请they can't;由于您所描述的原因,这是明确不允许的。因此,如果某人针对您的存储库打开了PR,则除非分支位于您的存储库中,否则他们将无法访问机密(在这种情况下,请勿授予该人对您的存储库的写访问权限)。假定您将执行基本代码审查以在合并之前捕获任何恶意代码,因此不良行为者将无法使用存储库的机密信息运行任何代码。

但是,通常,假设正在运行的系统和程序是受信任的,使用环境变量作为将机密传递给程序的方法是最佳实践。系统上的其他用户看不到环境,并且在CI系统中,系统和程序被认为是受信任的。