对于公共存储库,在github操作中,假设我的操作在azure中的计算机上运行。如果CI管道必须以天蓝色运行,我对如何保护天蓝色auth详细信息感到困惑。
让我们说要使用此操作,我必须使用一个秘密,然后将环境变量的值设置为秘密-我是否没有失去拥有秘密的意义?恶意用户可以发送PR,打印环境变量的值:
user_password: {{secret.USER_PASSWORD}}
用户代码:
print(os.environment['user_password'])
由于工作流程是公开的,因此恶意用户不必猜测,他知道哪个环境变量具有机密。
我在哪里错了?
答案 0 :(得分:3)
GitHub与其他CI提供程序一样,删除了日志中的大多数机密。它考虑多种格式并尝试清除它们。但是,一般来说,您应该小心避免将它们打印到日志中,因为没有一个系统能做到万无一失,而且并不是所有可能的编码都可以考虑。
如果您担心分叉的存储库试图访问您的机密,请they can't;由于您所描述的原因,这是明确不允许的。因此,如果某人针对您的存储库打开了PR,则除非分支位于您的存储库中,否则他们将无法访问机密(在这种情况下,请勿授予该人对您的存储库的写访问权限)。假定您将执行基本代码审查以在合并之前捕获任何恶意代码,因此不良行为者将无法使用存储库的机密信息运行任何代码。
但是,通常,假设正在运行的系统和程序是受信任的,使用环境变量作为将机密传递给程序的方法是最佳实践。系统上的其他用户看不到环境,并且在CI系统中,系统和程序被认为是受信任的。