Безопасность
- Оглавление
- Аутентификация пользователя
- Имена пользователей и группы
- Контроль доступа
- Функции и правила
Безопасность базы данных распределена по нескольким уровням:
- Защита файлов баз данных. Все файлы, хранящиеся внутри базы данных, защищены от чтения из любого бюджета, отличного от бюджета суперпользователя Postgres.
- Подключение клиента к серверу базы данных, по умолчанию, разрешено только через локальные гнезда Unix, а не через гнезда TCP/IP. Сервер должен запускаться с опцией -i, чтобы разрешить подключаться нелокальным клиентам.
- Подключения клиентов могут бы ограничены по IP адресу и/или имени пользователя, через файл pg_hba.conf в PG_DATA.
- Подключаемые клиенты могут быть аутентифицированы посредством внешних пакетов.
- Каждому пользователю Postgres назначается имя пользователя(username) и (необязательно) пароль. По умолчанию, пользователи не имеют право на запись в базу данных, которую создали не они.
- Пользователи могут образовывать группы, и доступ к таблицам может ограничиваться на основании привилегий группs.
Аутентификация - это процесс, с помощью которого серверу и postmaster гарантируется, что запрашиваемый пользователем доступ к данным получит такой, кем фактически он/она себя заявил. Все пользователи, которые вызывают Postgres, проверяются на содержание в pg_user классе, чтобы удостовериться что они уполномочены это делать. Однако, проверка подлинности пользователя выполняется различными путями:
- Из пользовательского shell
- Клиент запускается из пользовательского shell, пользовательский (эффективный) user-id которого перед выполнением setuid заменяется на user-id пользователя postgres. Эффективный user-id используется как основа для проверки контроля доступа. Других аутентификаций не проводится.
- Из сети
- Если система Postgres собрана как рапспределённая, то доступ к порту Internet TCP процесса postmaster доступен для всех. DBA настраивает файл pg_hba.conf в каталоге PGDATA чтобы указать какая система аутентификации будет использоваться в зависимости от того какой хост установил соединение и к какой базе данных он хочет подключиться. Смотри pg_hba.conf(5), который описывает доступные системы аутентификации. Конечно, аутентификация, основанная на хосте, также небезопасна для Unix. Конечно, возможно определить захватчиков выдающих себя на первоначальный хост. Эти проблемы безопасности лежат вне пределов Postgres.
|