3. 资源模型概述:资源抽象、资源类型与资源生命周期
在镜像供应链信任边界中,资源是权限控制的核心对象。本章建立统一的资源抽象模型,将物理或逻辑实体映射为可被 RBAC 策略管理的资源类型,并定义资源从创建到销毁的完整生命周期。该模型是后续策略设计的基础。
3.1 资源抽象模型
资源抽象层将底层异构的镜像存储、仓库组织和制品产物统一为三类顶级资源类型,每一类都继承公共属性并扩展特有属性。抽象模型遵循以下原则:
- 统一标识:每个资源实例拥有全局唯一的资源 ID(RID),格式为
registry:namespace:type:name:version。 - 层级继承:子资源自动继承父资源的访问控制属性,但可被更具体的策略覆盖。
- 状态机驱动:资源状态转换由预定义的生命周期状态机控制,状态变更触发策略重评估。
| 抽象属性 | 说明 | 示例值 |
|---|---|---|
| 资源 ID (RID) | 全局唯一标识,包含注册中心、命名空间、类型、名称和版本 | harbor:prod:image:nginx:1.25.3 |
| 资源类型 | 镜像、仓库、制品之一 | image |
| 信任等级 | 由签名验证、漏洞扫描、来源审计综合计算 | high / medium / low |
| 当前状态 | 资源生命周期中的阶段 | active / deprecated / archived |
| 父资源引用 | 指向所属仓库或命名空间的 RID | harbor:prod:repository:nginx |
设计要点:资源抽象层不直接暴露存储路径或后端实现细节,所有策略引用均通过 RID 完成。这允许底层存储迁移(如从 Docker Registry 迁移到 Harbor)而不影响已配置的 RBAC 策略。
3.2 资源类型定义
资源模型包含三种核心类型,每种类型对应供应链中的一个关键环节:
3.2.1 镜像(Image)
镜像是最细粒度的资源单元,代表一个不可变的容器镜像层叠集合。每个镜像由摘要(digest)唯一标识,并关联标签(tag)作为可移动引用。镜像资源包含以下关键属性:
- 摘要:基于内容寻址的 SHA256 哈希,不可变。
- 标签列表:可变的符号引用,如
latest、v1.0.0。 - 签名状态:是否经过 Cosign / Notation 签名。
- 漏洞评分:来自 Trivy / Grype 等扫描器的 CVSS 聚合分数。
3.2.2 仓库(Repository)
仓库是镜像和制品的逻辑容器,提供命名空间隔离和访问策略聚合。仓库级别的权限会自动下发给其包含的所有镜像和制品,除非显式覆盖。仓库属性包括:
- 仓库类型:公开(public)或私有(private)。
- 存储配额:最大存储容量和镜像数量限制。
- 保留策略:自动清理旧版本镜像的规则。
3.2.3 制品(Artifact)
制品是镜像之外的所有供应链产物,包括 Helm Chart、SBOM(软件物料清单)、签名文件、OCI 制品等。制品资源与镜像共享相同的仓库命名空间,但拥有独立的生命周期和访问控制策略。常见制品类型:
- SBOM:SPDX 或 CycloneDX 格式的软件物料清单。
- 签名:镜像签名文件(如
.sig、.att)。 - 配置:部署配置、策略文件、Kubernetes 清单。
类型对比:镜像和制品在存储层面均为 OCI 制品,但镜像需要额外的运行时兼容性验证和签名链检查,而制品更关注元数据完整性和来源可追溯性。RBAC 策略对两者的操作权限(读、写、删除、签名验证)应分别定义。
3.3 资源生命周期
每个资源实例从创建到销毁经历四个主要阶段,每个阶段对应不同的信任状态和访问权限要求。生命周期状态机确保资源不会被误操作或绕过策略访问。
3.4 生命周期阶段与 RBAC 策略映射
每个生命周期阶段对应一组默认的 RBAC 权限模板,策略引擎根据资源当前状态自动调整有效权限。下表列出各阶段允许的操作:
| 生命周期阶段 | 允许操作 | 禁止操作 | 信任等级要求 |
|---|---|---|---|
| 创建(staging) | 推送、签名、扫描、查看元数据 | 拉取、部署、复制 | 无(需完成签名和扫描) |
| 活跃(active) | 拉取、部署、复制、查看 | 覆盖标签、删除 | ≥ medium |
| 弃用(deprecated) | 拉取(仅已有引用)、查看 | 部署、复制、推送新版本 | ≥ low |
| 归档(archived) | 查看元数据、导出审计日志 | 拉取、部署、复制、推送 | 不适用 |
| 删除(deleted) | 无(仅审计记录保留) | 所有操作 | 不适用 |
安全注意事项:资源从“活跃”转换到“弃用”时,必须触发一次策略重评估。如果该资源被用于生产部署的 Kubernetes 镜像引用,策略引擎应发出告警并阻止直接弃用,直到所有引用被更新或确认安全。同样,从“归档”到“删除”的转换应设置冷却期(默认 30 天),防止误删后无法恢复。
3.5 资源模型与 RBAC 策略的整合点
资源模型为 RBAC 策略提供三个关键整合接口:
- 资源类型匹配器:策略规则中的
resource_type字段直接对应镜像、仓库、制品三类资源,支持通配符匹配(如image:*匹配所有镜像)。 - 生命周期条件:策略条件中可引用
resource.status属性,例如仅允许active状态的镜像被部署到生产环境。 - 信任等级门禁:资源在进入“活跃”状态前必须达到最低信任等级,该等级由签名验证、漏洞扫描和来源审计综合计算,策略引擎在授权时自动校验。
通过上述整合,RBAC 策略不再仅基于静态资源路径,而是能够感知资源的动态信任状态和生命周期阶段,实现更细粒度的供应链安全控制。