
POD-2LR-1
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Кафедра Защищенных систем связи
Факультет Кибербезопасности
Дисциплина Основы построения сертифицированных защищенных БД РФ
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ
УСТАНОВКА POSTGRESQL
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студент:
Травкина Е.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Федченко А.С., ИКБ-14
(Ф.И.О., № группы) (подпись)
Ящук А.А., ИКБ-14
(Ф.И.О., № группы) (подпись)
Преподаватель:
к.т.н., доцент, Пестов И.Е.
(должность, Ф.И.О.) (подпись)
Оглавление
Цель лабораторной работы 3
Задачи 3
Используемое программное обеспечение 3
Ход работы 3
Вывод 5
Листинг команд 6
Цель лабораторной работы
Изучить основные команды управления PostgreSQL, включая создание пользователя, базы данных и таблиц.
Задачи
В рамках лабораторной работы необходимо выполнить следующее:
установить PostgreSQL на ОС Astra Linux;
отключить мандатных атрибутов;
создать базу данных для пользователя user.
Используемое программное обеспечение
Для выполнения лабораторной работы используется установленный дистрибутив ОС Astra Linux.
Ход работы
Ход выполнения лабораторной работы:
Установили базу данных PostgreSQL следующими командами:
sudo apt update
sudo apt install postgresql postgresql-contrib
В разделе «Политика безопасности» выбрали «Мандатный контроль целостности» и сняли галочку «Подсистема Мандатного Контроля Целостности». Применили изменения и перезагрузили систему. После чего мандатный контроль целостности отключён.
В Astra Linux существуют мандатные атрибуты безопасности, которые блокируют определенные действия (в нашем случае создание баз данных и пользователей в PostgreSQL). Поэтому чтобы обойти эти ограничения и создать пользователя с базой данных в PostgreSQL, мы и отключили мандатный контроль.
После входа в PostgreSQL (см. рисунок 1), создали пользователя “user” командой:
CREATE USER “user”;
Рисунок 1. Вход в PostrgeSQL с пользователем postgres
Добавили user в перечень владельцев баз данных и создали ему базу данных db1. Проверили создание db1 в списке баз данных (см. рисунок 2).
Рисунок 2. Создание нового пользователя и базы данных
Создали 3 таблицы (users, orders, payments) и заполнили их значениями (см. Листинг).
Вывод
В ходе лабораторной работы было установлено и настроено окружение PostgreSQL на ОС Astra Linux. Были отключены мандатные атрибуты для корректной работы с БД. Создан новый пользователь и база данных. В базе данных db1 были созданы три таблицы: users, orders и payments. Таблица users содержит информацию о пользователях, таблица orders хранит данные о заказах, а таблица payments — о произведённых оплатах. Между таблицами были установлены связи с использованием внешних ключей, что обеспечило целостность данных.
Далее, были выполнены операции по добавлению данных в созданные таблицы с использованием команды INSERT. В таблицу users добавлены 10 пользователей, каждому из которых сопоставлены заказы и оплаты через таблицы orders и payments. Таким образом, были сформированы отношения между пользователями, их заказами и оплатами, что продемонстрировало возможности реляционной модели для управления связанными данными.
В завершение работы были проведены запросы на выборку данных из таблиц с помощью команды SELECT, что позволило получить и проверить корректность добавленных данных.
Листинг команд
user@server:~$ sudo apt update
user@server:~$ sudo apt install postgresql postgresql-contrib
user@server:~$ sudo -i -u postgres [sudo] пароль для user: postgres@server:~$ psql psql (11.21 (Debian 1:11.21-astra.se8)) Введите "help", чтобы получить справку. postgres=# CREATE USER “user”;
postgres=# CREATE DATABASE db1 OWNER “user”;
postgres=# \l Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+-------------+-------------+----------------------- db1 | user | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 строки) postgres=# \c db1 Вы подключены к базе данных "db1" как пользователь "postgres". db1=# CREATE TABLE users ( db1(# user_id SERIAL PRIMARY KEY, db1(# username VARCHAR(50) NOT NULL, db1(# email VARCHAR(100) NOT NULL UNIQUE ); CREATE TABLE db1=# CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, order_date DATE NOT NULL, user_id INT REFERENCES users(user_id) ); CREATE TABLE db1=# CREATE TABLE payments ( payment_id SERIAL PRIMARY KEY, payment_date DATE NOT NULL, user_id INT REFERENCES users(user_id), amount DECIMAL(10,2) NOT NULL); CREATE TABLE db1=# \dt Список отношений Схема | Имя | Тип | Владелец --------+----------+---------+---------- public | orders | таблица | postgres public | payments | таблица | postgres public | users | таблица | postgres (3 строки) db1=# INSERT INTO users (username, email) VALUES ('Sasha','sasha@mail.com'), ('Liza','liza@mail.com'), ('Nastya','nastya@mail.com'), ('ML','ml@mail.com'), ('SH','sh@mail.com'), ('LF','lf@mail.com'), ('NP','np@mail.com'), ('LL','ll@mail.com'), ('dL','dl@mail.com'), ('HL','hl@mail.com') ; INSERT 0 10 db1=# SELECT*FROM users; user_id | username | email ---------+----------+----------------- 1 | Sasha | sasha@mail.com 2 | Liza | liza@mail.com 3 | Nastya | nastya@mail.com 4 | ML | ml@mail.com 5 | SH | sh@mail.com 6 | LF | lf@mail.com 7 | NP | np@mail.com 8 | LL | ll@mail.com 9 | dL | dl@mail.com 10 | HL | hl@mail.com (10 строк)
db1=# INSERT INTO orders (order_date, user_id) VALUES ('2024-09-12', 1), ('2024-09-13', 2), ('2024-09-14', 3), ('2024-09-15', 4), ('2024-09-15', 5), ('2024-09-16', 6), ('2024-09-16', 7), ('2024-09-16', 8), ('2024-09-17', 9), ('2024-09-17', 10); INSERT 0 10 db1=# SELECT*FROM orders; order_id | order_date | user_id ----------+------------+--------- 1 | 2024-09-12 | 1 2 | 2024-09-13 | 2 3 | 2024-09-14 | 3 4 | 2024-09-15 | 4 5 | 2024-09-15 | 5 6 | 2024-09-16 | 6 7 | 2024-09-16 | 7 8 | 2024-09-16 | 8 9 | 2024-09-17 | 9 10 | 2024-09-17 | 10 (10 строк) db1=# INSERT INTO payments (amount, user_id) VALUES (666, 1), (5, 2), (10192.3, 3), (10000, 4), (2.5, 5), (2, 6), (10, 7), (35.84, 8), (15.4, 9), (100.25, 10); INSERT 0 10 db1=# SELECT*FROM payments; payment_id | user_id | amount ------------+---------+---------- 1 | 1 | 666.00 2 | 2 | 5.00 3 | 3 | 10192.30 4 | 4 | 10000.00 5 | 5 | 2.50 6 | 6 | 2.00 7 | 7 | 10.00 8 | 8 | 35.84 9 | 9 | 15.40 10 | 10 | 100.25 (10 строк)
Санкт-Петербург
2024