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_signatureis: * | [argmode] [argname]argtype[ , ... ] | [ [argmode] [argname]argtype[ , ... ] ] ORDER BY [argmode] [argname]argtype[ , ... ]
SECURITY LABEL 將安全標籤應用於資料庫物件。一個給定的資料庫物件可以關聯任意數量的安全標籤,每個標籤提供者一個。標籤提供者是可透過載入註冊自己的可載入模組,這些模組透過使用 register_label_provider 函式進行註冊。
register_label_provider 不是一個 SQL 函式;它只能從載入到後端(backend)的 C 程式碼中呼叫。
標籤提供者決定給定的標籤是否有效,以及是否允許將該標籤分配給給定的物件。給定的標籤的含義同樣由標籤提供者自行決定。PostgreSQL 不對標籤提供者如何解釋安全標籤施加任何限制;它僅提供一個儲存它們的機制。實際上,此功能旨在允許與基於標籤的強制訪問控制(MAC)系統(如 SELinux)整合。此類系統基於物件標籤而不是傳統的自主訪問控制(DAC)概念(如使用者和組)做出所有訪問控制決策。
要使用 SECURITY LABEL,您必須擁有該資料庫物件的所有權。
object_nametable_name.column_nameaggregate_namefunction_nameprocedure_nameroutine_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
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用此表格報告文件問題。