Вы находитесь на странице: 1из 3

1 Создание и тестирование БД

1.1 Создание пользователей ОС

Создание пользователя u_0 с мандатной меткой {0,0}:


useradd u_0
usermac -m 0:0 -c 0:0 u_0

Создание пользователя u_1 с мандатной меткой {0,1}:


useradd u_1
usermac -m 0:0 -c 1:1 u_1

Создание пользователя u_2 с мандатной меткой {1,1}:


useradd u_2
usermac -m 1:1 -c 1:1 u_2

Создание пользователя dbsa с максимальной мандатной меткой {2,3} и


атрибутами игнорирования мандатного разграничения доступа:
useradd dbsa
usermac -m 0:2 -c 0:3 dbsa
usercaps -m +2,+3,+4,+5 dbsa

1.2 Создание кластера

pg_createcluster 9.4 setest --port 6000


pg_createcluster 9.4 seforeign --port 6001
Добавление тестового пространства, предоставление пользователю postgres прав
на него:
mkdir var/lib/postgresql/9.4/setest/testspace
chown postgres:postgres var/lib/postgresql/9.4/setest/testspace

1.2.1 Настройка кластера


Настройка конфигурации основного сервера:
sed -e "s/#shared_preload_libraries.*/shared_preload_libraries =
'pg_hint_plan'/g" /etc/postgresql/9.4/setest/postgresql.conf >
/etc/postgresql/9.4/setest/postgresql.conf.new
mv /etc/postgresql/9.4/setest/postgresql.conf.new
/etc/postgresql/9.4/setest/postgresql.conf
cp /usr/share/postgresql/9.4/test/pgacext/support/pg_hba.conf.tst
/etc/postgresql/9.4/setest/pg_hba.conf
cp /usr/share/postgresql/9.4/test/pgacext/support/pg_audit.conf.tst
/var/lib/postgresql/9.4/setest/pg_audit.conf
chown postgres.postgres /etc/postgresql/9.4/setest/*

Настройка конфигурации внешнего сервера:


sed -e 's/ac_ignore_socket_maclabel.*/ac_ignore_socket_maclabel = false/g'
/etc/postgresql/9.4/seforeign/postgresql.conf >
/etc/postgresql/9.4/seforeign/postgresql.conf.new
mv /etc/postgresql/9.4/seforeign/postgresql.conf.new
/etc/postgresql/9.4/seforeign/postgresql.conf
cp /usr/share/postgresql/9.4/test/pgacext/support/pg_hba_foreign.conf.tst
/etc/postgresql/9.4/seforeign/pg_hba.conf
chown postgres.postgres /etc/postgresql/9.4/seforeign/*

Перезапуск кластера:
pg_ctlcluster 9.4 setest restart
pg_ctlcluster 9.4 seforeign restart

Настройка необходимых прав пользователю postgres:


setfacl -m u:postgres:rx /etc/parsec/macdb
setfacl -m u:postgres:rx /etc/parsec/capdb
setfacl -d -m u:postgres:r /etc/parsec/macdb
setfacl -d -m u:postgres:r /etc/parsec/capdb
setfacl -R -m u:postgres:r /etc/parsec/macdb/*
setfacl -R -m u:postgres:r /etc/parsec/capdb/*

1.3 Инициализация БД
Подключаемся как администратор кластера:
\connect template1 postgres

Создаем пользователей:
CREATE USER u_0 WITH password ‘****’;
CREATE USER u_1 WITH password ‘****’;
CREATE USER u_2 WITH password ‘****’;
CREATE USER dbsa WITH password ‘****’;

Создаем тестовую базу данных:


CREATE DATABASE mtest;
Подключаемся к тестовой базе данных:
\connect mtest

1.3.1 Настройка мандатных атрибутов


Устанавливаем мандатную метку кластера:
MAC LABEL ON CLUSTER IS '{3,3}';
Сбрасываем признак MAC CCR кластера:
MAC CCR ON CLUSTER IS OFF;

Устанавливаем метку базы данных:


MAC LABEL ON DATABASE mtest IS '{2,3}';

Сбрасываем признак MAC CСR у базы данных:


MAC CCR ON DATABASE mtest IS OFF;
Устанавливаем метку схемы public:
MAC LABEL ON SCHEMA public IS '{2,3}';

Сбрасываем признак MAC CСR у схемы public:


MAC CCR ON SCHEMA public IS OFF;
Устанавливаем метку табличного пространства pg_default:
MAC LABEL ON TABLESPACE pg_default IS '{2,3}';

Сбрасываем признак MAC CСR у табличного пространства pg_default:


MAC CCR ON TABLESPACE pg_default IS OFF;

Создаем схему для уровня {0,0}:


CREATE SCHEMA "Схема_0_00";
GRANT ALL ON SCHEMA "Схема_0_00" TO PUBLIC;

Создаем схему для уровня {1,1}:


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;

1.3.2 Создание тестовой таблицы


Создаем проверочную таблицу с защищенными строками:
CREATE TABLE "Проверка" ("идентификатор" INTEGER PRIMARY KEY, "данные" TEXT)
WITH (MACS=TRUE);
GRANT ALL ON "Проверка" TO PUBLIC;
Устанавливаем метку таблицы "Проверка":
MAC LABEL ON TABLE "Проверка" IS '{2,3}';
Сбрасываем признак MAC CСR у таблицы "Проверка":
MAC CCR ON TABLE "Проверка" IS OFF;

___
Далее можно подключаться нужным пользователем и работать с БД.
Задать пароли пользователям ОС можно с помощью команды passwd:
passwd u_0

Оценить