4. 权限变更风险分类:横向越权、纵向越权、临时权限滥用、权限残留

在 SOPS 多租户隔离与制品签名链路中,权限变更并非单一维度的操作。每一次角色变更、策略调整或临时授权,都可能引入四类典型风险。理解这四类风险的定义、触发场景与检测方法,是进行策略评审与权限治理的基础。

核心观点: 权限变更风险的本质是“主体获得的实际权限超出了其应得权限的边界”。横向越权与纵向越权属于边界突破,临时权限滥用属于时间窗口失控,权限残留属于生命周期断裂。

4.1 四类风险定义与对比

风险类型 核心定义 典型触发场景 影响范围
横向越权 同一角色层级内,用户访问了不属于自己租户/项目的资源 租户 A 的运维人员通过篡改请求参数,读取租户 B 的制品签名配置 同层级跨租户数据泄露
纵向越权 低权限用户执行了高权限操作,或高权限用户降级后仍保留原能力 只读用户通过 API 调用签名审批接口;管理员降级为操作员后仍可修改策略 权限提升、控制面失守
临时权限滥用 在授权时间窗口内,执行了超出授权目的的操作 紧急修复窗口内,运维人员批量删除历史签名记录 数据完整性破坏、审计盲区
权限残留 用户离职、转岗或任务结束后,权限未被及时回收 离职员工的 Service Account 仍可推送制品并签名 后门账号、长期潜伏风险
评审要点: 在 SOPS 策略评审中,横向越权通常与租户隔离模型(Tenant Model)强相关;纵向越权与 RBAC 角色矩阵的继承关系相关;临时权限滥用依赖 Just-In-Time (JIT) 审计;权限残留则需对接 HR 系统的生命周期管理。

4.2 风险链路全景图

下图展示了四类风险在 SOPS 多租户隔离与制品签名链路中的分布位置与攻击路径。每个风险节点都对应一个具体的策略评审检查点。

SOPS 权限变更风险链路全景图 租户 A 用户 租户 B 用户 管理员/运维 角色变更 / 策略调整 临时授权 / JIT 提权 权限回收 / 离职处理 横向越权 跨租户访问制品/签名配置 纵向越权 低权限执行高权限签名操作 临时权限滥用 授权窗口内执行非授权操作 权限残留 离职/转岗未回收 影响:数据泄露 | 签名密钥泄露 | 制品完整性破坏 | 审计日志绕过 策略评审检查点:每类风险对应一个策略规则(Policy Rule),需在 SOPS 策略模板中显式声明 例如:横向越权 → 租户隔离策略;纵向越权 → 角色继承策略;临时权限滥用 → 操作白名单策略;权限残留 → 生命周期策略

4.3 横向越权与纵向越权:边界突破的两种模式

横向越权与纵向越权虽然都涉及“超越权限边界”,但它们的攻击向量与防御策略截然不同。

4.3.1 横向越权(Horizontal Privilege Escalation)

  • 触发条件: 权限模型依赖租户 ID、项目 ID 或命名空间作为访问控制标识,但后端未校验该标识是否属于当前用户。
  • SOPS 典型场景: 用户 A 通过修改 API 请求中的 tenant_id 参数,获取租户 B 的签名密钥公钥或制品列表。
  • 策略评审要点:
    • 检查所有涉及租户/项目隔离的 API 是否强制校验 subject 与 resource 的归属关系。
    • 确认 SOPS 策略中是否使用了 tenant 或 namespace 作为强制属性(Mandatory Attribute)。

4.3.2 纵向越权(Vertical Privilege Escalation)

  • 触发条件: 角色继承关系存在漏洞,或 API 未校验用户角色层级。
  • SOPS 典型场景: 拥有 signer 角色的用户,通过直接调用 admin 级别的策略修改接口,绕过审批流程。
  • 策略评审要点:
    • 确认 RBAC 角色矩阵中是否存在隐式继承(Implicit Inheritance)导致权限膨胀。
    • 检查敏感操作(如策略修改、密钥轮换)是否强制要求 MFA 或二次审批。
常见误区: 很多团队只关注纵向越权(因为“提权”更直观),却忽略了横向越权在 SaaS 多租户场景下的破坏力。一次成功的横向越权攻击,可能导致所有租户的签名密钥同时泄露。

4.4 临时权限滥用与权限残留:时间维度的失控

这两类风险的核心在于“权限生命周期管理”的缺失。临时权限滥用是窗口内行为失控,权限残留是窗口关闭失败。

4.4.1 临时权限滥用(Temporary Permission Abuse)

  • 触发条件: JIT(Just-In-Time)授权机制只控制了“能否访问”,未控制“能做什么”。
  • SOPS 典型场景: 运维人员通过紧急通道获得 30 分钟的签名密钥管理权限,在此期间批量导出了所有租户的私钥。
  • 策略评审要点:
    • 临时授权必须绑定操作白名单(Allowed Actions),而非开放全部权限。
    • 所有临时授权操作必须记录审计日志,并触发实时告警。

4.4.2 权限残留(Permission Residue)

  • 触发条件: 用户离职、转岗或 Service Account 废弃后,权限未被自动回收。
  • SOPS 典型场景: 离职员工的个人访问令牌(PAT)仍可推送制品并触发签名流程,形成后门。
  • 策略评审要点:
    • 确认 SOPS 是否与 IdP(身份提供商)实现了 SCIM 同步,自动禁用离职用户。
    • 检查 Service Account 是否设置了最大存活时间(TTL)和定期轮换策略。

4.5 风险检测矩阵:策略评审检查清单

以下表格总结了四类风险在 SOPS 策略评审中的具体检测项与对应的策略模板字段。

风险类型 检测项 SOPS 策略字段 评审通过标准
横向越权 跨租户资源访问 tenant_id 强制匹配 所有 API 端点校验 subject.tenant == resource.tenant
纵向越权 角色继承链检查 role_hierarchy 显式声明 无隐式继承,敏感操作绑定 admin 角色
临时权限滥用 JIT 授权范围 allowed_actions 白名单 临时授权仅包含最小必要操作,且记录审计日志
权限残留 用户/账号生命周期 max_ttl + auto_revoke 离职用户 24 小时内自动禁用,Service Account 最长 TTL 不超过 90 天
自动化建议: 将上述检测项编写为 OPA(Open Policy Agent)规则,集成到 CI/CD 流水线中。每次 SOPS 策略变更时自动执行评审,阻断不符合标准的策略部署。

4.6 案例:一次完整的权限变更风险链

假设某 SOPS 实例发生以下事件序列,请判断涉及哪些风险类型:

  1. 运维人员 A 通过 JIT 授权获得 1 小时的 admin 角色(临时权限授权)。
  2. 在授权窗口内,A 修改了策略,将租户 B 的签名密钥访问权限开放给租户 C(横向越权)。
  3. 租户 C 的只读用户 B 利用该漏洞,调用了本应属于 signer 角色的签名接口(纵向越权)。
  4. 三个月后,运维人员 A 离职,但其 Service Account 仍保留在 SOPS 中(权限残留)。

该案例表明,四类风险往往串联出现。一次临时授权滥用可能成为横向越权和纵向越权的跳板,而权限残留则为后续攻击提供了持久化入口。

策略评审核心原则: 权限变更风险治理不是孤立地修补某一类风险,而是建立“最小权限 + 强制隔离 + 生命周期管理 + 全链路审计”的四维防御体系。在 SOPS 策略模板中,每一维都需要有对应的策略规则显式声明。