Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая Автосалон.doc
Скачиваний:
116
Добавлен:
14.02.2023
Размер:
6.14 Mб
Скачать

3.7. Безопасность и контроль

Безопасность в PostgreSQL можно разделить на 4 уровня[10]:

- Безопасность на сетевом уровне

- Безопасность на транспортном уровне

- Безопасность на уровне базы данных

- Безопасность на уровне строк

Безопасность на сетевом уровне

Безопасность на данном уровне осуществляется по средствам файрволов и прослушивания адресов. Для повышения безопасности сервера базы данных, можно заблокировать доступ к узлу, на котором работает база данных, на уровне порта, с помощью брандмауэра. Хорошей практикой является ограничение адресов, которые прослушивает сервер для клиентских подключений, с помощью параметра listen_addresses файла конфигурации. Если узел, на котором работает PostgreSQL, имеет несколько сетевых интерфейсов, используйте этот параметр, чтобы убедиться, что сервер прослушивает только те интерфейсы, через который клиенты будут подключаться к нему.

Безопасность на транспортном уровне

Поскольку большая часть всемирной паутины переходит на HTTPS, необходимо использовать надежное шифрование для соединений с базой данных. PostgreSQL поддерживает TLS (который по-прежнему называется SSL в документации, конфигурации и CLI по legacy-причинам) и позволяет использовать его для аутентификации как сервера, так и клиента.

Безопасность на уровне базы данных

PostgreSQL имеет комплексную систему прав пользователя, основанную на концепции ролей. В современных версиях PostgreSQL (8.1 и новее) «роль» является синонимом «пользователя», поэтому любое имя учетной записи базы данных, которое вы используете, на самом деле является ролью с LOGIN атрибутом, который позволяет ей подключаться к базе данных.

Помимо возможности входа в систему, роли могут иметь иные атрибуты, позволяющие им обходить все проверки прав доступа (SUPERUSER), создавать базы данных (CREATEDB), создавать другие роли (CREATEROLE) и другие. Помимо атрибутов, ролям могут быть предоставлены права доступа, которые можно разделить на две категории: членство в других ролях и привилегии на объекты базы данных. Вместо того, чтобы назначать привилегии/роли каждому новому пользователю индивидуально, можно создать «групповую роль» и предоставить другим ролям (сопоставление с отдельными пользователями) членство в этой группе.[11]

Безопасность на уровне строк

Одной из наиболее продвинутых функций системы привилегий PostgreSQL является безопасность на уровне строк, которая позволяет вам предоставлять привилегии подмножеству строк в таблице. Сюда входят как строки, которые могут быть запрошены с помощью оператора SELECT, так и строки, которые могут быть результатами операторов INSERT, UPDATE и DELETE. Без какой-либо определенной политики PostgreSQL по умолчанию использует политику «запретить», что означает, что никакая роль (кроме владельца таблицы, который обычно является ролью, создавшей таблицу) не имеет к ней доступа.

Политика безопасности строк — это логическое выражение, которое PostgreSQL будет применять для каждой строки, которая должна быть возвращена или обновлена. Строки, возвращаемые оператором SELECT, проверяются на соответствие выражению, указанному в разделе USING, в то время как строки, обновленные операторами INSERT, UPDATE или DELETE, проверяются на соответствие с WITH CHECK выражением.

Логирование

Также, PostrgeSQL имеет функцию ведения примитивного журнала логов, который позволяет просмотреть, как, кем и когда изменялась таблица.

Для обеспечения безопасности базы данных, необходимо создать роли (см. Приложение «Создание ролей»), которые будут иметь ограниченный доступ к таблицам и действиям, связанными с ними.[13]

Роли:

  • Директор

  • Менеджер

  • Клиент

Создание пользователя client(Рисунок 33)

Рисунок 33- Создание роли client

Создание пользователя директор(Рисунок 34)

Рисунок 34-Роль директор

Создание пользователя менеджер(Рисунок 35)

Рисунок 35-Роль менеджер

Выводы

В данной главе было произведено физическое проектирование базы данных магазина компьютерных комплектующих. Были реализованы таблицы, соответствующие реляционной модели из второй главы. Для реализации ограничений, обозначенных в первой главе, были написаны триггеры и реализованы представления. Также, был произведён анализ безопасности и контроля базы данных в PostrgeSQL и добавлены пользователи с индивидуальным доступом к таблицам для обеспечения целостности данных.