Slpsql
Материал из ALT Linux Wiki
Stanv (обсуждение | вклад) |
Stanv (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
* Методы над каждым объектом(классом): | * Методы над каждым объектом(классом): | ||
http://wiki.postgresql.org/wiki/SEPostgreSQL_References | http://wiki.postgresql.org/wiki/SEPostgreSQL_References | ||
+ | |||
+ | * Страница руководства | ||
+ | # man sepgsql_contexts | ||
== Введение == | == Введение == | ||
Строка 13: | Строка 16: | ||
Данный документ предполагает что администратор имеет необходимые знания для администрировании СУБД PostgreSQL. | Данный документ предполагает что администратор имеет необходимые знания для администрировании СУБД PostgreSQL. | ||
- | + | ||
+ | |||
Основное отличие от RefPolicy: | Основное отличие от RefPolicy: | ||
* убрано разделение объектов СУБД по различным доменам SeLinux для пользователей и администраторов. | * убрано разделение объектов СУБД по различным доменам SeLinux для пользователей и администраторов. | ||
- | * логически | + | * логически, pgsql различает два домена подключаемых пользователей: обычные пользователи, офицер безопасности |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | |||
- | |||
- | |||
- | + | Ключевые моменты: | |
+ | # Политика SeLinux написана для PostgreSQL 9.3 | ||
+ | # Стандартная система разграничения прав доступа PostgresSQL на основе ролей и прав сохраняется. | ||
+ | # Мандатная система доступа, накладываемая SeLinux, является дополнительной, и работает в согласовании с глобальными мандатными метками SeLinux пользователей ОС. | ||
+ | # Предполагается что клиент и сервер находятся в рамках одного узла. | ||
+ | # При необходимости, можно расширить для работы в сети, где клиент и сервер находятся на различных узлах в ОС ALTLinux. Данная схема не тестировалась. | ||
+ | # Для поддержки SeLinux сервер PostgreSQL должен быть изъят из chroot, или в chroot необходимо будет пробрасывать файловую систему в chroot. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | Концепция работы: | |
- | # | + | # Контекст безопасности клиента проверяется при соединении с сокетом сервера PostgreSQL. |
+ | # Ограничение действий в СУБД осуществляет сам сервер PostgreSQL согласно политике SeLinux. | ||
+ | # Ключевой момент состоит в том, что не ядро ОС пресекает запрещенные действия а сервер СУБД. | ||
+ | # В СУБД PostgreSQL встроен менеджер. Данный менеджер работает в пространстве пользователя ОС. | ||
+ | # Менеджер обращается к ядру с использованием libselinux для проверки действий. | ||
+ | # Аналогичным образом работает система Xorg: http://taiga.selinuxproject.org/~rhaines/diagrams/26-x-windows.png | ||
+ | |||
+ | |||
+ | |||
+ | При авторизации в СУБД от имени владельца database в кластере PostgreSQL, будет сохранен его системный мандатный уровень доступа, который будет принимать участие в решении вопросов доступа. | ||
+ | Т.е. возможен такой сценарий: | ||
+ | # В ОС авторизуется пользователь test. | ||
+ | # ОС назначает мандатные права пользователю test в рамках открытой сессии. | ||
+ | # Пользователь меняет свой системный идентификатор пользователя на root: su - | ||
+ | # Манданые права пользователя остаются прежние. | ||
+ | # Авторизуется в СУБД как владелец некой БД. | ||
+ | В итоге получается: даже при таком раскладе он ограничен в своих действиях, так как первоначальный мандатный уровень назначенный пользователю test при открытии сессии сохранился. | ||
+ | |||
Строка 49: | Строка 57: | ||
* Авторизоваться в ОС от имени root. | * Авторизоваться в ОС от имени root. | ||
- | |||
- | |||
- | |||
- | * | + | * Убедится что ОС назначила root мандатные права офицера безопасности: |
- | # | + | # runcon |
- | + | officer_u:officer_r:officer_t:s0-s15:c0.c31 | |
- | |||
- | |||
- | |||
- | |||
+ | * Убедитесь что политика SeLinux содержит модуль psql, в котором присутствует необходимый набор правил: | ||
+ | # semodule -l | grep sql | ||
+ | psql 1.0.4 | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | * | + | * Проверить что установлен сервер СУБД PostgreSQL версии 9.3, а также установлен пакет postgresql9.3-contrib |
- | # | + | # rpm -q postgresql9.3-server postgresql9.3-contrib |
- | + | postgresql9.3-server-9.3.4-alt0.M70P.1 | |
+ | postgresql9.3-contrib-9.3.4-alt0.M70P.1 | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | * Если сервер postgresql запущен, тогда его необходимо временно выключить: | |
- | + | # service postgresql status | |
+ | postgres is running | ||
+ | # service postgresql stop | ||
+ | postgres is running | ||
- | |||
- | |||
- | |||
- | * | + | * В случае если кластер СУБД не инициализирован его необходимо инициализировать: |
- | + | # service postgresql initdb | |
- | # | + | Кластер будет создан по адресу: '''/var/lib/pgsql/data''' |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | * В конфигурационный файл кластера необходимо внести директиву, которая будет указывать использовать SeLinux менеджер. Для этого отредактируйте файл /var/lib/pgsql/data/postgresql.conf, и установите: | |
+ | shared_preload_libraries = 'sepgsql' | ||
+ | sepgsql.permissive = off | ||
+ | sepgsql.debug_audit = on | ||
+ | Внимание: категорически не рекомендуется отключать опцию: '''sepgsql.permissive = off''', так как срабатывание '''denied''' происходит только один раз. Для последующих запросов всегда будет срабатывать '''allow'''. Таким образом эта опция становится бесполезной для отладки. | ||
+ | Опция '''sepgsql.debug_audit = on''' указывает протоколировать результат проверки для каждого действия. | ||
+ | Если не указано другое, логи сохраняются в '''/var/lib/pgsql/pgstartup.log'''. | ||
+ | В случае возникновения непонятных ситуаций, анализ данного фала позволяет установить причину запрета доступа. | ||
- | http://www.postgresql.org/docs/9.3/static/sepgsql.html | + | |
+ | * Следующим шагом будет установка SQL-функций которые неоходимы для работы с мандатными метками. | ||
+ | Данные функции описаны в файле: | ||
+ | # cat /usr/share/pgsql/contrib/sepgsql.sql | ||
+ | … | ||
+ | LOAD '$libdir/sepgsql'; | ||
+ | CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_getcon() RETURNS text AS '$libdir/sepgsql', 'sepgsql_getcon' LANGUAGE C; | ||
+ | CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_setcon(text) RETURNS bool AS '$libdir/sepgsql', 'sepgsql_setcon' LANGUAGE C; | ||
+ | CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_mcstrans_in(text) RETURNS text AS '$libdir/sepgsql', 'sepgsql_mcstrans_in' LANGUAGE C STRICT; | ||
+ | CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_mcstrans_out(text) RETURNS text AS '$libdir/sepgsql', 'sepgsql_mcstrans_out' LANGUAGE C STRICT; | ||
+ | CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_restorecon(text) RETURNS bool AS '$libdir/sepgsql', 'sepgsql_restorecon' LANGUAGE C; | ||
+ | SELECT sepgsql_restorecon(NULL); | ||
+ | О назначение каждой из функций расказано на официальном сайте: http://www.postgresql.org/docs/9.3/static/sepgsql.html | ||
Архитектура PostgreSQL предполагает наличие трех баз данных: | Архитектура PostgreSQL предполагает наличие трех баз данных: | ||
- | + | # postgres - начальная БД, создается при initdb, в случае необходимости можно смело удалить. | |
- | + | # template1 - БД-образец, которая будет взята за основу для вновь создаваемых БД. Сюда администратор ОС может внести нужны изменения, которые будут применимы для всех вновь создаваемых БД. | |
- | + | # template0 - БД-образец, которая является образцом БД без каких либо модификаций со стороны администратора. | |
- | + | Установку функций необходимо осуществлять когда сервер СУБД выключен, в режиме '''--single''' | |
- | Установку функций необходимо осуществлять когда сервер СУБД выключен, в режиме --single | + | В системе серевер PostgreSQL выполняется от имени пользователя '''postgres'''. Поэтому переключимся на него: |
- | В системе серевер PostgreSQL выполняется от имени пользователя postgres | + | # su -l postgres -s /bin/bash |
- | Поэтому переключимся на него: | + | |
- | # su -l postgres -s /bin/bash | + | |
Укажим где находится кластер: | Укажим где находится кластер: | ||
- | $ export PGDATA=/var/lib/pgsql/data | + | $ export PGDATA=/var/lib/pgsql/data |
Для каждой из выше-перечисленных БД установим необходмые функции: | Для каждой из выше-перечисленных БД установим необходмые функции: | ||
+ | $ postgres --single -F -c exit_on_error=true template0 < /usr/share/pgsql/contrib/sepgsql.sql | ||
+ | $ postgres --single -F -c exit_on_error=true template1 < /usr/share/pgsql/contrib/sepgsql.sql | ||
+ | $ postgres --single -F -c exit_on_error=true postgres < /usr/share/pgsql/contrib/sepgsql.sql | ||
- | + | Завершим сеанс пользователя '''postgres'''. | |
- | + | ||
- | + | ||
- | + | ||
- | Завершим сеанс пользователя postgres. | + | |
Также можно выполнять команду в другой вариации: | Также можно выполнять команду в другой вариации: | ||
- | su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D /var/lib/pgsql/data stop -mf" | + | su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D /var/lib/pgsql/data stop -mf" |
- | |||
- | # chkconfig postgresql on | + | * Убедитесь что сервер будет запускаться автоматически при старте системы: |
+ | # chkconfig postgresql on | ||
или | или | ||
- | # systemctl enable postgresql | + | # systemctl enable postgresql |
+ | |||
* Запустите севис СУБД: | * Запустите севис СУБД: | ||
- | # service postgresql start | + | # service postgresql start |
или | или | ||
- | # systemctl start postgresql | + | # systemctl start postgresql |
+ | |||
* Убедитесь что сервер СУБД работает с учетом мандатных прав доступа: | * Убедитесь что сервер СУБД работает с учетом мандатных прав доступа: | ||
- | + | # psql -U postgres postgres | |
- | # psql -U postgres postgres | + | postgres=# SELECT sepgsql_getcon(); |
- | + | ||
- | postgres=# SELECT sepgsql_getcon(); | + | |
sepgsql_getcon | sepgsql_getcon | ||
- | --------------------------------------------- | + | --------------------------------------------- |
- | + | officer_u:officer_r:officer_t:s0-s15:c0.c31 | |
- | (1 строка) | + | (1 строка) |
* Далее производите настройку кластера с учетом ваших требований. Например задайте пароль для владельца БД postgres: | * Далее производите настройку кластера с учетом ваших требований. Например задайте пароль для владельца БД postgres: | ||
- | # ALTER USER postgres with password '123’; | + | # ALTER USER postgres with password '123’; |
- | + | /var/lib/pgsql/data/pg_hba.conf trust -> md5 | |
- | + | ||
- | + | ||
http://scratching.psybermonkey.net/2009/06/postgresql-how-to-reset-user-name.html | http://scratching.psybermonkey.net/2009/06/postgresql-how-to-reset-user-name.html | ||
- | Убедится что менеджер политики в СУБД находится в активном состоянии: | + | * Убедится что менеджер политики в СУБД находится в активном состоянии: |
- | + | postgres=# SHOW sepgsql.permissive; | |
- | postgres=# SHOW sepgsql.permissive; | + | sepgsql.permissive |
- | + | -------------------- | |
- | -------------------- | + | |
off | off | ||
- | (1 строка) | + | (1 строка) |
- | + | ||
- | + | ||
- | + | или из командной строки: | |
- | show all; — показать все настройки СУБД; | + | $ psql -U postgres -t -c 'SHOW sepgsql.permissive' |
+ | show all; — показать все настройки СУБД; | ||
- | |||
- | # ps aZx | grep postgres | + | * Следует убедится что сам сервер получит необходимые права SeLinux. Т.е. он правильно запущен: |
- | officer_u:officer_r:postgresql_t:s0-s5:c0.c15 23438 pts/0 S 0:00 /usr/bin/postgres -D /var/lib/pgsql/data | + | # ps aZx | grep postgres |
+ | officer_u:officer_r:postgresql_t:s0-s5:c0.c15 23438 pts/0 S 0:00 /usr/bin/postgres -D /var/lib/pgsql/data | ||
Версия 12:20, 12 мая 2014
Содержание |
СУБД PostgresSQL в ALTLinux с мандатным уровнем доступа
Дополнительная информация
- Быстрая справка по SQL:
http://www.tutorialspoint.com/postgresql/postgresql_update_query.htm
- Методы над каждым объектом(классом):
http://wiki.postgresql.org/wiki/SEPostgreSQL_References
- Страница руководства
- man sepgsql_contexts
Введение
Данный документ предполагает что администратор имеет необходимые знания для администрировании СУБД PostgreSQL.
Основное отличие от RefPolicy:
- убрано разделение объектов СУБД по различным доменам SeLinux для пользователей и администраторов.
- логически, pgsql различает два домена подключаемых пользователей: обычные пользователи, офицер безопасности
Ключевые моменты:
- Политика SeLinux написана для PostgreSQL 9.3
- Стандартная система разграничения прав доступа PostgresSQL на основе ролей и прав сохраняется.
- Мандатная система доступа, накладываемая SeLinux, является дополнительной, и работает в согласовании с глобальными мандатными метками SeLinux пользователей ОС.
- Предполагается что клиент и сервер находятся в рамках одного узла.
- При необходимости, можно расширить для работы в сети, где клиент и сервер находятся на различных узлах в ОС ALTLinux. Данная схема не тестировалась.
- Для поддержки SeLinux сервер PostgreSQL должен быть изъят из chroot, или в chroot необходимо будет пробрасывать файловую систему в chroot.
Концепция работы:
- Контекст безопасности клиента проверяется при соединении с сокетом сервера PostgreSQL.
- Ограничение действий в СУБД осуществляет сам сервер PostgreSQL согласно политике SeLinux.
- Ключевой момент состоит в том, что не ядро ОС пресекает запрещенные действия а сервер СУБД.
- В СУБД PostgreSQL встроен менеджер. Данный менеджер работает в пространстве пользователя ОС.
- Менеджер обращается к ядру с использованием libselinux для проверки действий.
- Аналогичным образом работает система Xorg: http://taiga.selinuxproject.org/~rhaines/diagrams/26-x-windows.png
При авторизации в СУБД от имени владельца database в кластере PostgreSQL, будет сохранен его системный мандатный уровень доступа, который будет принимать участие в решении вопросов доступа. Т.е. возможен такой сценарий:
- В ОС авторизуется пользователь test.
- ОС назначает мандатные права пользователю test в рамках открытой сессии.
- Пользователь меняет свой системный идентификатор пользователя на root: su -
- Манданые права пользователя остаются прежние.
- Авторизуется в СУБД как владелец некой БД.
В итоге получается: даже при таком раскладе он ограничен в своих действиях, так как первоначальный мандатный уровень назначенный пользователю test при открытии сессии сохранился.
Установка и настройка кластера
- Авторизоваться в ОС от имени root.
- Убедится что ОС назначила root мандатные права офицера безопасности:
# runcon officer_u:officer_r:officer_t:s0-s15:c0.c31
- Убедитесь что политика SeLinux содержит модуль psql, в котором присутствует необходимый набор правил:
# semodule -l | grep sql psql 1.0.4
- Проверить что установлен сервер СУБД PostgreSQL версии 9.3, а также установлен пакет postgresql9.3-contrib
# rpm -q postgresql9.3-server postgresql9.3-contrib postgresql9.3-server-9.3.4-alt0.M70P.1 postgresql9.3-contrib-9.3.4-alt0.M70P.1
- Если сервер postgresql запущен, тогда его необходимо временно выключить:
# service postgresql status postgres is running # service postgresql stop postgres is running
- В случае если кластер СУБД не инициализирован его необходимо инициализировать:
# service postgresql initdb
Кластер будет создан по адресу: /var/lib/pgsql/data
- В конфигурационный файл кластера необходимо внести директиву, которая будет указывать использовать SeLinux менеджер. Для этого отредактируйте файл /var/lib/pgsql/data/postgresql.conf, и установите:
shared_preload_libraries = 'sepgsql' sepgsql.permissive = off sepgsql.debug_audit = on
Внимание: категорически не рекомендуется отключать опцию: sepgsql.permissive = off, так как срабатывание denied происходит только один раз. Для последующих запросов всегда будет срабатывать allow. Таким образом эта опция становится бесполезной для отладки. Опция sepgsql.debug_audit = on указывает протоколировать результат проверки для каждого действия. Если не указано другое, логи сохраняются в /var/lib/pgsql/pgstartup.log. В случае возникновения непонятных ситуаций, анализ данного фала позволяет установить причину запрета доступа.
- Следующим шагом будет установка SQL-функций которые неоходимы для работы с мандатными метками.
Данные функции описаны в файле:
# cat /usr/share/pgsql/contrib/sepgsql.sql … LOAD '$libdir/sepgsql'; CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_getcon() RETURNS text AS '$libdir/sepgsql', 'sepgsql_getcon' LANGUAGE C; CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_setcon(text) RETURNS bool AS '$libdir/sepgsql', 'sepgsql_setcon' LANGUAGE C; CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_mcstrans_in(text) RETURNS text AS '$libdir/sepgsql', 'sepgsql_mcstrans_in' LANGUAGE C STRICT; CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_mcstrans_out(text) RETURNS text AS '$libdir/sepgsql', 'sepgsql_mcstrans_out' LANGUAGE C STRICT; CREATE OR REPLACE FUNCTION pg_catalog.sepgsql_restorecon(text) RETURNS bool AS '$libdir/sepgsql', 'sepgsql_restorecon' LANGUAGE C; SELECT sepgsql_restorecon(NULL);
О назначение каждой из функций расказано на официальном сайте: http://www.postgresql.org/docs/9.3/static/sepgsql.html
Архитектура PostgreSQL предполагает наличие трех баз данных:
- postgres - начальная БД, создается при initdb, в случае необходимости можно смело удалить.
- template1 - БД-образец, которая будет взята за основу для вновь создаваемых БД. Сюда администратор ОС может внести нужны изменения, которые будут применимы для всех вновь создаваемых БД.
- template0 - БД-образец, которая является образцом БД без каких либо модификаций со стороны администратора.
Установку функций необходимо осуществлять когда сервер СУБД выключен, в режиме --single В системе серевер PostgreSQL выполняется от имени пользователя postgres. Поэтому переключимся на него:
# su -l postgres -s /bin/bash
Укажим где находится кластер:
$ export PGDATA=/var/lib/pgsql/data
Для каждой из выше-перечисленных БД установим необходмые функции:
$ postgres --single -F -c exit_on_error=true template0 < /usr/share/pgsql/contrib/sepgsql.sql $ postgres --single -F -c exit_on_error=true template1 < /usr/share/pgsql/contrib/sepgsql.sql $ postgres --single -F -c exit_on_error=true postgres < /usr/share/pgsql/contrib/sepgsql.sql
Завершим сеанс пользователя postgres.
Также можно выполнять команду в другой вариации:
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D /var/lib/pgsql/data stop -mf"
- Убедитесь что сервер будет запускаться автоматически при старте системы:
# chkconfig postgresql on
или
# systemctl enable postgresql
- Запустите севис СУБД:
# service postgresql start
или
# systemctl start postgresql
- Убедитесь что сервер СУБД работает с учетом мандатных прав доступа:
# psql -U postgres postgres postgres=# SELECT sepgsql_getcon(); sepgsql_getcon --------------------------------------------- officer_u:officer_r:officer_t:s0-s15:c0.c31 (1 строка)
- Далее производите настройку кластера с учетом ваших требований. Например задайте пароль для владельца БД postgres:
# ALTER USER postgres with password '123’; /var/lib/pgsql/data/pg_hba.conf trust -> md5
http://scratching.psybermonkey.net/2009/06/postgresql-how-to-reset-user-name.html
- Убедится что менеджер политики в СУБД находится в активном состоянии:
postgres=# SHOW sepgsql.permissive; sepgsql.permissive -------------------- off (1 строка)
или из командной строки:
$ psql -U postgres -t -c 'SHOW sepgsql.permissive' show all; — показать все настройки СУБД;
- Следует убедится что сам сервер получит необходимые права SeLinux. Т.е. он правильно запущен:
# ps aZx | grep postgres officer_u:officer_r:postgresql_t:s0-s5:c0.c15 23438 pts/0 S 0:00 /usr/bin/postgres -D /var/lib/pgsql/data
Количество объектов в БД о которых знает SeLinux:
- SELECT count(*) FROM pg_catalog.pg_seclabels;
count
3582
(1 строка)
В схеме pg_catalog присутствует две дополнительные таблицы:
select * from pg_catalog.pg_seclabel; - связывает ID объекта в БД с его меткой
select * from pg_catalog.pg_seclabels; - имя объекта, его тип, метка
Объекту в БД можно назначить новую метку, отличную от той, которую он получает согласно политике в момент создания.
Типы объектов в БД которые поддерживаются политикой:
database, schemas, tables, columns, sequences, views, functions
или можно это узнать командой:
postgres=# SELECT distinct objtype from pg_catalog.pg_seclabels;
objtype
table column schema database aggregate function view
(7 строк)
http://www.postgresql.org/docs/9.3/static/sepgsql.html
http://en.wikipedia.org/wiki/Data_manipulation_language
Офицер безопасности имеет специальный атрибут (sepgsql_unconfined_type) который позоволяет производить ему любые операции.
- seinfo -tofficer_t -x | grep sql
sepgsql_unconfined_type
- seinfo -ttrusted_t -x | grep sql
sepgsql_unconfined_type
- seinfo -asepgsql_unconfined_type -x
sepgsql_unconfined_type sepgsql_trusted_proc_t officer_t trusted_t
Атрибует sepgsql_client_type маркирует обычного пользователя.
- seinfo -tgeneric_t -x | grep sql
sepgsql_client_type
- seinfo -asepgsql_client_type -x
sepgsql_client_type generic_t
В качестве модуля (расширения) можно подгружать любые файлы имеющие следующий тип:
- seinfo -tdef_t -x | grep sql
sepgsql_module_type
Далее следуют типы (домены) SeLinux которые получают объекты БД:
- seinfo -asepgsql_database_type -x
sepgsql_database_type sepgsql_db_t
- seinfo -asepgsql_schema_type -x
sepgsql_schema_type sepgsql_schema_t
- seinfo -asepgsql_table_type -x
sepgsql_table_type sepgsql_sysobj_t sepgsql_table_t sepgsql_temp_object_t
- seinfo -asepgsql_sysobj_table_type -x
sepgsql_sysobj_table_type sepgsql_sysobj_t
- seinfo -asepgsql_sequence_type -x
sepgsql_sequence_type sepgsql_seq_t sepgsql_temp_object_t
- seinfo -asepgsql_view_type -x
sepgsql_view_type sepgsql_view_t sepgsql_temp_object_t
- seinfo -asepgsql_procedure_type -x
sepgsql_procedure_type sepgsql_proc_exec_t sepgsql_trusted_proc_exec_t sepgsql_temp_object_t
- seinfo -asepgsql_trusted_procedure_type -x
sepgsql_trusted_procedure_type sepgsql_trusted_proc_exec_t
Функции которым «все разрешено» это особый вид субъекта
- seinfo -tsepgsql_trusted_proc_t -x
sepgsql_trusted_proc_t sepgsql_unconfined_type unconfineddomain mlstrustedsubject domain
Пользователь имеющий роль generic_r может «очутиться» в следующий доменах:
- seinfo -rgeneric_r -x
generic_r Dominated Roles: generic_r Types: sepgsql_trusted_proc_t init generic_t kernel_t dbusd_t login_t postgresql_t dolphin_t officer_t systemd_t trusted_t
Пользователь имеющий роль officer_r может «очутиться» в следующий доменах:
- seinfo -rofficer_r -x
officer_r Dominated Roles: officer_r Types: sepgsql_trusted_proc_t init generic_t kernel_t dbusd_t login_t postgresql_t dolphin_t officer_t systemd_t trusted_t
СУБД выполняется в процессе, который имеет следующие характеристики:
- seinfo -tpostgresql_t -x
postgresql_t unconfineddomain mlstrustedsubject domain
SELECT 'system_u:object_r:sepgsql_table_t:s0:c' || id AS security_label, * INTO t FROM drink WHERE id in (2,4,6);
Находясь в командной строке psql, полезны следующие команды: \? - список сокращенных команд \l - список баз данных в кластере \dn - список схем в текущей БД SELECT * from pg_catalog.pg_namespace; - также список схем
Внутренности
Объект в схеме создается сам по себе. Запись в схему не происходит. create идет только как