Docker 使用单独的凭据进行推送和拉取

Div*_*yas 5 authentication docker docker-swarm

出于安全原因,我试图为 docker 注册表创建单独的推送和拉取。是否可以在任何容器注册表中创建它。

vit*_*itr 3

Docker Registry 2.0 引入了一种新的、基于令牌的身份验证和授权协议。如果您对 docker 注册表使用基于令牌的身份验证,则支持 ACL 。您可以使用这样的预构建 ACL 解决方案https://github.com/cesanta/docker_auth。\n它提供细粒度的 ACL 规则,例如

\n\n
acl:\n  - match: {account: "admin"}\n    actions: ["*"]\n    comment: "Admin has full access to everything."\n  - match: {account: "user"}\n    actions: ["pull"]\n    comment: "User \\"user\\" can pull stuff."\n  # Access is denied by default.\n
Run Code Online (Sandbox Code Playgroud)\n\n

查看完整示例https://github.com/cesanta/docker_auth/blob/master/examples/simple.yml

\n\n

对于您的场景,您可以创建两个仅具有推送和拉取权限的用户,然后以适当的用户身份登录以执行操作(推送或拉取)。

\n\n

如果您使用 Docker Hub,则已经有针对组织的 ACL。

\n\n
\n

Docker Hub 组织允许您创建团队,以便您可以授予同事访问共享映像存储库的权限。Docker Hub 组织可以包含公共和私有存储库,就像用户帐户一样。访问通过定义用户团队然后将团队权限分配给特定存储库来分配对这些存储库的存储库创建仅限于\n 组织所有者\xe2\x80\x99s 组中的用户。这允许您分发有限访问的 Docker 映像,并选择哪些 Docker Hub 用户可以发布新映像。

\n
\n\n

https://docs.docker.com/docker-hub/orgs/#repository-team-permissions

\n\n
\n

权限是累积的。例如,如果您拥有写入\n 权限,则您将自动拥有读取权限:

\n\n
    \n
  • 读取访问权限允许用户以与公共存储库相同的方式查看、搜索和拉取私有存储库。

  • \n
  • 写访问权限允许用户推送到 Docker Hub 上的非自动化存储库。

  • \n
  • 管理员访问权限允许用户修改存储库 \xe2\x80\x9cDescription\xe2\x80\x9d、\xe2\x80\x9cCollaborators\xe2\x80\x9d 权限、\xe2\x80\x9cPublic/Private\xe2\x80\x9d 可见性\n 和 \xe2\x80\x9c 删除\xe2\x80\x9d。

  • \n
\n
\n\n

在您的场景中,您必须至少有两个注册集线器用户,其中一个用户可以是具有只读权限的团队的成员,另一个用户可以是具有写入权限的团队的成员(并且自动读取)访问权限的团队成员。

\n\n
\n

注意:尚未验证其电子邮件地址的用户仅拥有存储库的读取权限,无论其团队成员身份赋予他们什么权限。

\n
\n