• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
Hey Emacs! This file is -*- nroff -*- source.

Author: KaiGai Kohei <kaigai@ak.jp.nec.com> 2009
"selabel_db" "5" "01 декабря 2011" "Security Enhanced Linux" "Документация API SELinux"
"ИМЯ"
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 должны быть указаны следующим образом:

postgres.pg_catalog.pg_class

В разделе ПРИМЕЧАНИЯ доступны более подробные сведения о поддержке баз данных для иерархий пространства имён. Для аргумента object_type должно быть установлено одно из следующих значений:

SELABEL_DB_DATABASE Аргумент object_name определяет имя самой базы данных, например, "postgres".

SELABEL_DB_SCHEMA Аргумент object_name определяет имя объекта схемы, например, "postgres.public".

SELABEL_DB_TABLE Аргумент object_name определяет имя объекта таблицы, например, "postgres.public.my_table"

SELABEL_DB_COLUMN Аргумент object_name определяет имя объекта столбца, например, "postgres.public.my_table.user_id"

SELABEL_DB_TUPLE Аргумент object_name определяет имя объекта таблицы, содержащей кортежи, для которых требуется повторно проставить метки, например, "postgresql.public.my_table". Следует учитывать, что нет способа идентифицировать отдельные объекты кортежа (за исключением условия WHERE для инструкций DML), потому что у них нет имён.

SELABEL_DB_PROCEDURE Аргумент object_name определяет имя объекта процедуры, например, "postgres.public.my_func". Следует учитывать, что поиск отдельных контекстов безопасности для процедур с одинаковыми именами, но разными аргументами не поддерживается.

SELABEL_DB_SEQUENCE Аргумент object_name определяет имя объекта последовательности, например, "postgres.public.my_seq".

SELABEL_DB_BLOB Аргумент object_name определяет имя большого объекта, например, "postgres.16308". Следует учитывать, что у большого объекта нет имени, поэтому он идентифицируется по значению соответствующего идентификатора.

SELABEL_DB_VIEW Аргумент object_name определяет имя объекта просмотра, например, "postgres.public.my_view".

SELABEL_DB_LANGUAGE Аргумент object_name определяет имя объекта языка, например, "postgres.public.tcl".

SELABEL_DB_EXCEPTION Аргумент object_name определяет имя объекта исключения.

SELABEL_DB_DATATYPE Аргумент object_name определяет имя объекта типа или домена, например, postgres.public.my_type.

Все сообщения, созданные с помощью selabel_lookup(3), по умолчанию отправляются в stderr. Это поведение можно изменить с помощью selinux_set_callback(3). selabel_lookup_raw (3) работает аналогично selabel_lookup(3), но не выполняет преобразование контекста. В разделе ФАЙЛЫ приводится описание файлов конфигурации, которые используются для определения контекста объекта базы данных. .
"ПАРАМЕТРЫ"
Помимо глобальных параметров, описание которых приведено в selabel_open(3), эта внутренняя служба распознаёт следующие параметры:

SELABEL_OPT_PATH Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекста базы данных. По умолчанию параметр пытается открыть файл спецификации, предназначенный для SE-PostgreSQL; если этот интерфейс используется другой реляционной СУБД, параметр должен явно объявить файл спецификации, предназначенный для такой реляционной СУБД (подробные сведения см. в разделе ФАЙЛЫ).

.
"ФАЙЛЫ"
То, какой файл контекстов базы данных будет использоваться для получения контекста, зависит от параметра 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 object_name context

Где:

object_type

Строковое представление типа объекта, показанное в разделе Значения строки имени объекта.

object_name

Ключ, который используется для получения контекста на основе object_type. Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой. Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке object_type.

context

К объекту будет применён этот контекст безопасности.

Далее приведён пример для 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 .

"ПРИМЕЧАНИЯ"
"1." 4
Для целевой реляционной СУБД необходимо записать подходящий файл контекстов базы данных и использовать для его загрузки параметр SELABEL_OPT_PATH в selabel_open(3).
"2." 4
Иерархия пространства имён для объектов базы данных зависит от реляционной СУБД, но интерфейсы selabel* не предусматривают какой-либо особой поддержки иерархии пространства имён. В иерархии пространства имён SE-PostgreSQL объектом верхнего уровня является база данных, объектом следующего уровня - схема. На следующем после объекта схемы уровне могут находиться другие типы объектов, например, таблицы и процедуры. Эта иерархия поддерживается следующим образом:

Если для таблицы "my_table" в схеме "public" внутри базы данных "postgres" требуется контекст безопасности, то параметрами selabel_lookup(3) для object_type будет SELABEL_DB_TABLE, для object_name - "postgres.public.my_table", контекст безопасности (если доступно) будет возвращён в context.

"3." 4
Если контексты должны быть проверены, необходимо указать глобальный параметр SELABEL_OPT_VALIDATE перед вызовом selabel_open(3). Если этот параметр не указан, может быть возвращён недействительный контекст. .
"СМОТРИТЕ ТАКЖЕ"
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>.