支援的版本: 目前 (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

提交更正

如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用此表格回報文件問題。