SECURITY LABEL
SECURITY LABEL — определить или изменить метку безопасности, применённую к объекту
Синтаксис
SECURITY LABEL [ FORпровайдер] ON { TABLEимя_объекта| COLUMNимя_таблицы.имя_столбца| AGGREGATEимя_агрегатной_функции(сигнатура_агр_функции) | DATABASEимя_объекта| DOMAINимя_объекта| EVENT TRIGGERимя_объекта| FOREIGN TABLEимя_объектаFUNCTIONимя_функции[ ( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) ] | LARGE OBJECToid_большого_объекта| MATERIALIZED VIEWимя_объекта| [ PROCEDURAL ] LANGUAGEимя_объекта| PUBLICATIONимя_объекта| ROLEимя_объекта| SCHEMAимя_объекта| SEQUENCEимя_объекта| SUBSCRIPTIONимя_объекта| TABLESPACEимя_объекта| TYPEимя_объекта| VIEWимя_объекта} IS 'метка' Здесьсигнатура_агр_функции: * | [режим_аргумента] [имя_аргумента]тип_аргумента[ , ... ] | [ [режим_аргумента] [имя_аргумента]тип_аргумента[ , ... ] ] 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, если метку безопасности нужно удалить.
Примеры
Следующий пример показывает, как можно изменить метку безопасности для таблицы.
SECURITY LABEL FOR selinux ON TABLE mytable IS 'system_u:object_r:sepgsql_table_t:s0';
Совместимость
Команда SECURITY LABEL отсутствует в стандарте SQL.
См. также
src/test/modules/dummy_seclabel