OPA 鉴权策略
概述
OPA 鉴权策略是云开发提供的 环境级请求鉴权能力,基于开源策略引擎 Open Policy Agent (OPA) 和策略语言 Rego 构建。通过在云开发控制台编写一段策略代码,可以为整个环境的 HTTP API 和 HTTP 网关 请求定义统一的访问控制规则。
云开发会在每次收到请求时执行策略,根据 用户身份、HTTP 请求、环境上下文 三类信息做出"放行 / 拦截"决策,再将请求转发到实际调用的资源。
用户请求
↓
云开发
↓
构造 input(subject + request + cloudbase)
↓
执行 OPA 策略评估
├─ allow = true 且 deny = false → 放行 → 访问实际资源
└─ deny = true → 拒绝,返回 403 + 原因
默认情况下,云开发为 HTTP API 和 HTTP 网关内置一套平台默认策略,覆盖各类资源在不同身份下的默认放通与拒绝规则,具体策略规则见 附录 A:平台默认策略。
用户策略可在平台默认策略之上进行追加调整:
- 用户策略中定义的
allow(放通)可放开被平台默认拒绝的请求 - 用户策略中定义的
deny(拒绝)可拒绝被平台默认放通的请求(deny优先级高于allow)
通过用户策略的调整,可灵活、细粒度地定义基于 HTTP 请求、用户身份、访问资源或多种条件组合的鉴权规则,实现高度可定制的权限管控。通过编写 OPA 策略,可实现下列需求:
- IP 白名单访问控制
- 按用户身份控制读写权限
- 保护管理后台接口
- 按访问入口执行不同规则
- ...
关于完整实现示例,请参考 实战案例。
核心能力
| 能力 | 说明 |
|---|---|
| 多条件组合鉴权 | 可基于用户身份、请求特征、环境信息等多维度条件灵活组合鉴权规则,实现细粒度访问控制 |
| 统一策略入口 | 同一份策略同时覆盖 HTTP API 和 HTTP 网关(云函数/云托管/静态托管等)入口,统一管控公网流量 |
| 拒绝原因可溯源 | 拒绝请求时可向调用方返回可读的拒绝原因,便于快速排查权限问题 |
| 在平台默认策略基础上定制 | 平台已内置各资源类型的默认放通/拒绝规则,你只需编写策略调整需要覆盖的规则,无需从零开始 |
| 支持标准 Rego 语法 | 基于 OPA 开源策略引擎,使用通用的 Rego 策略语言,学习成本低,社区资源丰富 |
与其他安全能力的关系
云开发提供了多层安全能力,OPA 鉴权策略位于请求入口的 访问控制 层,与其他能力协作形成防护体系:
| 能力 | 作用域 | 控制维度 | 何时选用 |
|---|---|---|---|
| OPA 鉴权策略 | 环境内所有 HTTP API 和 HTTP 网关 请求 | 用户 + 请求 + 环境上下文 | 需要复杂条件组合、基于请求级别、可编程的访问控制 |
| 限频设置 | 云函数、云托管 | QPS(资源维度 / 客户端维度) | 防刷、防过载 |
| 静态托管安全配置 | 静态托管资源 | Referer / IP / QPS | 静态资源防盗链 |
| 安全来源 | 客户端 SDK 调用 | 域名白名单 | 限制 SDK 调用来源 |
在控制台配置 OPA 策略
云开发控制台已将 OPA 策略的配置过程做了封装,你无需直接接触底层配置,只需按可视化操作完成设置。控制台提供 表单模式 与 语法模式 两种操作方式:
| 操作模式 | 适用场景 | 说明 |
|---|---|---|
| 表单模式 | 对某个资源放开(允许访问),是最常用的场景 | 通过表单下拉选择,逐条配置,无需写代码 |
| 语法模式 | 表单无法承载的复杂场景,如自定义域名、请求路径、HTTP 方法等条件的组合控制 | 切换到语法视图,直接编写 Rego 策略 |
配置入口
- 登录 云开发控制台,进入目标环境。
- 在左侧菜单中找到 鉴权策略(路径示意:环境 → 鉴权策略)。
- 点击 新建策略 进入配置页面。

表单模式(推荐)
对于"对某类资源放开访问"这类常用需求,建议使用表单模式,通过下拉选择即可完成配置,无需编写任何代码:
- 在配置页面选择 表单模式。
- 在表单中通过下拉框选择需要放开的 资源类型(如云函数、云存储、云托管等)。
- 选择允许访问的 角色 / 用户身份。
- 点击 保存 完成配置。


表单模式覆盖了大多数"按资源、按角色放开访问"的场景。建议优先使用表单模式,当需求超出表单可表达的范围时,再切换到语法模式。