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 资源生命周期

每个资源实例从创建到销毁经历四个主要阶段,每个阶段对应不同的信任状态和访问权限要求。生命周期状态机确保资源不会被误操作或绕过策略访问。

资源生命周期状态机 创建 (staging) 活跃 (active) 弃用 (deprecated) 归档 (archived) 删除 (deleted) 推送成功 版本过期 / 手动弃用 保留期结束 手动删除 / 自动清理 推送失败 / 签名验证不通过 说明 只有处于“活跃”状态的资源才能被正常拉取和部署;“弃用”状态仅允许拉取已有引用,禁止新引用;“归档”状态完全不可访问,仅保留元数据用于审计。

3.4 生命周期阶段与 RBAC 策略映射

每个生命周期阶段对应一组默认的 RBAC 权限模板,策略引擎根据资源当前状态自动调整有效权限。下表列出各阶段允许的操作:

生命周期阶段 允许操作 禁止操作 信任等级要求
创建(staging) 推送、签名、扫描、查看元数据 拉取、部署、复制 无(需完成签名和扫描)
活跃(active) 拉取、部署、复制、查看 覆盖标签、删除 ≥ medium
弃用(deprecated) 拉取(仅已有引用)、查看 部署、复制、推送新版本 ≥ low
归档(archived) 查看元数据、导出审计日志 拉取、部署、复制、推送 不适用
删除(deleted) 无(仅审计记录保留) 所有操作 不适用
安全注意事项:资源从“活跃”转换到“弃用”时,必须触发一次策略重评估。如果该资源被用于生产部署的 Kubernetes 镜像引用,策略引擎应发出告警并阻止直接弃用,直到所有引用被更新或确认安全。同样,从“归档”到“删除”的转换应设置冷却期(默认 30 天),防止误删后无法恢复。

3.5 资源模型与 RBAC 策略的整合点

资源模型为 RBAC 策略提供三个关键整合接口:

  1. 资源类型匹配器:策略规则中的 resource_type 字段直接对应镜像、仓库、制品三类资源,支持通配符匹配(如 image:* 匹配所有镜像)。
  2. 生命周期条件:策略条件中可引用 resource.status 属性,例如仅允许 active 状态的镜像被部署到生产环境。
  3. 信任等级门禁:资源在进入“活跃”状态前必须达到最低信任等级,该等级由签名验证、漏洞扫描和来源审计综合计算,策略引擎在授权时自动校验。

通过上述整合,RBAC 策略不再仅基于静态资源路径,而是能够感知资源的动态信任状态和生命周期阶段,实现更细粒度的供应链安全控制。