靠项目隔离、角色绑定、标签策略、签名验证四层组合实现权限可控、环境不串、操作可溯:以项目为单位逻辑隔离,按业务线/环境建项目并独立配策;按最小必要权限自定义细粒度角色;用标签正则和内容信任加固推送边界;对接LDAP/OIDC统一身份并动态同步权限。

靠项目隔离 + 角色绑定 + 标签策略 + 签名验证这四层组合,才能真正实现权限可控、环境不串、操作可溯。
以项目为单位做逻辑隔离
Harbor等企业级仓库把“项目(Project)”作为最小管理单元,不是按镜像名或仓库名,而是按业务线、环境(dev/staging/prod)、团队来建项目。每个项目独立配策略,互不影响。
- finance-prod项目设为私有,只允许运维组 push/tag,开发组只能 pull
- ai-dev项目开放 push/pull,但禁用 delete 操作,保留所有历史镜像供回滚
- 启用网络策略(如 CIDR 白名单),限制只有 CI/CD 服务器能向 staging 项目推送
按角色分配最小必要权限
别用“管理员/开发者”这种宽泛角色,而是结合实际动作定义细粒度角色。Harbor 内置角色只是起点,建议自定义组合:
- CI-Pusher:仅允许 push 镜像、打指定格式标签(如 v[0-9]+\.[0-9]+\.[0-9]+),禁止 delete 和 scan
- QA-Reader:只允许 pull + scan,不能 push 或修改项目设置
- Security-Auditor:可查看所有项目镜像列表、扫描报告、操作日志,但无写权限
用标签正则和内容信任加固边界
光靠“谁可以推”不够,还得管“推什么”。标签不是随便起的,要靠规则卡住:
- 在项目设置中配置 tag filter,比如只允许匹配 ^v\d+\.\d+\.\d+(-rc\d+)?$ 的标签被 push
- 开启内容信任(Notary 或 Cosign),要求 prod 项目所有镜像必须带签名,未签名的 pull 请求直接拒绝
- 配合 Webhook,在 push 后自动触发审批流程(如需安全团队二次确认才允许上 prod)
对接 LDAP/OIDC 实现身份统一与动态同步
用户账号别手动加,直接连企业 AD 或 Okta。这样人员入职/离职时,权限自动生效或回收,避免“僵尸账号”残留风险。
- 将 AD 中的 “DevOps-Team” 组映射为 Harbor 的 project-admin 角色
- 设置 group sync 定时任务(如每小时同步一次),确保权限变更实时反映
- 启用 MFA 登录,防止凭证泄露后被滥用


















