- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于公共(public)存储库,在 github 操作中,假设我的操作在 azure 中的计算上运行。如果 CI 管道必须在 azure 中运行,我对如何保护 azure 身份验证详细信息感到困惑。
假设要使用此操作,我必须使用 secret ,并将环境变量的值设置为 secret - 我是否失去了拥有 secret 的意义?恶意用户可以发送打印环境变量值的 PR:
user_password: {{secret.USER_PASSWORD}}
用户代码:
print(os.environment['user_password'])
恶意用户不必猜测,因为工作流程是公开的,并且他知道哪个环境变量拥有 secret 。
我哪里错了?
最佳答案
与其他 CI 提供商一样,GitHub 会编辑日志中的大部分 secret 。它考虑了多种格式并尝试清理它们。但是,一般来说,您应该小心避免将它们打印到日志中,因为没有系统是万无一失的,并且并非可以考虑所有可能的编码。
如果您担心 fork 存储库试图访问您的 secret ,they can't ;由于您所描述的原因,这是特别不允许的。因此,如果有人针对您的存储库打开 PR,他们将无法访问 secret ,除非分支位于您的存储库中(在这种情况下,不要授予该人对您的存储库的写入权限)。假定您将在合并之前执行基本的代码审查以捕获任何恶意代码,因此不良行为者将无法使用您的存储库的 secret 运行任何代码。
不过,一般来说,假设正在运行的系统和程序是可信的,则使用环境变量作为将 secret 传递给程序的方式是最佳实践。系统上的其他用户无法看到该环境,并且在 CI 系统中,系统和程序被假定为可信的。
关于github - 如何在 github 操作中使用 secret 而不泄露 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63080133/
我是一名优秀的程序员,十分优秀!