SECURITY LABEL#

SECURITY LABEL

SECURITY LABEL

SECURITY LABEL — определить или изменить метку безопасности, применяемую к объекту

Синтаксис

SECURITY LABEL [ FOR provider ] ON
{
  TABLE object_name |
  COLUMN table_name.column_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  DATABASE object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  LARGE OBJECT large_object_oid |
  MATERIALIZED VIEW object_name |
  [ PROCEDURAL ] LANGUAGE object_name |
  PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  PUBLICATION object_name |
  ROLE object_name |
  ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  SCHEMA object_name |
  SEQUENCE object_name |
  SUBSCRIPTION object_name |
  TABLESPACE object_name |
  TYPE object_name |
  VIEW object_name
} IS { string_literal | NULL }

where aggregate_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