支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

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 |
  PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  PUBLICATION object_name |
  ROLE object_name |
  ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  SCHEMA object_name |
  SEQUENCE object_name |
  SUBSCRIPTION object_name |
  TABLESPACE object_name |
  TYPE object_name |
  VIEW object_name
} IS { string_literal | NULL }

where aggregate_signature is:

* |
[ 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
procedure_name
routine_name

要标记的对象的名称。驻留在模式中的对象(表、函数等)的名称可以用模式限定。

provider

要与此标签关联的提供者的名称。命名的提供者必须已加载,并且必须同意提议的标记操作。如果只加载了一个提供者,为了简洁起见,可以省略提供者名称。

argmode

函数、过程或聚合参数的模式:INOUTINOUTVARIADIC。如果省略,则默认为 IN。请注意,SECURITY LABEL 实际上并不关注 OUT 参数,因为只需要输入参数即可确定函数的标识。因此,列出 ININOUTVARIADIC 参数就足够了。

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

另请参见

sepgsql, src/test/modules/dummy_seclabel

提交更正

如果您发现文档中任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单来报告文档问题。