Защита от привилегированных пользователей. Разграничение доступа к данным. Управление политиками безопасности
Описание
Для предотвращения несанкционированного доступа к пользовательским данным в Platform V Pangolin реализован механизм защиты данных от привилегированных пользователей, построенный на принципе разделения ролей.
Функциональность позволяет предотвратить доступ к пользовате льским данным, хранящимся в СУБД Pangolin, со стороны неавторизованных лиц, в том числе имеющих права:
- суперпользователя, включая управление объектами баз данных, пользователями, ролями и ролями пользователей;
- администратора операционной системы, включая управление файлами, процессами, пользователями и их правами на объекты файловой системы и операционной системы;
- администратора безопасности, включая доступ к ключам засекречивания TDE и управление параметрами безопасности;
- администратора резервного копирования, включая права на доступ к файлам резервных копий, снятие резервных копий PostgreSQL и подключение к слотам репликации.
Механизм включает два функциональных блока:
- защиту настроечных параметров, позволяющих реализовать угрозы раскрытия пользовательских данных;
- защиту доступа к пользовательским данным в объектах БД.
Включение механизма защиты данных от привилегированных пользователей в Platform V Pangolin возможно с использованием хранилища секретов в HashiCorp Vault или KMS-заменителя. Подробнее оба сценария рассматриваются в разделах «Включение механизма защиты данных от привилегированных пользователей с использованием хранилища секретов в HashiCorp Vault» и «Включение механизма защиты данных от привилегированных пользователей с использованием KMS-заменителя» соответственно.
Структура ролей
Для обеспечения контроля доступа к защищаемым элементам системы применяется система разграничения доступа, основанная на ролях. Здесь и ниже под ролевой моделью понимается стандартная ролевая модель СУБД Pangolin, устанавливаемая инсталлятором до версии 5.4.0.
Начиная с версии СУБД Pangolin 5.4.0 конфигурирование ролевой модели вынесено из инсталлятора. Ее конфигурирование опционально и может быть выполнено с помощью инсталляционных скриптов конфигурирования ролевой модели (см. раздел «Конфигурирование ролевой модели»), включенных в состав дистрибутива. При необходимости данные скрипты могут быть модифицированы (например, в случае, если в какой-либо функциональности нет необходимости), либо заменены альтернативной ролевой моделью.
В рамках структуры ролей рассматриваются следующие типы:
- административные, использующиеся для системного управления кластером и прикладного администрирования данных;
- прикладные, предназначенные для пользователей, отвечающих за наполнение БД данными;
- специальные, создающиеся для соответствия принятым в организации подходам к аудиту, мониторингу, резервному копированию, восстановлению и др.
При настройке ролевой модели создаются следующие групповые роли:
Групповая роль | Назначение |
---|---|
db_admin | Административная роль, обладающая привилегией superuser . Владелец TABLESPACE, DATABASE. Выдается администраторам для управления СУБД |
as_admin | Административная роль — владелец схемы. Выдается администраторам АС. Используется для создания новых объектов в БД (таблиц, функций, последовательностей и т.п) и их изменения. Является владельцем пользовательской схемы. Также выдается доменным или локальным ТУЗ для инструментов автоматизации |
as_TUZ | Прикладная роль для доступа к пользовательским данным. Имеет привилегии для совершения DML-операций с объектами схемы. Работает в пуле соединений с БД, а также подключается через Pangolin Pooler |
as_admin_read | Административная роль, отличающаяся от as_admin тем, что предназначена только для просмотра |
all-sa-pam-group | Выдается учетным записям, используемым для доступа через PAM (privileged access management). Испол ьзуется исключительно для организации аутентификации, конфигурирования pg_hba.conf |
Дополнительно создаются следующие специальные инфраструктурные ТУЗ:
Инфраструктурная роль | Назначение |
---|---|
backup_user | ТУЗ с локальной аутентификации для интеграции с СРК |
zabbix_oasubd | ТУЗ с локальной аутентификацией для интеграции с системой мониторинга |
auditor | ТУЗ с локальной аутентификацией для проведения аудита безопасности |
pangolin-pooler | ТУЗ с локальной аутентификацией для подключения локальной службы Pangolin Pooler |
pangolin-manager | ТУЗ с локальной аутентификацией для подключения локальной службы Pangolin Manager |
all-sa-pam19002 | ТУЗ с внешней аутентификацией для подключения через АС PAM администраторов БД |
all-sa-pam19002_ro | ТУЗ с внешней аутентификацией для подключения через АС PAM администраторов систем с привилегиями только на чтение |
Рекомендации по работе с УЗ для администраторов:
- ежедневные задачи администрирования силами администраторов «вручную» до лжны осуществляться только под персонализированными УЗ;
- права доступа для каждой УЗ/ТУЗ должны быть минимизированы, исходя из использования;
- в руководство должно включаться рекомендуемое минимальное типовое конфигурирование ролевой модели (РМ);
- при развертывании нового экземпляра СУБД Pangolin, минимальная рекомендуемая типовая РМ должна конфигурироваться автоматически.
Матрица несовместимости ролей
В таблице используются обозначения уровней совместимости:
Н
- не совместимо;Н/Ж
- нежелательно;С
- совместимо.
sec_admin_role (администратор безопасности) | superuser (администратор БД, включая postgres ) | Роли RBAC PostgreSQL | |
---|---|---|---|
sec_admin_role (администратор безопасности) | Н | Н | |
superuser (администратор БД, включая postgres ) | Н | С | |
Роли RBAC PostgreSQL | Н | С |
Операции, которые не должны выполняться одним лицом
Следующие операции имеют критическое значение для безопасности, поэтому не могут быть выполнены одним лицом:
-
Выполнение общих настроек, влияющих на возможность несанкционированного доступа к передаваемой или хранимой информации:
- настройки защиты сетевых соединений;
- настройки состава загружаемых модулей расширения;
- настройки состава доверенных серверов аутентификации;
- настройки включения прозрачного защитного преобразования данных (TDE).
-
Управление доступом к объектам баз данных, содержащих конфиденциальную или секретную информацию.
Внимание!
Имеется опасность свободного использования расширения
pageinspect
и схожих с ним на БД с включенной защитой от привилегированных пользователей, в связи с тем чтоpageinspect
позволяет посмотреть рассекреченные данные и не учитывает защиту от привилегированных пользователей.
Объекты, помещаемые под защиту
Под защиту могут быть помещены следующие типы объектов:
- схема - на действия изменения, удаления;
- таблицы - на действия DML чтения, вставки, изменения и удаления, DDL - изменения и удаления, создания или изменения триггера по таблице, создания или изменения правила по таблице;
- партиции - на действия DML чтения, вставки, изменения и удаления, DDL - изменения и удаления;
- материализованные представления - на действия DML чтения, DDL - изменения и удаления;
- представления - на действия DML чтения, вставки, изменения и удаления, DDL - изменения и удаления, создания или изменения триггера по представлению, создания или изменения правила по представлению;
- функции - на вызов, изменение, удаление;
- роль - на действия удаления, изменения, выдачу роли-объекту, отзыв у роли-объекта, выдачу в качестве роли-объекта, отзыв в качестве роли-объекта, смену пароля, назначения текущей роли сессии.
Информация для ограничения доступа хранится в таблицах каталога безопасности (см. подраздел «Таблицы каталога безопасности» раздела «Таблицы» в документе «Справочная информация»).
Связь ролей с объектами БД
При настройке ролевой модели создаются стандартные объекты БД и назначается привилегии для их использования. Такими объектами являются:
- пользовательское табличное пространство — создается на уровне кластера;
- пользовательская база данных — уровень кластера;
- пользовательская схема — уровень определенной базы данных.
Табличное пространство создается в директории /pgdata/<номер мажорной версии продукта>/tablespaces/
(может различаться в зависимости от мажорной версии). Владельцем табличного пространства является db_admin
, а права на доступ выдаются роли as_admin
.
В дополнение к стандартным базам данных Postgresql (template0
, template1
, postgres
) создается пользовательская БД. Владелец данной БД — db_admin
. Права на использование (USAGE
) и логин на данную БД есть по умолчанию у всех вновь создаваемых ролей.
Схема и объекты схемы
Владельцем пользовательской схемы является as_admin
. Права на использование схемы выдаются роли as_TUZ
.
Для использования схемы предоставляются две привилегии: USAGE
и CREATE
. Для создания новых объектов в схеме нужна привилегия CREATE
. Для обращения к объектам схемы (при условии, что есть права на них) нужна привилегия USAGE
. Привилегия CREATE
есть только у роли as_admin
.
Внутри схемы хранятся объекты БД (таблицы, индексы, функции, и т.п). Для каждого типа объекта существует свой набор привилегий. Владельцем объекта становится роль, активная в момент выдачи SQL-запроса на его создание. Так как требуется, чтобы владельцем объектов БД была групповая роль as_admin
, то для обеспечения данного условия используются следующие механизмы:
-
При создании объектов администратор, выполняющий данную задачу, должен выдавать команду
SET ROLE as_admin
. Для автоматизации некоторых задач, а также в случае, когда другие роли данной УЗ не используются, можно один раз настроить УЗ для работы в ролиas_admin
, выдавALTER ROLE <rolename> SET ROLE as_admin
. В дальнейшем данная УЗ всегда будет работать какas_admin
. -
Владельцем объектов может быть только групповая роль, поэтому в УЗ администраторов, имеющих права на создание объектов отключена опция
INHERIT
. Для конечных пользователей БД (ТУЗ) отключатьINHERIT
не требуется — они не имеют привилегий на создание объектов, но зато автоматически наследуют все другие необходимые привилегии.Роль
as_admin
, которая имеет привилегию на создание объектов, нельзя унаследовать (она имеет свойс твоNOINHERIT
). Это связано с тем, что на момент инсталляции неизвестно, какие пользователи будут работать с БД в дальнейшем и какие привилегии им будут назначены. Групповые роли позволяют систематизировать пользовательскую структуру. А для того, чтобы владельцем объекта становилась именно рольas_admin
, необходимо явно переключаться на нее с помощью запроса:SET ROLE as_admin
. -
После создания объекта роль
as_admin
предоставляет необходимую привилегию роли, использующей объект (это в первую очередьas_TUZ
). Данный процесс можно облегчить, если назначитьdefault privileges
создающей роли (as_admin
). С помощьюdefault privileges
права заранее предоставляются на объекты, которые будут создаваться в будущем в данной схеме.
Администратор безопасности
В Platform V Pangolin администраторы БД и администраторы ОС не имеют возможности самостоятельно управлять рядом параметров, а также перестают иметь полный доступ ко всем объектам БД.
В дополнение к роли суперпользователя, которая есть в свободно распространяемой версии PostgreSQL, в СУБД Pangolin добавлена специальная роль Администратора безопасности. Администратор безопасности – независимый администратор, не обладающий особыми правами в операционной системе (в том числе не имеющий прав Linux-пользователя postgres
) и не имеющий доступа к объектам БД.
Внимание!
Ни один из пользователей не может единолично получить доступ к конфиденциальным данным или изменять важные для безопасности настройки БД и права доступа.
Создание учетной записи администратора безопасности в Platform V Pangolin выполняется при запуске утилиты инициализации каталога безопасности.
Можно указать несколько создаваемых учетных записей администраторов безопасности при инициализации. Список задается в параметре -U
через запятую. Соответствующие пароли либо запрашиваются у пользователя, для каждого логина отдельно, либо должны быть указаны в параметре -P
как хеши через запятую. Количество переданных паролей/хешей паролей должно совпадать с количеством логинов.
Учетные записи администраторов безопасности также находятся под защитой и не могут быть изменены администратором БД.
Примечание:
Наделение привилегиями администратора безопасности выполняется только администраторами безопасности.
Администратор безопасности участвует в следующих процессах:
- установка и настройка кластера;
- создание и настройка записи администратора безопасности;
- удаление учетной записи администратора безопасности;
- создание политики защиты в БД;
- удаление политики защиты в БД;
- создание и настройка технической учетной записи (ТУЗ) приложения в БД через политику;
- изъятие привилегий учетной записи ТУЗ приложения, выданных через политику, в БД;
- удаление учетной записи ТУЗ приложения в БД;
- изменение пароля защищаемой учетной записи в БД;
- помещение объектов БД под защиту;
- изъятие объектов БД из-под защиты.
Подробней об этом в разделе данного документа.