selabel_db

ÐÐЯ
ÐÐÐÐР
ÐÐÐСÐÐÐÐ
ÐÐРÐÐÐТРЫ
ФÐÐÐЫ
ÐнаÑÐµÐ½Ð¸Ñ ÑÑÑоки имени обÑекÑа
ФÐРÐÐТ ФÐÐÐÐ
ÐРÐÐÐЧÐÐÐЯ
СÐÐТРÐТРТÐÐÐÐ
ÐÐТÐРЫ


ÐÐЯ

selabel_db − инÑеÑÑÐµÐ¹Ñ Ð¿ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑок SELinux в пÑоÑÑÑанÑÑве полÑзоваÑÐµÐ»Ñ Ð¸ ÑоÑÐ¼Ð°Ñ Ñайла конÑигÑÑаÑии Ð´Ð»Ñ Ð²Ð½ÑÑÑенней ÑлÑÐ¶Ð±Ñ ÐºÐ¾Ð½ÑекÑÑов обÑекÑов RDBMS (ÑелÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ Ð¡Ð£ÐÐ)

ÐÐÐÐР

#include

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).

Файл конÑекÑÑов обÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð¾ ÑмолÑаниÑ:

/etc/selinux/{SELINUXTYPE}/contexts/sepgsql_context

Ðде {SELINUXTYPE} – запиÑÑ Ð¸Ð· Ñайла конÑигÑÑаÑии selinux config (Ñм. selinux_config(5)).

ÐапиÑи внÑÑÑи Ñайла конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð² ÑÐ°Ð·Ð´ÐµÐ»Ð°Ñ ÐнаÑÐµÐ½Ð¸Ñ ÑÑÑоки имени обÑекÑа и ФÐРÐÐТ ФÐÐÐÐ.

ÐнаÑÐµÐ½Ð¸Ñ ÑÑÑоки имени обÑекÑа

Ðмена ÑÑÑок, назнаÑеннÑе аÑгÑменÑам object_type, коÑоÑÑе могÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² Ñайле конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ:

Image grohtml-1003401.png

ФÐРÐÐТ ФÐÐÐÐ

ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока внÑÑÑи Ñайла конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий вид:

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 bodies manpages.csv script_extrae_body.sh script.sh usr system_u:object_r:sepgsql_db_t:s0
db_schema manpages.csv script_extrae_body.sh script.sh 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.

ÐÐ»Ñ Ñелевой ÑелÑÑионной СУÐРнеобÑодимо запиÑаÑÑ Ð¿Ð¾Ð´ÑодÑÑий Ñайл конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ иÑполÑзоваÑÑ Ð´Ð»Ñ ÐµÐ³Ð¾ загÑÑзки паÑамеÑÑ SELABEL_OPT_PATH в selabel_open(3).

2.

ÐеÑаÑÑÐ¸Ñ Ð¿ÑоÑÑÑанÑÑва имÑн Ð´Ð»Ñ Ð¾Ð±ÑекÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð·Ð°Ð²Ð¸ÑÐ¸Ñ Ð¾Ñ ÑелÑÑионной СУÐÐ, но инÑеÑÑейÑÑ selabel* не пÑедÑÑмаÑÑиваÑÑ ÐºÐ°ÐºÐ¾Ð¹-либо оÑобой поддеÑжки иеÑаÑÑии пÑоÑÑÑанÑÑва имÑн.

РиеÑаÑÑии пÑоÑÑÑанÑÑва имÑн SE-PostgreSQL обÑекÑом веÑÑнего ÑÑÐ¾Ð²Ð½Ñ ÑвлÑеÑÑÑ Ð±Ð°Ð·Ð° даннÑÑ, обÑекÑом ÑледÑÑÑего ÑÑÐ¾Ð²Ð½Ñ – ÑÑема. Ðа ÑледÑÑÑем поÑле обÑекÑа ÑÑÐµÐ¼Ñ ÑÑовне могÑÑ Ð½Ð°ÑодиÑÑÑÑ Ð´ÑÑгие ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑов, напÑимеÑ, ÑаблиÑÑ Ð¸ пÑоÑедÑÑÑ. ÐÑа иеÑаÑÑÐ¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑледÑÑÑим обÑазом:

ÐÑли Ð´Ð»Ñ ÑаблиÑÑ “my_table” в ÑÑеме “public” внÑÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ “postgres” ÑÑебÑеÑÑÑ ÐºÐ¾Ð½ÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, Ñо паÑамеÑÑами selabel_lookup(3) Ð´Ð»Ñ object_type бÑÐ´ÐµÑ SELABEL_DB_TABLE, Ð´Ð»Ñ object_name – “postgres.public.my_table”, конÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи (еÑли доÑÑÑпно) бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑÑн в context.

3.

ÐÑли конÑекÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÑовеÑенÑ, необÑодимо ÑказаÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑй паÑамеÑÑ 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)

ÐÐТÐРЫ

ÐеÑевод на ÑÑÑÑкий ÑзÑк вÑполнила ÐеÑаÑименко ÐлеÑÑ .