You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

.\" 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>.