Базовая конфигурация разрешений базы данных - PullRequest
0 голосов
/ 08 марта 2019

Я изучаю базы данных, и у меня есть вопрос, как подготовить конфигурацию правил и групп для следующих предположений:

У меня есть две базы данных:

  • databaseA
  • databaseB

Каждая база данных будет иметь несколько пользователей, подключающихся с использованием connectionString (сервер, порт, база данных, имя пользователя, пароль).Таким образом, у меня есть 3 пользователя для каждой базы данных:

  • userA1, userA2, userA3
  • userB1, userB2, userB3

Как создавать группы и роли икак предоставить разрешение, чтобы пользователи A могли подключаться только к базе данных A, а пользователи B - к базе данных B. Могу ли я сделать так, чтобы пользователи A не видели базу данных B, не видели пользователей, назначенных базе данных B?

Возможно, этопростой вопрос, но я хотел бы увидеть пример того, как это сделать - сейчас у меня есть база данных A и B и пользователь postgres.

1 Ответ

0 голосов
/ 08 марта 2019

Нет смысла пытаться удержать других от просмотра метаданных базы данных или пользователя, не пытайтесь.PostgreSQL не поддерживает это.

Вы создаете пользователя («роль входа») с

CREATE ROLE user1a LOGIN;

Что касается разрешений, сначала вы должны удалить привилегию по умолчанию, которая позволяет каждомуподключиться к базе данных:

REVOKE CONNECT, TEMP ON DATABASE databasea FROM PUBLIC;

Затем вы должны специально разрешить нужным пользователям:

GRANT CONNECT ON DATABASE databasea TO usera1, usera2, usera3;

Если у вас много пользователей или пользователи часто меняются, лучшеиспользуйте группу («роль nologin»), обладающую привилегией CONNECT, и добавьте пользователей в группу.

Необходимо настроить pg_hba. conf, чтобы пользователям было разрешено проходить аутентификацию, см.документация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...