SECURITY LABEL — 定義或變更應用於物件的安全標籤
SECURITY LABEL [ FORprovider
] ON { TABLEobject_name
| COLUMNtable_name
.column_name
| AGGREGATEaggregate_name
(aggregate_signature
) | DATABASEobject_name
| DOMAINobject_name
| EVENT TRIGGERobject_name
| FOREIGN TABLEobject_name
| FUNCTIONfunction_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | LARGE OBJECTlarge_object_oid
| MATERIALIZED VIEWobject_name
| [ PROCEDURAL ] LANGUAGEobject_name
| PROCEDUREprocedure_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | PUBLICATIONobject_name
| ROLEobject_name
| ROUTINEroutine_name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] | SCHEMAobject_name
| SEQUENCEobject_name
| SUBSCRIPTIONobject_name
| TABLESPACEobject_name
| TYPEobject_name
| VIEWobject_name
} IS {string_literal
| NULL } whereaggregate_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
函數、程序或聚合引數的模式:IN
、OUT
、INOUT
或 VARIADIC
。如果省略,預設值為 IN
。請注意,SECURITY LABEL
實際上不注意 OUT
引數,因為只需要輸入引數即可確定函數的身份。因此,列出 IN
、INOUT
和 VARIADIC
引數就足夠了。
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
指令。
src/test/modules/dummy_seclabel
如果您在文件中發現任何不正確、與特定功能的體驗不符或需要進一步澄清的地方,請使用此表格回報文件問題。