SQL COMMAND · 角色与权限
SECURITY LABEL
定义或更改应用于对象的安全标签
SECURITY角色与权限引入 10(基线)现存至 20 devel2 次语法变更
- 动词
SECURITY- 对象
LABEL- 分组
- 角色与权限
- 引入版本
- 10(基线)
- 状态
- 现存
- 语法变更次数
- 2
- 手册小节数
- 5
版本轨迹
相对 PostgreSQL 17 无变化。
语法铁道图 PostgreSQL 18
沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。
aggregate_signature
语法概要
SECURITY LABEL [ FORprovider] ON { TABLEobject_name| COLUMNtable_name.column_name| AGGREGATEaggregate_name(aggregate_signature) | DATABASEobject_name| DOMAINobject_name| EVENT TRIGGERobject_name| FOREIGN TABLEobject_name| FUNCTIONfunction_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | LARGE OBJECTlarge_object_oid| MATERIALIZED VIEWobject_name| [ PROCEDURAL ] LANGUAGEobject_name| PROCEDUREprocedure_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | PUBLICATIONobject_name| ROLEobject_name| ROUTINEroutine_name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] | SCHEMAobject_name| SEQUENCEobject_name| SUBSCRIPTIONobject_name| TABLESPACEobject_name| TYPEobject_name| VIEWobject_name} IS {string_literal| NULL } 其中aggregate_signature是: * | [argmode] [argname]argtype[ , ... ] | [ [argmode] [argname]argtype[ , ... ] ] ORDER BY [argmode] [argname]argtype[ , ... ]
描述
SECURITY LABEL为数据库对象设置安全标签。一个给定的数据库 对象可以关联任意数量的安全标签,每个标签提供者对应一个。标签提供者是使用 函数register_label_provider注册自身的可加载模块。
Note
register_label_provider不是一个 SQL 函数;它只能从加载到 后端的 C 代码中调用。
标签提供者决定给定标签是否有效,以及是否允许将该标签赋给给定对象。给定标 签的含义同样由标签提供者自行决定。PostgreSQL不 限制标签提供者是否解释安全标签,也不限制其如何解释;它仅提供一种存储安全 标签的机制。实际上,此功能旨在支持与基于标签的强制访问控制(MAC)系统 (例如SELinux)集成。这类系统基于对象标签,而不 是基于用户和组等传统的自主访问控制(DAC)概念,做出所有访问控制决策。
要使用SECURITY LABEL,你必须拥有该数据库对象。
参数
object_nametable_name.column_nameaggregate_namefunction_nameprocedure_nameroutine_name要加上安全标签的对象名称。位于模式中的对象(表、函数等)的名称可以带模式限定。
provider要与该标签关联的标签提供者名称。指定的提供者必须已加载,并且必须同意所 提议的标签设置操作。若只加载了一个提供者,则为简洁起见可以省略其名称。
argmode函数、过程或聚合函数参数的模式:
IN、OUT、INOUT或VARIADIC。如果省略,默认值是IN。注意SECURITY LABEL实际上并不关 心OUT参数,因为确定函数身份只需要输入参数。因此,列出IN、INOUT和VARIADIC参数就足够了。argname函数、过程或聚合函数参数的名称。注意
SECURITY LABEL实际上并不关心参数名称,因为确定函数身份只需要参数数据类型。argtype函数、过程或聚合函数参数的数据类型。
large_object_oid大对象的 OID。
PROCEDURAL这是一个噪声词。
string_literal安全标签的新值,以字符串字面量形式写出。
NULL写入
NULL可删除安全标签。
示例
下面的示例展示了如何设置或更改一个表的安全标签:
SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';
要移除该标签:
SECURITY LABEL FOR selinux ON TABLE mytable IS NULL;
兼容性
在 SQL 标准中没有SECURITY LABEL命令。
另见
src/test/modules/dummy_seclabel语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 14← 13正文更新
正文更新PostgreSQL 13← 12正文更新
正文更新PostgreSQL 12← 11语法变化
+ FOREIGN TABLE object_name |+ 其中 aggregate_signature 是:− FOREIGN TABLE object_name− 其中aggregate_signature为:PostgreSQL 11← 10语法变化
+ PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |+ ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |+ } IS { string_literal | NULL }− } IS 'label'正文更新
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
GRANT | GRANT | — | 204 次 | |
| 定义访问权限 | 现存 | |||
REVOKE | REVOKE | — | 204 次 | |
| 撤销访问权限 | 现存 | |||
ALTER DEFAULT PRIVILEGES | ALTER | DEFAULT PRIVILEGES | 143 次 | |
| 定义默认访问权限 | 现存 | |||
CREATE GROUP | CREATE | GROUP | 192 次 | |
| 定义一个新的数据库角色 | 现存 | |||
ALTER GROUP | ALTER | GROUP | 141 次 | |
| 更改角色名称或成员资格 | 现存 | |||
DROP GROUP | DROP | GROUP | — | |
| 移除一个数据库角色 | 现存 | |||
SECURITY LABEL | SECURITY | LABEL | 122 次 | |
| 定义或更改应用于对象的安全标签 | 现存 | |||
DROP OWNED | DROP | OWNED | 141 次 | |
| 移除一个数据库角色所拥有的数据库对象 | 现存 | |||
REASSIGN OWNED | REASSIGN | OWNED | 141 次 | |
| 更改一个数据库角色所拥有的数据库对象的所有权 | 现存 | |||
CREATE POLICY | CREATE | POLICY | 141 次 | |
| 为一个表定义一条新的行级安全性策略 | 现存 | |||
ALTER POLICY | ALTER | POLICY | 141 次 | |
| 更改一条行级安全性策略的定义 | 现存 | |||
DROP POLICY | DROP | POLICY | — | |
| 从一个表中移除一条行级安全性策略 | 现存 | |||
CREATE ROLE | CREATE | ROLE | 142 次 | |
| 定义一个新的数据库角色 | 现存 | |||
ALTER ROLE | ALTER | ROLE | 142 次 | |
| 更改数据库角色 | 现存 | |||
DROP ROLE | DROP | ROLE | — | |
| 移除一个数据库角色 | 现存 | |||
SET ROLE | SET | ROLE | — | |
| 设置当前会话的当前用户标识符 | 现存 | |||
SET SESSION AUTHORIZATION | SET | SESSION AUTHORIZATION | — | |
| 设置当前会话的会话用户标识符和当前用户标识符 | 现存 | |||
CREATE USER | CREATE | USER | 192 次 | |
| 定义一个新的数据库角色 | 现存 | |||
ALTER USER | ALTER | USER | 142 次 | |
| 更改数据库角色 | 现存 | |||
DROP USER | DROP | USER | — | |
| 移除一个数据库角色 | 现存 | |||