harbor的rbac权限体系通过web界面或api动态管理,以项目为权限边界,内置project admin、developer、guest等角色绑定至具体项目,禁用匿名访问并配合ip限制与mfa实现纵深防御。

Harbor 的角色控制(RBAC)不是靠手动改配置文件实现的,而是通过 Web 界面或 API 动态管理的权限体系。核心在于“项目(Project)”作为权限边界,所有角色权限都绑定到具体项目上,而不是全局或用户本身。
创建私有项目并启用权限隔离
默认新建的项目是公开的,任何人都能拉取镜像——这不符合安全要求。必须显式设为私有:
- 登录 Harbor Web 控制台(如 https://harbor.example.com)
- 点击「Projects」→「+ PROJECT」→ 填写项目名(如 dvwa-repo)
- 勾选「Private」选项,确保未登录用户无法访问该项目下的任何镜像
- 保存后,该项目即成为独立的权限作用域
按角色分配用户并限制操作范围
Harbor 内置角色已预定义语义,不建议自定义角色,直接使用标准角色更稳妥:
- Project Admin:可管理成员、删除镜像、配置扫描策略和 Webhook,适合技术负责人
- Developer:默认拥有 push/pull 权限,适合开发人员日常构建与部署
- Guest:仅能 pull 镜像,适合测试或审计人员
- 避免给普通用户分配 System Admin 角色,该角色可跨项目操作,违背最小权限原则
添加用户时,在项目「Members」页中选择目标用户,再从下拉菜单指定其角色——权限立即生效,无需重启服务。
验证权限是否生效
配置完别跳过验证,尤其要确认拒绝行为是否真实触发:
- 用 Developer 账号执行
docker pull harbor.example.com/dvwa-repo/dvwa:v1.0→ 应成功 - 用 Guest 账号尝试
docker push同一镜像 → 返回denied: requested access to the resource is denied - 用未加入该项目的普通账号登录 Web 控制台 → 项目列表中不可见 dvwa-repo
注意:Docker CLI 的权限判断依赖于 docker login 凭据,务必确保每次操作前已用对应账号登录仓库。
进阶控制:限制 IP 或启用 MFA 提升边界安全
RBAC 解决的是“谁能做什么”,但还需配合网络与认证层加固:
- 在反向代理(如 Nginx)中限制访问源 IP,例如只允许
192.168.10.0/24网段访问 Harbor - 在 Harbor 管理后台开启「Multi-Factor Authentication」,强制关键角色(如 Project Admin)启用 TOTP
- 禁用匿名访问:系统设置 → 「Configuration」→ 关闭「Anonymous access」开关
- 若对接 LDAP/AD,确保同步的用户组能映射到 Harbor 角色,避免本地账号混用
不复杂但容易忽略











