|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
.\"
|
|
|
.\" Author: KaiGai Kohei <kaigai@ak.jp.nec.com> 2009
|
|
|
.TH "selabel_db" "5" "01 декабря 2011" "Security Enhanced Linux" "Документация API SELinux"
|
|
|
.SH "ИМЯ"
|
|
|
selabel_db \- интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов объектов RDBMS (реляционная СУБД)
|
|
|
.
|
|
|
.SH "ОБЗОР"
|
|
|
.B #include <selinux/label.h>
|
|
|
.sp
|
|
|
.BI "int selabel_lookup(struct selabel_handle *" hnd ,
|
|
|
.in +\w'int selabel_lookup('u
|
|
|
.BI "char **" context ,
|
|
|
.br
|
|
|
.BI "const char *" object_name ", int " object_type ");"
|
|
|
.in
|
|
|
.sp
|
|
|
.BI "int selabel_lookup_raw(struct selabel_handle *" hnd ,
|
|
|
.in +\w'int selabel_lookup('u
|
|
|
.BI "char **" context ,
|
|
|
.br
|
|
|
.BI "const char *" object_name ", int " object_type ");"
|
|
|
.
|
|
|
.SH "ОПИСАНИЕ"
|
|
|
Внутренняя служба контекста базы данных сопоставляет имя и класс объекта с контекстами безопасности. Это действие позволяет найти правильный контекст для объектов базы данных при повторном проставлении меток для определённой базы данных. Необходимо освободить возвращённый \fIcontext\fR с помощью \fBfreecon\fR(3).
|
|
|
.br
|
|
|
\fBselabel_lookup\fR(3) описывает функцию с её возвращаемыми значениями и кодами ошибок.
|
|
|
.sp
|
|
|
\fIobject_name\fR должно быть полным именем, которое использует иерархию объектов базы данных. Например, таблица \fBpg_class\fR в базе данных \fBpostgres\fR и схема \fBpg_catalog\fR должны быть указаны следующим образом:
|
|
|
.RS
|
|
|
.B postgres.pg_catalog.pg_class
|
|
|
.RE
|
|
|
.sp
|
|
|
В разделе \fBПРИМЕЧАНИЯ\fR доступны более подробные сведения о поддержке баз данных для иерархий пространства имён.
|
|
|
.sp
|
|
|
Для аргумента \fIobject_type\fR должно быть установлено одно из следующих значений:
|
|
|
.RS
|
|
|
.TP
|
|
|
.B SELABEL_DB_DATABASE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя самой базы данных, например, "postgres".
|
|
|
.TP
|
|
|
.B SELABEL_DB_SCHEMA
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта схемы, например, "postgres.public".
|
|
|
.TP
|
|
|
.B SELABEL_DB_TABLE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта таблицы, например, "postgres.public.my_table"
|
|
|
.TP
|
|
|
.B SELABEL_DB_COLUMN
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта столбца, например, "postgres.public.my_table.user_id"
|
|
|
.TP
|
|
|
.B SELABEL_DB_TUPLE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта таблицы, содержащей кортежи, для которых требуется повторно проставить метки, например, "postgresql.public.my_table". Следует учитывать, что нет способа идентифицировать отдельные объекты кортежа (за исключением условия WHERE для инструкций DML), потому что у них нет имён.
|
|
|
.TP
|
|
|
.B SELABEL_DB_PROCEDURE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта процедуры, например, "postgres.public.my_func". Следует учитывать, что поиск отдельных контекстов безопасности для процедур с одинаковыми именами, но разными аргументами не поддерживается.
|
|
|
.TP
|
|
|
.B SELABEL_DB_SEQUENCE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта последовательности, например, "postgres.public.my_seq".
|
|
|
.TP
|
|
|
.B SELABEL_DB_BLOB
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя большого объекта, например, "postgres.16308".
|
|
|
Следует учитывать, что у большого объекта нет имени, поэтому он идентифицируется по значению соответствующего идентификатора.
|
|
|
.TP
|
|
|
.B SELABEL_DB_VIEW
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта просмотра, например, "postgres.public.my_view".
|
|
|
.TP
|
|
|
.B SELABEL_DB_LANGUAGE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта языка, например, "postgres.public.tcl".
|
|
|
.TP
|
|
|
.B SELABEL_DB_EXCEPTION
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта исключения.
|
|
|
.TP
|
|
|
.B SELABEL_DB_DATATYPE
|
|
|
Аргумент
|
|
|
.I object_name
|
|
|
определяет имя объекта типа или домена, например, postgres.public.my_type.
|
|
|
.RE
|
|
|
.sp
|
|
|
Все сообщения, созданные с помощью \fBselabel_lookup\fR(3), по умолчанию отправляются в \fIstderr\fR. Это поведение можно изменить с помощью \fBselinux_set_callback\fR(3).
|
|
|
.sp
|
|
|
.BR selabel_lookup_raw (3)
|
|
|
работает аналогично \fBselabel_lookup\fR(3), но не выполняет преобразование контекста.
|
|
|
.sp
|
|
|
В разделе \fBФАЙЛЫ\fR приводится описание файлов конфигурации, которые используются для определения контекста объекта базы данных.
|
|
|
.
|
|
|
.SH "ПАРАМЕТРЫ"
|
|
|
Помимо глобальных параметров, описание которых приведено в \fBselabel_open\fR(3), эта внутренняя служба распознаёт следующие параметры:
|
|
|
.RS
|
|
|
.TP
|
|
|
.B SELABEL_OPT_PATH
|
|
|
Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекста базы данных.
|
|
|
По умолчанию параметр пытается открыть файл спецификации, предназначенный для SE-PostgreSQL; если этот интерфейс используется другой реляционной СУБД, параметр должен явно объявить файл спецификации, предназначенный для такой реляционной СУБД (подробные сведения см. в разделе \fBФАЙЛЫ\fR).
|
|
|
.RE
|
|
|
.
|
|
|
.SH "ФАЙЛЫ"
|
|
|
То, какой файл контекстов базы данных будет использоваться для получения контекста, зависит от параметра \fBSELABEL_OPT_PATH\fR, переданного в \fBselabel_open\fR(3). Если \fINULL\fR, то значением \fBSELABEL_OPT_PATH\fR по умолчанию станет расположение контекстов базы данных активной политики (возвращённое \fBselinux_sepgsql_context_path\fR(3)). В ином случае будет использоваться фактическое указанное значение \fBSELABEL_OPT_PATH\fR (этот вариант необходимо использовать для поддержки баз данных, отличных от SE-PostgreSQL).
|
|
|
.sp
|
|
|
Файл контекстов объекта базы данных по умолчанию:
|
|
|
.RS
|
|
|
.I /etc/selinux/{SELINUXTYPE}/contexts/sepgsql_context
|
|
|
.RE
|
|
|
.sp
|
|
|
Где \fI{SELINUXTYPE}\fR - запись из файла конфигурации selinux \fIconfig\fR (см. \fBselinux_config\fR(5)).
|
|
|
.sp
|
|
|
Записи внутри файла контекстов базы данных показаны в разделах \fBЗначения строки имени объекта\fR и \fBФОРМАТ ФАЙЛА\fR.
|
|
|
.
|
|
|
.SH "Значения строки имени объекта"
|
|
|
Имена строк, назначенные аргументам \fIobject_type\fR, которые могут присутствовать в файле контекстов базы данных:
|
|
|
.TS
|
|
|
center, allbox, tab(@);
|
|
|
lI lB
|
|
|
lB l .
|
|
|
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
|
|
|
.TE
|
|
|
.
|
|
|
.SH "ФОРМАТ ФАЙЛА"
|
|
|
Каждая строка внутри файла контекстов базы данных имеет следующий вид:
|
|
|
.RS
|
|
|
.I object_type object_name context
|
|
|
.RE
|
|
|
.sp
|
|
|
Где:
|
|
|
.RS
|
|
|
.I object_type
|
|
|
.RS
|
|
|
Строковое представление типа объекта, показанное в разделе \fBЗначения строки имени объекта\fR.
|
|
|
.RE
|
|
|
.I object_name
|
|
|
.RS
|
|
|
Ключ, который используется для получения контекста на основе \fIobject_type\fR.
|
|
|
.sp
|
|
|
Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой.
|
|
|
.sp
|
|
|
Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке \fIobject_type\fR.
|
|
|
.RE
|
|
|
.I context
|
|
|
.RS
|
|
|
К объекту будет применён этот контекст безопасности.
|
|
|
.RE
|
|
|
.RE
|
|
|
.sp
|
|
|
Далее приведён пример для SE-PostgreSQL:
|
|
|
.sp
|
|
|
# ./contexts/sepgsql_contexts file
|
|
|
.br
|
|
|
# object_type object_name context
|
|
|
.br
|
|
|
db_database my_database system_u:object_r:sepgsql_db_t:s0
|
|
|
.br
|
|
|
db_database * system_u:object_r:sepgsql_db_t:s0
|
|
|
.br
|
|
|
db_schema *.* system_u:object_r:sepgsql_schema_t:s0
|
|
|
.br
|
|
|
db_tuple row_low system_u:object_r:sepgsql_table_t:s0
|
|
|
.br
|
|
|
db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
|
|
|
.br
|
|
|
db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0
|
|
|
.
|
|
|
.SH "ПРИМЕЧАНИЯ"
|
|
|
.IP "1." 4
|
|
|
Для целевой реляционной СУБД необходимо записать подходящий файл контекстов базы данных и использовать для его загрузки параметр \fBSELABEL_OPT_PATH\fR в \fBselabel_open\fR(3).
|
|
|
.IP "2." 4
|
|
|
Иерархия пространства имён для объектов базы данных зависит от реляционной СУБД, но интерфейсы \fIselabel*\fR не предусматривают какой-либо особой поддержки иерархии пространства имён.
|
|
|
.sp
|
|
|
В иерархии пространства имён SE-PostgreSQL объектом верхнего уровня является база данных, объектом следующего уровня - схема. На следующем после объекта схемы уровне могут находиться другие типы объектов, например, таблицы и процедуры. Эта иерархия поддерживается следующим образом:
|
|
|
.RS
|
|
|
.RS
|
|
|
.sp
|
|
|
Если для таблицы "my_table" в схеме "public"
|
|
|
внутри базы данных "postgres" требуется контекст безопасности, то параметрами \fBselabel_lookup\fR(3)
|
|
|
для \fIobject_type\fR будет \fBSELABEL_DB_TABLE\fR, для \fIobject_name\fR - "postgres.public.my_table", контекст безопасности (если доступно) будет возвращён в \fIcontext\fR.
|
|
|
.RE
|
|
|
.RE
|
|
|
.IP "3." 4
|
|
|
Если контексты должны быть проверены, необходимо указать глобальный параметр \fBSELABEL_OPT_VALIDATE\fR перед вызовом \fBselabel_open\fR(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
|
|
|
.
|
|
|
.SH "СМОТРИТЕ ТАКЖЕ"
|
|
|
.ad l
|
|
|
.nh
|
|
|
.BR 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) "
|
|
|
|
|
|
|
|
|
.SH АВТОРЫ
|
|
|
Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.
|