4. 制品目录的访问控制模型:资源类型、权限动词与作用域层级

OCI 制品目录的访问控制模型基于 资源类型、权限动词 和 作用域层级 三个核心维度构建。理解这三者的组合关系,是进行权限边界评审的基础。

4.1 资源类型:artifacts 与 repositories

在 OCI 制品目录中,权限策略直接作用于两种资源类型:

资源类型 标识符 说明 典型操作对象
制品仓库 repositories 逻辑容器,用于组织和管理一组相关的制品版本 创建/删除仓库、列出仓库、设置仓库策略
制品 artifacts 仓库内的具体制品版本(如 Docker 镜像、Maven 构件) 上传/下载制品、删除版本、查看元数据
评审要点: 权限策略可以精确到 artifacts 级别,但实际生产环境中,通常以 repositories 作为最小授权单元,避免策略数量爆炸。

4.2 权限动词:inspect / read / use / manage

OCI 为制品目录定义了四个权限动词,构成从只读到完全控制的递增授权模型:

  • inspect — 查看资源列表和基本元数据,不包含内容下载。
  • read — 包含 inspect 权限,并允许下载制品内容、读取制品详情。
  • use — 包含 read 权限,并允许将制品部署到计算实例或 Kubernetes 集群。
  • manage — 包含 use 权限,并允许创建、更新、删除仓库和制品。
权限动词 查看列表 下载内容 部署使用 创建/删除 典型使用者
inspect ✓ ✗ ✗ ✗ 审计员、合规扫描器
read ✓ ✓ ✗ ✗ CI/CD 构建节点、开发者(只读)
use ✓ ✓ ✓ ✗ 部署代理、Kubernetes 集群
manage ✓ ✓ ✓ ✓ 制品管理员、DevOps 平台
常见误区: use 权限并不包含 manage 中的删除能力。如果部署代理需要清理旧版本,必须显式授予 manage 或在策略中单独声明删除操作。

4.3 作用域层级:从租户到制品版本

权限策略的作用域可以设置在以下四个层级,层级越低,权限粒度越细:

  1. 租户级(Tenancy) — 策略影响整个租户内的所有制品目录。
  2. 区间级(Compartment) — 策略影响指定区间内的所有制品仓库。
  3. 仓库级(Repository) — 策略影响单个制品仓库及其内部所有制品。
  4. 制品级(Artifact) — 策略影响仓库内的特定制品版本。
最佳实践: 在权限边界评审中,优先使用 区间级 + 仓库级 组合。避免在租户级授予 manage 权限,防止权限扩散。
OCI 制品目录访问控制模型分层结构 访问控制模型:资源类型 × 权限动词 × 作用域层级 作用域层级 租户级 Tenancy 区间级 Compartment 仓库级 Repository 制品级 Artifact 权限动词 inspect 查看元数据 read 下载内容 use 部署使用 manage 完全控制 资源类型 repositories 制品仓库 artifacts 制品版本 策略组合示例 • 区间级 + read • 仓库级 + use • 制品级 + inspect • 租户级 + manage (高风险)

4.4 策略语法与组合规则

在 OCI IAM 策略中,访问控制模型的三个维度通过以下语法组合:

Allow group <group_name> to <verb> <resource-type> in <scope>
  where <condition>

实际策略示例:

# 允许制品管理员团队管理所有仓库
Allow group ArtifactAdmins to manage repositories in compartment Production

# 允许 CI/CD 节点读取制品
Allow dynamic-group CICDNodes to read artifacts in compartment Staging

# 允许审计员仅查看仓库列表
Allow group Auditors to inspect repositories in tenancy
边界评审检查清单:
  • 是否所有 manage 权限都限制在最小作用域?
  • 是否存在租户级 manage repositories 的过度授权?
  • CI/CD 节点是否只被授予 read 而非 use?
  • 审计员是否仅拥有 inspect 权限?

4.5 权限边界评审核心模型

下图展示了权限边界评审中需要检查的 授权路径 与 风险点:

权限边界评审核心模型 权限边界评审核心模型:授权路径与风险点 IAM 策略 主体 + 动词 + 资源 + 作用域 主体(Who) 用户组 / 动态组 / 实例 资源(What) repositories / artifacts 作用域(Where) tenancy / compartment / repository 高风险模式 • 动态组 + manage + tenancy • 所有用户 + use + compartment

4.6 评审中的常见风险模式

风险模式 策略示例 影响 建议
租户级 manage manage repositories in tenancy 可删除所有仓库 改为 compartment 级
动态组过度授权 manage artifacts in compartment 计算实例可篡改制品 降级为 read 或 use
use 权限范围过大 use repositories in tenancy 可部署任意仓库制品 限定到具体仓库
inspect 权限缺失 未授予审计员 inspect 无法审计仓库列表 补充 inspect 权限
评审工具: 使用 OCI CLI 命令 oci iam policy list --compartment-id <compartment_ocid> 导出所有策略,然后按 动词 + 资源类型 + 作用域 三个维度进行交叉分析,快速定位高风险策略。