Ограничение области действия схем при выполнении GRANT / REVOKE в Postgres - PullRequest
0 голосов
/ 16 мая 2018

В postgres вы можете GRANT или REVOKE привилегии, такие как:

REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT USAGE ON SCHEMA public TO <myuser>;

Мой вопрос; Если каждая база данных имеет схему PUBLIC, то вы отменяете или предоставляете для этой все базы данных? Если это так, что если вы хотите изменить только разрешения схемы для одной базы данных?

Контекст: я хочу GRANT SELECT, INSERT, DELETE одному пользователю только для одной схемы в одной базе данных. Я хочу сделать это без подключения к БД. Или это можно сделать, просто обрабатывая CONNECT разрешения для реальных баз данных. Так что, если они могут подключиться только к одной базе данных, не имеет значения, говорите ли вы «все» общедоступные схемы?

1 Ответ

0 голосов
/ 16 мая 2018

Здесь много вопросов; Я постараюсь навести порядок.

  1. Рекомендуется отозвать CREATE из схемы public во всех базах данных.

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

    Прекрасным решением может быть то, что вы делаете это в базе данных template1. Тогда каждая новая база данных будет автоматически настроена правильно, так как CREATE DATABASE копирует базу данных шаблонов.

  2. Чтобы предоставить пользователям разрешение на использование схемы во всех базах данных, вам снова необходимо подключиться ко всем базам данных по очереди.

  3. Рекомендуется также REVOKE ALL на всех базах данных с PUBLIC и выборочно предоставлять привилегию CONNECT.

    На этот раз вы можете сделать это без подключения к каждой базе данных, поскольку базы данных являются общими объектами & mdash; каталог pg_database доступен из каждой базы данных.

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