powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Astra Linux SE 1.6 Smolensk + pgAdmin3
4 сообщений из 4, страница 1 из 1
Astra Linux SE 1.6 Smolensk + pgAdmin3
    #40055462
privet.romantik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте.
Мне необходимо выполнить первоначальную настройку PostgreSQL с учетом мандатного управления доступом.

Вначале установил сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin3 для работы с БД:
Код: powershell
1.
2.
sudo apt-get install postgresql postgresql-client postgresql-contrib
sudo apt-get install pgadmin3



Для удобства изменил пароль для ‘postgres’, чтобы его использовать его для задач системного администрирования.
Код: powershell
1.
2.
3.
sudo su postgres -c psql postgres
ALTER USER postgres WITH PASSWORD ‘password’;
\q



Аналогично необходимо поступить с unix-пользователем ‘postgres’, т.к. пароли должны быть одинаковыми:
Код: powershell
1.
2.
sudo passwd -d postgres
sudo su postgres -c passwd



В файле /etc/postgresql/9.6/main/postgresql.conf значение параметра ac_ignore_socket_maclabel установил в false.

Для пользователя postgres необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках и привилегиях:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
usermod -a -G shadow postgres
setfacl -d -m u:postgres:r /etc/parsec/macdb
setfacl -R -m u:postgres:r /etc/parsec/macdb
setfacl -m u:postgres:rx /etc/parsec/macdb
setfacl -d -m u:postgres:r /etc/parsec/capdb
setfacl -R -m u:postgres:r /etc/parsec/capdb
setfacl -m u:postgres:rx /etc/parsec/capdb



Следующую инструкцию по настройке нашёл где-то на просторах интернета:
Создание пользователей ОС для тестирования настроенного PostgreSQL:
пытался их создать через терминал, но не получилось, надо определиться с необходимым количеством флагов которые надо задать при создании пользователя, такие как создание домашнего каталога, принадлежность к группам и т.п., поэтому создал пользователей u_0, u_1, u_2 и dbsa через графический интерфейс.

Задал каждому пользователю свои мандатные метки:
{0,0} для u_0:
Код: powershell
1.
sudo usermac -m 0:0 -c 0:0 u_0



{0,1} для u_1:
Код: powershell
1.
sudo usermac -m 0:0 -c 1:1 u_1



{1,1} для u_2:
Код: powershell
1.
sudo usermac -m 1:1 -c 1:1 u_2



{2,3} для dbsa:
Код: powershell
1.
2.
sudo usermac -m 0:2 -c 0:3 dbsa
sudo usercaps -m +2, +3, +4, +5 dbsa #пока не разбирался что именно делает эта команда



Подключение к серверу:
Код: powershell
1.
sudo su postgres -c psql postgres



Скрипт работы с БД с комментариями:
Создаем пользователей:
Код: plsql
1.
2.
3.
4.
CREATE USER u_0 WITH password 'password';
CREATE USER u_1 WITH password 'password';
CREATE USER u_2 WITH password 'password';
CREATE USER dbsa WITH password 'password';



Создаем тестовую базу данных:
Код: plsql
1.
CREATE DATABASE mtest;



Подключаемся к тестовой базе данных:
Код: plsql
1.
\connect mtest



1.3.1 Настройка мандатных атрибутов
Устанавливаем мандатную метку кластера:
Код: plsql
1.
MAC LABEL ON CLUSTER IS '{3, 3}';



сбрасываем признак MAC CCR кластера:
Код: plsql
1.
MAC CCR ON CLUSTER IS OFF;



Устанавливаем метку базы данных:
Код: plsql
1.
MAC LABEL ON DATABASE mtest IS '{2, 3}';



сбрасываем признак MAC CCR у базы данных:
Код: plsql
1.
MAC CCR ON DATABASE mtest IS OFF;



Устанавливаем метку схемы public:
Код: plsql
1.
MAC LABEL ON SCHEMA public IS '{2,3}';



Сбрасываем признак MAC CCR у схемы public:
Код: plsql
1.
MAC CCR ON SCHEMA public IS OFF;



Устанавливаем метку табличного пространства pg_default:
Код: plsql
1.
MAC LABEL ON TABLESPACE pg_default IS '{2, 3}';



Сбрасываем признак MAC CCR у табличного пространства pg_default:
Код: plsql
1.
MAC CCR ON TABLESPACE pg_default IS OFF;



Создаем схему для уровня {0,0}:
Код: plsql
1.
2.
CREATE SCHEMA "Схема_0_00";
GRANT ALL ON SCHEMA "Схема_0_00" TO PUBLIC;



Создаем схему для уровня {1,1}:
Код: plsql
1.
2.
3.
4.
CREATE SCHEMA "Cxema_1_01";
MAC LABEL ON SCHEMA "Cxema_1_01" IS '{1,1}';
MAC CCR ON SCHEMA "Cxema_1_01" IS OFF;
GRANT ALL ON SCHEMA "Cxema_1_01" TO PUBLIC;



1.3.2 Создание тестовой таблицы
Создаем проверочную таблицу с защищенными строками:
Код: plsql
1.
2.
3.
CREATE TABLE "Проверка" ("идентификатор" INTEGER PRIMARY KEY, "данные" TEXT)
WITH (MACS=TRUE);
GRANT ALL ON "Проверка" TO PUBLIC;



Устанавливаем метку таблицы "Проверка":
Код: plsql
1.
MAC LABEL ON TABLE "Проверка" IS '{2,3}';



Сбрасываем признак MAC CCR у таблицы "Проверка":
Код: plsql
1.
MAC CCR ON TABLE "Проверка" IS OFF;



Скрипт без описаний команд:

Код: plsql
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.
CREATE USER u_0 WITH password 'password';
CREATE USER u_1 WITH password 'password';
CREATE USER u_2 WITH password 'password';
CREATE USER dbsa WITH password 'password';
CREATE DATABASE mtest;
\connect mtest
MAC LABEL ON CLUSTER IS '{3, 3}';
MAC CCR ON CLUSTER IS OFF;
MAC LABEL ON DATABASE mtest IS '{2, 3}';
MAC CCR ON DATABASE mtest IS OFF;
MAC LABEL ON SCHEMA public IS '{2,3}';
MAC CCR ON SCHEMA public IS OFF;
MAC LABEL ON TABLESPACE pg_default IS '{2, 3}';
MAC CCR ON TABLESPACE pg_default IS OFF;
CREATE SCHEMA "Схема_0_00";
GRANT ALL ON SCHEMA "Схема_0_00" TO PUBLIC;
CREATE SCHEMA "Схема_1_01";
MAC LABEL ON SCHEMA "Схема_1_01" IS '{1,1}';
MAC CCR ON SCHEMA "Схема_1_01" IS OFF;
GRANT ALL ON SCHEMA "Схема_1_01" TO PUBLIC;
CREATE TABLE "Проверка" ("идентификатор" INTEGER PRIMARY KEY, "данные" TEXT)
WITH (MACS=TRUE);
GRANT ALL ON "Проверка" TO PUBLIC;
MAC LABEL ON TABLE "Проверка" IS '{2,3}';
MAC CCR ON TABLE "Проверка" IS OFF;



Скрипт всё создал без ошибок, но команды выключения CCR не имели никаких последствий.

Непонятная ситуация возникает при работе с БД через pgAdmin3:
Допустим хочу создать таблицу любым пользователем (кроме postgres'а) при помощи нажатия ПКМ по "Таблицы" в браузере объектов и выбора "Новая таблица...". Задаю параметры таблицы по минимуму и во вкладке "SQL" окна создания таблицы формируется следующий запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE "Схема_1_01".test_table
(
    bigint f_column;
)
WITH (
    OIDS = FALSE,
    MACS = TRUE
)
;

ALTER TABLE "Схема_1_01".test_table OWNER TO u_2;

MAC CCR ON TABLE "Схема_1_01".test_table IS ON;



Но получаю ошибку, что отсутствуют необходимые привелегии либо мандатные атрибуты.

Если нажать на кнопку "Выполнить пользовательские SQL-запросы" и ввести там этот запрос без последней строки, то таблица создастся и если выбрать её в браузере объектов, то запрос её создания будет следующим:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE "Схема_1_01".test_table
(
    bigint f_column;
)
WITH (
    OIDS = FALSE,
    MACS = TRUE
)
;

ALTER TABLE "Схема_1_01".test_table OWNER TO u_2;

MAC LABEL ON TABLE "Схема_1_01".test_table IS '{1,1}';

MAC CCR ON TABLE "Схема_1_01".test_table IS ON;



Не понимаю, что не так происходит при создании таблицы через "Новая таблица..."
Подскажите пожалуйста.
...
Рейтинг: 0 / 0
Astra Linux SE 1.6 Smolensk + pgAdmin3
    #40055465
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
privet.romantik,

я бы просто рекомендовал все в psql command line отлаживать и если там работает а в pgadmin нет - обращаться в поддержку поставщика вашего решения (Astra Linux SE 1.6 Smolensk)

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Astra Linux SE 1.6 Smolensk + pgAdmin3
    #40056187
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Вы не можете указывать в процессе создания метки. Объекту автоматически присваивается та метка, которая соответствует метки вашей сессии.
...
Рейтинг: 0 / 0
Astra Linux SE 1.6 Smolensk + pgAdmin3
    #40066761
VinnySoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСкрипт всё создал без ошибок, но команды выключения CCR не имели никаких последствий.
Для таблиц там как-то странно. Если сначала отключить метки на строках или создать таблицу без меток на строках, то CCR вполне себе отключается. Потом включить обратно метки на строках. Почему так - не знаю, сам ломал голову пытаясь выключить на таблицах CCR. Пока нашел только такой вариант. Как быть с другими объектами не подскажу.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Astra Linux SE 1.6 Smolensk + pgAdmin3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]