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

时间:2018-05-04 04:20:00

标签: docker authentication docker-swarm

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

1 个答案:

答案 0 :(得分:1)

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

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

请参阅完整示例https://github.com/cesanta/docker_auth/blob/master/examples/simple.yml

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

如果您使用Docker Hub,那么组织已经有了一些ACL。

  

Docker Hub组织可让您创建团队,以便您可以提供   同事访问共享图像存储库。 Docker Hub   组织可以包含公共和私有存储库,就像一个   用户帐号。对这些存储库的访问推送是   通过定义用户团队分配,然后分配团队权限   特定的存储库。存储库创建仅限于用户   组织所有者的小组。这允许您分发有限的   访问Docker镜像,并选择可以发布哪些Docker Hub用户   新图片。

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

  

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

     
      
  • 读取权限允许用户以与公共存储库相同的方式查看,搜索和提取私有存储库。

  •   
  • 写入权限允许用户推送到Docker Hub上的非自动存储库。

  •   
  • 管理员权限允许用户修改存储库“描述”,“协作者”权限,“公共/私人”可见性   和“删除”。

  •   

在您的方案中,您必须至少有两个注册的中心用户,然后其中一个可以是仅具有读取权限的团队成员,另一个用户可以是具有读取权限的团队成员(并自动读取)访问。

  

注意:尚未验证其电子邮件地址的用户只有   无论团队的权限如何,都可以读取对存储库的访问权限   会员给了他们。