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, коÑоÑÑе могÑÑ Ð¿ÑиÑÑÑÑÑвоваÑÑ Ð² Ñайле конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ:
ФÐÐ ÐÐТ ФÐÐÐÐ
ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока внÑÑÑи Ñайла конÑекÑÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий вид:
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)
ÐÐТÐРЫ
ÐеÑевод на ÑÑÑÑкий ÑзÑк вÑполнила ÐеÑаÑименко ÐлеÑÑ