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