SECURITY LABEL#
SECURITY LABEL
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-кода, загруженного в ядро.
Провайдер меток определяет, является ли данная метка допустимой и можно ли присвоить эту метку данному объекту. Значение данной метки также остается на усмотрение провайдера меток. Tantor BE не накладывает никаких ограничений на то, как провайдер меток должен интерпретировать метки безопасности; он просто предоставляет механизм для их хранения. На практике эта функция предназначена для интеграции с системами обязательного контроля доступа (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
.
См. также
sepgsql,src/test/modules/dummy_seclabel