Docker镜像仓库本身不直接管理访问权限,依赖所用平台实现:Docker Hub仅支持公/私仓库两级可见性与统一协作者读写权限;Harbor等私有仓库提供项目级RBAC,含访客、开发者、维护者、项目管理员四类角色;原生Registry需借助Nginx+htpasswd或LDAP/OAuth2扩展权限控制。

公有仓库(Docker Hub)的权限划分
Docker Hub 提供基础的仓库可见性设置,不支持细粒度操作权限:
- Public Repository(公共仓库):默认开放,所有人可 pull,无需登录;任何人都能查看镜像列表、Dockerfile 和构建历史。
- Private Repository(私有仓库):仅限账户所有者及明确添加的协作者访问;需登录后才能 pull 或 push;免费账户不提供私有仓库,需升级付费计划。
- 协作者权限统一为“读写”,无法区分“只拉取”或“只推送”——即添加为协作者后,既可 pull 也可 push。
私有仓库(Harbor/Nexus)的 RBAC 权限模型
企业级私有仓库普遍支持基于角色的访问控制(RBAC),按项目(Project)粒度配置,权限更精细:
- 访客(Guest):仅允许 pull 镜像,不可查看构建日志、扫描报告或执行任何写操作。
- 开发者(Developer):可 pull/push 镜像、触发扫描、查看构建记录,但不能修改项目设置或成员权限。
- 维护者(Maintainer):除开发者权限外,还能管理项目成员、配置机器人账号、设置垃圾回收策略。
- 项目管理员(Project Admin):拥有全部权限,包括删除镜像、调整配额、启用/禁用漏洞扫描等。
原生 Registry 的简易权限控制
Docker 官方 registry 镜像(registry:2)默认无内置权限系统,需配合外部认证服务:
- 通过反向代理(如 Nginx)集成 HTTP Basic Auth,对特定路径(如
/v2/)做用户名密码校验。 - 使用
htpasswd文件管理用户,例如只给dev-user配置 read-only 权限(仅允许 GET 请求),而ci-bot允许 POST/PUT(支持 push)。 - 若需更灵活策略,建议接入 LDAP 或 OAuth2,或直接选用 Harbor 等开箱即用的方案。
关键实践建议
无论使用哪种仓库,权限管理应遵循最小权限原则:
- CI/CD 流水线中使用的机器人账号,只授予对应项目的 push 权限,禁用交互式登录。
- 生产环境镜像仓库禁止开放匿名访问,即使内部网络也应强制认证。
- 定期审计成员列表与角色分配,移除离职人员或长期未使用的账号。
- 对敏感镜像(如含数据库凭证的定制基础镜像)单独建项目,并限制为仅运维组可访问。


















