问题报告 纠错本页面

SECURITY LABEL

名称

SECURITY LABEL -- 定义或改变一个应用于对象的安全标签

大纲

SECURITY LABEL [ FOR provider ] ON
{
  TABLE object_name |
  COLUMN table_name.column_name |
  AGGREGATE agg_name (agg_type [, ...] ) |
  DATABASE object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN TABLE object_name
  FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
  LARGE OBJECT large_object_oid |
  MATERIALIZED VIEW object_name |
  [ PROCEDURAL ] LANGUAGE object_name |
  ROLE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  TABLESPACE object_name |
  TYPE object_name |
  VIEW object_name
} IS 'label'

描述

SECURITY LABEL为一个数据库对象申请一个安全标签。 每一个标签提供程序的任意数量的安全标签都可以与一个给定的数据库对象关联。 标签提供者是可加载模块,通过使用函数register_label_provider记录他们自己。

注意: register_label_provider不是SQL函数;只能从C代码存入后端调用。

标签提供者决定一个给定的标签是否有效,并且是否允许将那个标签分配给一个给定的对象。 给定标签的含义和标签提供者的描述相同。PostgreSQL 不限制标签提供者是否或如何解释安全标签;只是提供过一个存储它们的机制。实际上, 这个便利是为了允许集成基于标签的强制访问控制(MAC)系统,如SE-Linux。 这样的系统使得访问控制决策基于对象标签,而不是传统的自主访问控制(DAC)概念,如用户和组。

参数

object_name
table_name.column_name
agg_name
function_name

有标签的对象的名字。可模式修饰的表、集群、域、外部表、函数、序列、类型和视图的名字。

provider

与这个标签相关的提供者的名字。被指名的提供者必须被加载并且必须同意提出的标签操作。 如果只加载了一个提供者,那么为了简洁会省略提供者的名字。

arg_type

聚集函数操作的输入数据类型。要引用一个零参数的聚集函数,在输入数据类型的列表位置写*

argmode

函数参数的模式:IN, OUT, INOUT, 或 VARIADIC。 如果省略,缺省是IN。请注意,SECURITY LABEL ON FUNCTION 并不实际注意OUT参数,因为只需要输入参数判断函数的安全。 所以列出IN, INOUT, 和 VARIADIC就足够了。

argname

函数参数的名字。请注意,SECURITY LABEL ON FUNCTION 并不实际注意参数名字,因为只需要参数数据类型判断函数的身份。

argtype

如果有,是函数参数的数据类型(可以有模式修饰)。

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命令。

又见

sepgsql, dummy_seclabel