4. Harbor 项目管理:创建项目、项目类型与成员角色管理
在 Harbor 镜像仓库中,项目(Project)是镜像隔离与权限控制的核心单元。所有镜像必须归属于某个项目,而项目的访问策略、成员角色直接决定了镜像的安全边界。本节将系统讲解项目的创建流程、公开/私有类型的选择依据,以及成员与角色的精细化管理。
4.1 项目创建流程
Harbor 的项目创建可通过 Web UI 或 REST API 完成。以下为 Web UI 的标准操作步骤:
- 登录 Harbor 管理界面:使用具有管理员或项目创建权限的账号登录。
- 进入“项目”模块:点击顶部导航栏的“项目”入口。
- 点击“新建项目”:在项目列表页右上角点击“+ 新建项目”按钮。
- 填写项目信息:在弹出的表单中配置以下关键字段。
| 配置项 | 说明 | 推荐值 / 示例 |
|---|---|---|
| 项目名称 | 全局唯一,只能包含小写字母、数字、连字符和下划线 | prod-app-backend |
| 访问级别 | 公开(Public)或私有(Private) | 生产环境建议私有 |
| 存储配额(可选) | 限制项目最大存储容量 | 根据磁盘规划设置,如 100GB |
| 代理缓存(可选) | 是否作为远程仓库的代理缓存项目 | 按需启用 |
- 确认创建:点击“确定”完成项目创建。
最佳实践:项目名称建议采用
<环境>-<应用名>-<组件> 的命名规范,例如 stg-user-service,便于后续自动化脚本按名称模式匹配归档与清理策略。
4.2 项目类型:公开 vs 私有
Harbor 项目的访问级别决定了镜像的可见性与拉取权限。两种类型的核心差异如下:
| 对比维度 | 公开项目(Public) | 私有项目(Private) |
|---|---|---|
| 镜像可见性 | 所有已认证用户均可查看和拉取 | 仅项目成员可查看和拉取 |
| 推送权限 | 仅项目成员可推送 | 仅项目成员可推送 |
| 适用场景 | 基础镜像、开源组件、公共工具镜像 | 业务应用镜像、包含敏感信息的镜像 |
| 安全风险 | 较低(镜像内容公开,但推送受控) | 较高(需严格管理成员权限) |
| 自动化清理影响 | 清理策略需考虑全局影响 | 清理策略可针对项目独立配置 |
安全提示:生产环境的核心业务项目必须设置为私有。公开项目仅用于存放经过安全扫描的基础镜像或公共制品,避免将包含数据库连接串、密钥等敏感信息的镜像推送到公开项目。
4.3 项目成员与角色管理
Harbor 提供了细粒度的基于角色的访问控制(RBAC)。每个项目可以独立管理成员及其角色,角色决定了成员在项目内的操作权限。
4.3.1 内置角色说明
| 角色名称 | 权限范围 | 典型分配对象 |
|---|---|---|
| 项目管理员 | 完全控制:管理成员、编辑项目配置、推送/拉取/删除镜像、查看日志 | 项目负责人、DevOps 工程师 |
| 维护者 | 推送/拉取/删除镜像、查看日志,不能管理成员或修改项目配置 | 开发团队骨干、CI/CD 机器人账号 |
| 开发者 | 推送/拉取镜像,不能删除镜像或管理成员 | 普通开发人员 |
| 访客 | 仅拉取镜像(只读) | 测试人员、外部协作方 |
| 受限访客 | 仅拉取公开项目的镜像,不能拉取私有项目镜像 | 匿名只读访问场景(极少使用) |
4.3.2 成员添加与角色分配
在项目详情页的“成员”标签页中,可以执行以下操作:
- 添加成员:输入已存在的 Harbor 用户名,选择角色后确认。
- 批量导入:通过 LDAP/AD 集成时,可同步用户组并批量分配角色。
- 修改角色:在成员列表中直接调整角色下拉框。
- 移除成员:点击删除按钮,该成员将立即失去项目访问权限。
自动化集成:在 CI/CD 流水线中,建议为每个项目创建一个专用的机器人账号(Robot Account),并赋予“维护者”角色。该账号仅用于镜像推送和清理,避免使用个人账号导致权限扩散。
4.4 项目权限模型 SVG 架构图
下图展示了 Harbor 项目中用户、角色与操作权限之间的层级关系:
4.5 项目配置与自动化清理的关联
在后续章节的自动归档与清理工程案例中,项目的配置将直接影响脚本的执行逻辑:
- 项目名称作为筛选标签:清理脚本通过项目名称的正则匹配,决定哪些项目参与归档。
- 项目类型决定清理策略:公开项目通常保留更长的镜像历史,私有项目可执行更激进的清理。
- 角色权限限制操作范围:清理机器人账号仅需“维护者”角色,避免过度授权。
- 存储配额触发预警:当项目存储使用量接近配额阈值时,自动触发清理流程。
工程案例前置:在后续章节中,我们将基于本节的项目管理知识,设计一个自动清理脚本。该脚本会遍历 Harbor 中的所有项目,根据项目名称前缀(如
dev-、stg-、prod-)匹配不同的保留策略,并调用 Harbor API 删除过期镜像。因此,本节的项目命名规范和角色分配是自动化清理的基础。