harbor项目权限配置关键在创建时选“私有”或“公开”并精细分配成员角色:私有项目仅授权成员访问,公开项目允许匿名用户只读拉取但写操作仍受角色限制。
harbor 中项目公开与私有权限的配置,核心在于创建项目时的“访问级别”设置,以及后续对成员角色的精细化分配。公开不等于无限制,私有也不代表完全封闭——关键看是否理解这两个选项的实际影响和适用边界。
项目创建时选择访问级别
在 Harbor Web 界面新建项目时,“访问级别”下拉菜单提供两个选项:
- 私有(Private):默认选项。只有被显式添加为项目成员的用户(或机器人账户),且拥有对应角色权限,才能执行拉取、推送等操作。未登录用户或未授权用户无法访问任何内容。
- 公开(Public):勾选后,该项目对所有已登录用户自动授予“访客”角色权限;更关键的是,未登录的匿名用户也能直接拉取镜像或 Chart,无需 docker login。这适用于基础镜像(如 alpine、nginx 官方构建版),但绝不适用于含业务代码、密钥或敏感配置的镜像。
公开项目 ≠ 权限失控,仍可约束写操作
即使项目设为公开,其写权限(如 push、删除标签、修改策略)依然严格受限:
- 只有被添加为成员并分配了“维护者”及以上角色的用户,才可推送镜像。
- “开发者”角色不能删除镜像或 Chart 版本,“项目管理员”才能配置扫描、复制等高级策略。
- 匿名用户仅能 pull,无法看到项目设置页,也不能执行任何写入动作。
私有项目中灵活控制成员权限
私有项目需要手动添加成员,并按职责分配角色。常见组合如下:
- 项目负责人 → 分配项目管理员角色:可增删成员、启停扫描、设置复制规则、删除镜像。
- CI/CD 流水线 → 使用机器人账户(Robot Account),赋予维护者角色:支持自动化推送和拉取,不涉及人员管理,权限可随时禁用。
- 前端开发人员 → 分配开发者角色:能构建并推送自己服务的镜像,但无法误删他人版本。
- 测试/QA 团队 → 分配访客角色:仅用于拉取验证,杜绝意外修改风险。
不建议混合使用公开+高权限角色
避免给公开项目添加大量“维护者”或“项目管理员”。一旦项目公开,其只读入口就暴露在内网任意终端上,若再叠加写权限,相当于把推送通道开放给全公司——容易引发镜像污染或策略覆盖。真正需要广泛读取的镜像,应单独建公开项目;需协作开发的,坚持用私有项目+精准角色分配。











