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 作用域层级:从租户到制品版本
权限策略的作用域可以设置在以下四个层级,层级越低,权限粒度越细:
- 租户级(Tenancy) — 策略影响整个租户内的所有制品目录。
- 区间级(Compartment) — 策略影响指定区间内的所有制品仓库。
- 仓库级(Repository) — 策略影响单个制品仓库及其内部所有制品。
- 制品级(Artifact) — 策略影响仓库内的特定制品版本。
最佳实践: 在权限边界评审中,优先使用 区间级 + 仓库级 组合。避免在租户级授予
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 权限边界评审核心模型
下图展示了权限边界评审中需要检查的 授权路径 与 风险点:
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> 导出所有策略,然后按 动词 + 资源类型 + 作用域 三个维度进行交叉分析,快速定位高风险策略。