pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
SECURITY LABEL — define or change a security label applied to an object
SECURITY LABEL [ FORprovider] ON { TABLEobject_name| COLUMNtable_name.column_name| AGGREGATEagg_name(agg_type[, ...] ) | DOMAINobject_name| FOREIGN TABLEobject_nameFUNCTIONfunction_name( [ [argmode] [argname]argtype[, ...] ] ) | LARGE OBJECTlarge_object_oid| [ PROCEDURAL ] LANGUAGEobject_name| SCHEMAobject_name| SEQUENCEobject_name| TYPEobject_name| VIEWobject_name} IS 'label'
SECURITY LABEL为数据库对象设置安全标签。一个给定的数据库 对象可以关联任意数量的安全标签,每个标签提供者对应一个。标签提供者是使用 函数register_label_provider注册自身的可加载模块。
register_label_provider不是一个 SQL 函数;它只能从加载到 后端的 C 代码中调用。
标签提供者决定给定标签是否有效,以及是否允许将该标签赋给给定对象。给定标 签的含义同样由标签提供者自行决定。PostgreSQL不 限制标签提供者是否解释安全标签,也不限制其如何解释;它仅提供一种存储安全 标签的机制。实际上,此功能旨在支持与基于标签的强制访问控制(MAC)系统 (例如SELinux)集成。这类系统基于对象标签,而不 是基于用户和组等传统的自主访问控制(DAC)概念,做出所有访问控制决策。
object_nametable_name.column_nameagg_namefunction_name要加上安全标签的对象名称。表、聚合、域、外部表、函数、序列、类型和视图的名称可以带模式限定。
provider要与该标签关联的标签提供者名称。指定的提供者必须已加载,并且必须同意所 提议的标签设置操作。若只加载了一个提供者,则为简洁起见可以省略其名称。
arg_type聚合函数作用于其上的输入数据类型。要引用一个零参数聚合函数,请在输入数据类型列表的位置写 *。
argmode函数参数的模式:IN、OUT、INOUT 或 VARIADIC。如果省略,默认为 IN。注意 SECURITY LABEL ON FUNCTION 实际上并不关心 OUT 参数, since only the input arguments are needed to determine the function's identity. So it is sufficient to list the IN, INOUT, and VARIADIC arguments.
argname函数参数的名称。注意 SECURITY LABEL ON FUNCTION 实际上并不关心参数名称,因为确定函数的标识只需要参数的数据类型。
argtype大对象的 OID。
large_object_oid大对象的 OID。
PROCEDURAL这是一个噪声词。
label新的安全标签,写成字符串字面量;也可以使用 NULL 来删除安全标签。
下面的示例展示了如何更改表的安全标签。
SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';
在 SQL 标准中没有SECURITY LABEL命令。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。