File: selabel_db.5

package info (click to toggle)
android-platform-external-libselinux 10.0.0%2Br36-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 34,176 kB
  • sloc: ansic: 147,112; python: 25,790; makefile: 1,930; yacc: 1,389; sh: 1,206; lex: 452; xml: 180
file content (219 lines) | stat: -rw-r--r-- 13,409 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
.\" 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>.