跳到主要内容

策略管理

tcb policy 命令(v3.5.7+)用于管理 CloudBase 环境的 OPA Rego 鉴权策略,包括查看策略列表、获取策略内容、设置用户策略。设置 Rego 策略后旧网关鉴权将直接失效,旧命令 tcb permission set/get 已废弃,请迁移至 tcb policy

OPA 鉴权策略概念

关于 OPA 鉴权策略的工作机制、input 上下文结构、allow / deny 决策矩阵及实战案例,请参考 OPA 鉴权策略介绍;从旧版网关鉴权迁移到 OPA Rego 的步骤与策略翻译对照表,请参考 迁移指南

tcb policy list

查看环境下的网关鉴权策略列表。

PG 环境和 OPA 引擎环境下返回空列表。

tcb policy list [options]

参数

参数说明默认值
-e, --env-id <envId>环境 ID
--resource-type <type>按资源类型过滤,可选值:policy全部
--json输出 JSON

输出字段

字段说明
策略IDPolicyId
资源类型ResourceType
资源IDResourceId
资源标题ResourceTitle
资源名称ResourceName
效果Effect(允许/拒绝)
可访问IsAccess
角色标识RoleIdentity
角色名称RoleName
安全规则SafeRule

示例

# 查看全部策略
tcb policy list -e my-env-id

# 按资源类型过滤
tcb policy list --resource-type policy -e my-env-id

# JSON 格式输出
tcb policy list --json -e my-env-id

tcb policy get

获取鉴权策略内容(Rego 格式)。默认获取用户配置的策略,加 --extension 获取平台为该环境单独配置的策略。

tcb policy get [options]

参数

参数说明
-e, --env-id <envId>环境 ID
--extension获取为该环境单独配置的策略(默认获取用户配置的策略)
--json输出 JSON

示例

# 获取用户策略
tcb policy get -e my-env-id

# 获取平台扩展策略
tcb policy get --extension -e my-env-id

# JSON 格式输出
tcb policy get --json -e my-env-id

tcb policy set

设置用户 Rego 鉴权策略。保存后旧网关鉴权将直接失效。

tcb policy set [regoContent]

参数

参数说明
<regoContent>Rego 策略内容(必填)
-e, --env-id <envId>环境 ID
--json输出 JSON
重要提示

设置 Rego 策略后,旧网关鉴权将直接失效,请确认策略内容正确后再执行。

Rego 策略格式

策略需要以 package authz.user 开头,使用 OPA Rego 语法:

package authz.user

default allow := false

# 示例:放通匿名用户访问云函数
allow if {
input.cloudbase.resource_type == "functions"
input.subject.auth_type == "anonymous"
}

关于 input 字段的详细说明,请参考 OPA 鉴权策略介绍

示例

# 直接传入 Rego 内容
tcb policy set 'package authz.user

default allow := false

# 放通匿名用户访问云函数
allow if {
input.cloudbase.resource_type == "functions"
input.subject.auth_type == "anonymous"
}' -e my-env-id

# JSON 格式输出
tcb policy set 'package authz.user

default allow := false' --json -e my-env-id

相关命令