↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
历史版本。 PostgreSQL 9.4 已结束支持。 2020-02-13. 请参阅 当前版本手册.

SECURITY LABEL

SECURITY LABEL — 定义或更改应用于对象的安全标签

大纲

SECURITY LABEL [ FOR provider ] ON
{
  TABLE object_name |
  COLUMN table_name.column_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  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'

其中aggregate_signature为:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

描述

SECURITY LABEL为数据库对象设置安全标签。一个给定的数据库对象可以关联任意数量的安全标签,每个标签提供者对应一个。标签提供者是使用函数register_label_provider注册自身的可加载模块。

注意

register_label_provider不是一个 SQL 函数;它只能从加载到后端的 C 代码中调用。

标签提供者决定给定标签是否有效,以及是否允许将该标签赋给给定对象。给定标签的含义同样由标签提供者自行决定。PostgreSQL不限制标签提供者是否解释安全标签,也不限制其如何解释;它仅提供一种存储安全标签的机制。实际上,此功能旨在支持与基于标签的强制访问控制(MAC)系统(例如SELinux)集成。这类系统基于对象标签,而不是基于用户和组等传统的自主访问控制(DAC)概念,做出所有访问控制决策。

参数

object_name
table_name.column_name
aggregate_name
function_name

要加上安全标签的对象名称。表、聚合、域、外部表、函数、序列、类型和视图的名称可以带模式限定。

provider

要与该标签关联的标签提供者名称。指定的提供者必须已加载,并且必须同意所提议的标签设置操作。若只加载了一个提供者,则为简洁起见可以省略其名称。

argmode

函数或聚合函数参数的模式:IN、OUT、INOUT或VARIADIC。如果省略,默认值是 IN。注意SECURITY LABEL实际上并不关心OUT参数,因为确定函数身份只需要输入参数。因此,列出 IN、INOUT和VARIADIC参数就足够了。

argname

函数或聚合函数参数的名称。注意SECURITY LABEL 实际上并不关心参数名称,因为确定函数身份只需要参数数据类型。

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.