SECURITY LABEL
SECURITY LABEL — определить или изменить метку безопасности, применённую к объекту
Синтаксис
SECURITY LABEL [ FORпровайдер
] ON { TABLEимя_объекта
| COLUMNимя_таблицы
.имя_столбца
| AGGREGATEимя_агрегатной_функции
(сигнатура_агр_функции
) | DATABASEимя_объекта
| DOMAINимя_объекта
| EVENT TRIGGERимя_объекта
| FOREIGN TABLEимя_объекта
| FUNCTIONимя_функции
[ ( [ [режим_аргумента
] [имя_аргумента
]тип_аргумента
[, ...] ] ) ] | LARGE OBJECToid_большого_объекта
| MATERIALIZED VIEWимя_объекта
| [ PROCEDURAL ] LANGUAGEимя_объекта
| PROCEDUREимя_процедуры
[ ( [ [режим_аргумента
] [имя_аргумента
]тип_аргумента
[, ...] ] ) ] | PUBLICATIONимя_объекта
| ROLEимя_объекта
| ROUTINEимя_подпрограммы
[ ( [ [режим_аргумента
] [имя_аргумента
]тип_аргумента
[, ...] ] ) ] | SCHEMAимя_объекта
| SEQUENCEимя_объекта
| SUBSCRIPTIONимя_объекта
| TABLESPACEимя_объекта
| TYPEимя_объекта
| VIEWимя_объекта
} IS {строковая_константа
| NULL } Здесьсигнатура_агр_функции
: * | [режим_аргумента
] [имя_аргумента
]тип_аргумента
[ , ... ] | [ [режим_аргумента
] [имя_аргумента
]тип_аргумента
[ , ... ] ] ORDER BY [режим_аргумента
] [имя_аргумента
]тип_аргумента
[ , ... ]
Описание
SECURITY LABEL
применяет метку безопасности к объекту базы данных. С определённым объектом может быть связано произвольное количество меток безопасности, по одной для каждого провайдера. Провайдеры меток представляют собой загружаемые модули, которые регистрируют себя, вызывая функцию register_label_provider
.
Примечание
register_label_provider
— это не SQL-функция; её можно вызывать только из скомпилированного кода C, загруженного сервером.
Провайдер меток определяет, допустима ли заданная метка и разрешено ли применять эту метку к указанному объекту. Какой смысл вкладывается в данную метку, тоже определяет провайдер меток. Postgres Pro не накладывает никаких ограничений на то, как провайдер должен интерпретировать метки безопасности; он просто обеспечивает механизм их хранения. На практике, этот механизм реализован для того, чтобы в базы данных можно было интегрировать системы мандатного управления доступом (MAC) на базе меток, такие как SELinux. Такие системы принимают все решения по ограничению доступа, учитывая метки объектов, а не традиционные сущности избирательного управления доступом (DAC), такие как пользователи и группы.
Параметры
имя_объекта
имя_таблицы.имя_столбца
имя_агрегатной_функции
имя_функции
имя_процедуры
имя_подпрограммы
Имя помечаемого объекта. Имена таблиц, агрегатных и обычных функций, процедур, подпрограмм, доменов, сторонних таблиц, последовательностей и представлений можно дополнить именем схемы.
провайдер
Имя провайдера, с которым будет связана эта метка. Указанный провайдер должен быть загружен и готов выполнять операцию размечивания. Если загружен всего один провайдер, его имя можно опустить для краткости.
режим_аргумента
Режим аргумента функции, процедуры или агрегата:
IN
,OUT
,INOUT
илиVARIADIC
. По умолчанию подразумеваетсяIN
. Заметьте, чтоSECURITY LABEL
не учитывает аргументыOUT
, так как для идентификации функции нужны только типы входных аргументов. Поэтому достаточно перечислить только аргументыIN
,INOUT
иVARIADIC
.имя_аргумента
Имя аргумента функции, процедуры или агрегата. Заметьте, что на самом деле
SECURITY LABEL
не обращает внимание на имена аргументов, так как для однозначной идентификации функции достаточно только типов аргументов.тип_аргумента
Тип данных аргумента функции, процедуры или агрегата.
oid_большого_объекта
OID большого объекта.
PROCEDURAL
Это слово не несёт смысловой нагрузки.
строковая_константа
Новое значение метки безопасности, записанное в виде строковой константы.
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;
Совместимость
Команда SECURITY LABEL
отсутствует в стандарте SQL.
См. также
sepgsql37.13. column_options
The view column_options
contains all the options defined for foreign table columns in the current database. Only those foreign table columns are shown that the current user has access to (by way of being the owner or having some privilege).
Table 37.11. column_options
Columns
Name | Data Type | Description |
---|---|---|
table_catalog | sql_identifier | Name of the database that contains the foreign table (always the current database) |
table_schema | sql_identifier | Name of the schema that contains the foreign table |
table_name | sql_identifier | Name of the foreign table |
column_name | sql_identifier | Name of the column |
option_name | sql_identifier | Name of an option |
option_value | character_data | Value of the option |