selabel_db(5) | Документация API SELinux | selabel_db(5) |
selabel_db - интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов объектов RDBMS (реляционная СУБД)
#include <selinux/label.h>
int selabel_lookup(struct selabel_handle
*hnd,
char **context,
const char *object_name, int object_type);
int selabel_lookup_raw(struct selabel_handle
*hnd,
char **context,
const char *object_name, int
object_type);
Внутренняя
служба
контекста
базы
данных
сопоставляет
имя и класс
объекта с
контекстами
безопасности.
Это
действие
позволяет
найти
правильный
контекст
для
объектов
базы
данных при
повторном
проставлении
меток для
определённой
базы
данных.
Необходимо
освободить
возвращённый
context с
помощью freecon(3).
selabel_lookup(3)
описывает
функцию с
её
возвращаемыми
значениями
и кодами
ошибок.
object_name должно быть полным именем, которое использует иерархию объектов базы данных. Например, таблица pg_class в базе данных postgres и схема pg_catalog должны быть указаны следующим образом:
В разделе ПРИМЕЧАНИЯ доступны более подробные сведения о поддержке баз данных для иерархий пространства имён.
Для аргумента object_type должно быть установлено одно из следующих значений:
Все сообщения, созданные с помощью selabel_lookup(3), по умолчанию отправляются в stderr. Это поведение можно изменить с помощью selinux_set_callback(3).
selabel_lookup_raw(3) работает аналогично selabel_lookup(3), но не выполняет преобразование контекста.
В разделе ФАЙЛЫ приводится описание файлов конфигурации, которые используются для определения контекста объекта базы данных.
Помимо глобальных параметров, описание которых приведено в selabel_open(3), эта внутренняя служба распознаёт следующие параметры:
То, какой файл контекстов базы данных будет использоваться для получения контекста, зависит от параметра SELABEL_OPT_PATH, переданного в selabel_open(3). Если NULL, то значением SELABEL_OPT_PATH по умолчанию станет расположение контекстов базы данных активной политики (возвращённое selinux_sepgsql_context_path(3)). В ином случае будет использоваться фактическое указанное значение SELABEL_OPT_PATH (этот вариант необходимо использовать для поддержки баз данных, отличных от SE-PostgreSQL).
Файл контекстов объекта базы данных по умолчанию:
Где {SELINUXTYPE} - запись из файла конфигурации selinux config (см. selinux_config(5)).
Записи внутри файла контекстов базы данных показаны в разделах Значения строки имени объекта и ФОРМАТ ФАЙЛА.
Имена строк, назначенные аргументам object_type, которые могут присутствовать в файле контекстов базы данных:
object_type | Текстовое имя |
SELABEL_DB_DATABASE | db_database |
SELABEL_DB_SCHEMA | db_schema |
SELABEL_DB_VIEW | db_view |
SELABEL_DB_LANGUAGE | db_language |
SELABEL_DB_TABLE | db_table |
SELABEL_DB_COLUMN | db_column |
SELABEL_DB_TUPLE | db_tuple |
SELABEL_DB_PROCEDURE | db_procedure |
SELABEL_DB_SEQUENCE | db_sequence |
SELABEL_DB_BLOB | db_blob |
SELABEL_DB_EXCEPTION | db_exception |
SELABEL_DB_DATATYPE | db_datatype |
Каждая строка внутри файла контекстов базы данных имеет следующий вид:
Где:
Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой.
Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке object_type.
Далее приведён пример для SE-PostgreSQL:
# ./contexts/sepgsql_contexts file
# object_type object_name context
db_database my_database system_u:object_r:sepgsql_db_t:s0
db_database * system_u:object_r:sepgsql_db_t:s0
db_schema *.* system_u:object_r:sepgsql_schema_t:s0
db_tuple row_low system_u:object_r:sepgsql_table_t:s0
db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0
В иерархии пространства имён SE-PostgreSQL объектом верхнего уровня является база данных, объектом следующего уровня - схема. На следующем после объекта схемы уровне могут находиться другие типы объектов, например, таблицы и процедуры. Эта иерархия поддерживается следующим образом:
Если для таблицы "my_table" в схеме "public" внутри базы данных "postgres" требуется контекст безопасности, то параметрами selabel_lookup(3) для object_type будет SELABEL_DB_TABLE, для object_name - "postgres.public.my_table", контекст безопасности (если доступно) будет возвращён в context.
selinux(8), selabel_open(3), selabel_lookup(3), selabel_stats(3), selabel_close(3), selinux_set_callback(3), selinux_sepgsql_context_path(3), freecon(3), selinux_config(5)
Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
01 декабря 2011 | Security Enhanced Linux |