Harbor是企业级私有镜像仓库首选,支持RBAC权限控制、LDAP集成、镜像扫描与审计日志;其权限体系以项目为单位,内置Maintainer/Developer/Guest角色,并支持机器人账号与客户端TLS信任链配置。

配置 Docker 私有镜像仓库的管理与权限控制,关键在于选对工具、配好认证、设清角色,并打通客户端信任链。简单说,不靠密码文件硬编码,也不靠开放端口裸跑,而是用标准协议+企业级能力来落地管控。
选型决定权限能力上限
原生 registry 镜像本身不带用户系统,只能靠 nginx 做基础 HTTP Basic 认证,权限粒度仅到“能推或不能推”,无法区分项目、仓库、标签级别。真正支持 RBAC(基于角色的访问控制)、LDAP 对接、镜像扫描和审计日志的,是 Harbor 这类企业级方案。如果团队需要按部门划分命名空间、限制测试人员拉取 prod 标签、或自动拦截含高危漏洞的镜像,Harbor 是目前最成熟且开源免费的选择。
Harbor 权限体系怎么搭
安装后通过 Web 界面或 API 设置三类核心权限对象:
- 项目(Project):相当于命名空间,每个项目可设公开/私有;私有项目默认只有管理员可访问
- 成员角色:内置 Maintainer、Developer、Guest 三级,比如 Developer 可 push/pull,Guest 只能 pull,Maintainer 还能管理成员和复制策略
- 机器人账号:为 CI/CD 流水线生成专用 token,设有效期和权限范围,避免用个人账号硬编码在 Jenkins 或 GitLab Runner 中
例如:给 devops 组分配 “maintainer” 角色到 infra 项目,给前端组分配 “developer” 到 frontend 项目,再为 GitHub Actions 创建一个只读 robot 账号,绑定到 release 项目 —— 这样既隔离又可追溯。
客户端信任与推送配置
Docker daemon 默认只信任 HTTPS 仓库,所以必须让私有仓库走 TLS。Harbor 安装时已自动生成证书,但需在每台客户端机器上做两件事:
- 把 Harbor 的 CA 证书(harbor.yml 中指定的 cert path 下的 ca.crt)拷贝到 /etc/docker/certs.d/your-harbor-domain.com/ca.crt
- 重启 docker daemon:sudo systemctl restart docker
之后执行 docker login your-harbor-domain.com 即可登录,后续 push/pull 自动携带 token。注意:不要在 daemon.json 里加 "insecure-registries",那是开发环境妥协方案,生产环境禁用。
日常权限维护要点
权限不是一次性配置完就一劳永逸的:
- 定期清理失效机器人账号,尤其 CI/CD 流水线重构后遗留的旧 token
- 项目内新建仓库(Repository)时,默认继承项目权限,但可单独设置“匿名拉取”开关
- 启用 Harbor 的“用户 LDAP 同步”后,组织架构变动时权限自动更新,比手动加人更可靠
- 所有 push 操作都会记录操作者、镜像名、标签、时间,可在 Harbor 审计日志页直接导出 CSV 分析











