SVV_RLS_APPLIED_POLICY
使用 SVV_RLS_APPLIED_POLICY 跟踪 RLS 策略在引用受 RLS 保护的关系的查询上的应用情况。
SVV_RLS_APPLIED_POLICY 对以下用户可见:
超级用户
拥有
sys:operator
角色的用户拥有 ACCESS SYSTEM TABLE 权限的用户
请注意,sys:secadmin 未被授予此系统权限。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
username | 文本 | 运行查询的用户的名称。 |
query | 整数 | 查询的 ID。 |
xid | long | 事务的上下文。 |
pid | 整数 | 运行查询的领导进程。 |
recordtime | 时间 | 记录查询时的时间。 |
命令 | char(1) | 应用了 RLS 策略的命令。可能的值包括 k (用于 unknown)、s (用于 select)、u (用于 update)、i (用于 insert)、y (用于 utility),以及 d (用于 delete)。 |
datname | 文本 | 行级别安全性策略附加到的关系的数据库的名称。 |
relschema | 文本 | 行级别安全性策略附加到的关系的架构的名称。 |
relname | 文本 | 行级别安全性策略附加到的关系的名称。 |
polname | 文本 | 附加到关系的行级别安全性策略的名称。 |
poldefault | char(1) | 附加到关系的行级别安全性策略的默认设置。可能的值包括用于 false 的 f (如果已应用默认的 false 策略);以及用于 true 的 t (如果已应用默认的 true 策略)。 |
示例查询
以下示例显示了 SVV_RLS_APPLIED_POLICY 的结果。要查询 SVV_RLS_APPLIED_POLICY,您必须拥有 ACCESS SYSTEM TABLE 权限。
-- Check what RLS policies were applied to the run query. SELECT username, command, datname, relschema, relname, polname, poldefault FROM svv_rls_applied_policy WHERE datname = CURRENT_DATABASE() AND query = PG_LAST_QUERY_ID(); username | command | datname | relschema | relname | polname | poldefault ----------+---------+-----------+-----------+--------------------------+-----------------+------------ molly | s | tickit_db | public | tickit_category_redshift | policy_concerts |