【发布时间】:2020-05-09 22:12:28
【问题描述】:
我的工作设置包括公司托管的 Github Enterprise Server 和 Azure Devops 管道。使用shields.io 之类的网站,我可以为构建成功或代码覆盖率生成徽章,似乎从未使用 DevOps 验证自己。然后徽章托管在 shields.io 上,这意味着这个第 3 方网站必须以某种方式访问我的构建过程。它们看起来像这样:
由于 github 以及所有构建管道显然都是公司内部的,我可以看到三个选项如何工作:
尽管管道和所有内容都是私有的,但构建成功状态是为整个 Web 公开托管的。这是设计使然,因为它并不真正被视为安全风险。知道我的内部项目的 Organization/ProjectName/DefinitionID 就没有别的办法了。
这不应该发生,并且配置有误。我的设置中可能存在漏洞。
正在进行某种我不知道的身份验证形式,例如只要我的浏览器登录到 Azure,我就只能看到徽章(不太可能,它似乎也可以在私有模式下工作)
我在网上或 stackoverflow 上找不到任何关于此的内容。我会很高兴看到任何解释这一点的资源,因为我不确定我是否可以安全地使用它们。使用 shields.io 是否存在安全风险?
【问题讨论】:
-
如果您访问 shields.io 上的 azure devops build badge 页面,它会要求提供项目 ID。大概这是私有的,并且提供此 id 可以验证您从 azure 接收构建状态。
-
项目ID似乎只是一个向上计数的计数器,我无法更改。由于这在现在是安全的,我无法想象它可以用作任何形式的身份验证。
-
在示例中我看到here(点击/azure-devops/build/:organization/:projectId/:definitionId),它是一个长字符串。但我只是猜测,所以我无法回答。 Travis CI 对私有存储库使用类似的策略。
-
shields.io 中的示例是错误的/过时的:只需传递项目名称而不是项目 ID 字样。
标签: github azure-devops devops shields.io