【问题标题】:dockerhub automated builds - broad github permissions required?dockerhub 自动构建 - 需要广泛的 github 权限?
【发布时间】:2020-03-05 22:28:49
【问题描述】:

我希望在 Dockerhub 上测试自动化容器构建,我发现我需要将我的 github 帐户链接到我的 hub.docker.account。
但是,当我点击“连接”按钮时,我会进入一个 github 授权页面,上面写着:

Docker Hub Builder by docker wants to access your larryms account

Repositories
Public and private
This application will be able to read and write all public and private repository data. 
This includes the following:

- Code
- Issues
- Pull requests
- Wikis
- Settings
- Webhooks and services
- Deploy keys
- Collaboration invites

这似乎过于宽容和过于宽泛;如果我理解正确,我需要授予 Docker Hub Builder 对 all 我的 github 存储库(公共和 私有)的读取和 write 访问权限.

有没有办法使用最小权限原则来做到这一点,例如只授予 Docker Hub Builder 必要的权限(希望是只读的)只授予特定 github repos?

【问题讨论】:

  • AFAIK 这是由于 GitHub 管理 OAuth 权限的方式以及它们允许的粒度。有关详细信息,请参阅developer.github.com/apps/building-oauth-apps/…。如果不授予写入权限,就不可能授予私有仓库的读取权限。
  • 有点复杂,但解决这个问题的一种方法是将特定用户添加到您的 GitHub 组织,仅授予他们对相关存储库的 READ 访问权限。然后,在将您的 dockerhub 帐户连接到 GitHub 时,使用此用户登录,并批准所需的范围。即使范围非常广泛,访问权限仍将绑定到您的用户在您的组织中拥有的实际权限。
  • @AntonDrukh,感谢您提供服务帐户的想法。同意这有点令人费解,但它似乎确实解决了问题。
  • 谢谢,我会发布这个作为答案!

标签: docker dockerhub


【解决方案1】:

GitHub 上的 OAuth 范围确实很广(请参阅 https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes,在不授予写入权限的情况下您无法授予读取权限)。但是,范围与用户对相关存储库的实际权限一起应用。也就是说,如果用户只有对 repo X 的读取权限,并且用户向 dockerhub 授予了具有读写范围的 oauth 令牌,则 dockerhub 将只能代表该用户从 repo X 中读取。如果用户稍后获得对 repo X 的管理员访问权限,则已授予的访问令牌将不允许管理员访问,因为令牌的范围仅允许读取和写入访问权限。

考虑到这一点,您可以在您的 github 组织中为 dockerhub 创建一个专用用户,并授予该用户对相关存储库的读取权限。然后使用该用户将 dockerhub 连接到您的 github 帐户,授予对所选 repos 的只读访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2016-08-19
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 2015-04-30
    相关资源
    最近更新 更多