О доступе к метаданным таблицы:
Как прокомментировал Айслингр, нет хорошего способа скрыть эту информацию от пользователей.
Вам бы пришлось запретить пользователю доступ к * 1005.*, pg_namespace
и pg_proc
и аналогичные таблицы.Это может быть выполнено, если вы установите allow_system_table_mods
в on
, и PostgreSQL продолжит функционировать, но многие вещи больше не будут работать:
Использованиеpsql
служебные команды, такие как \d
или \dt
Подобные инструменты для других инструментов
Системы мониторинга
По сути, вы не сможете больше видеть метаданных .
Нет способа разрешить пользователю просматривать только некоторые метаданные,это все или ничего.
Но это не проблема.Нет веских причин хранить метаданные от кого-либо - это общедоступная информация.
PostgreSQL не считает это проблемой безопасности.Просто потому, что я знаю, что есть таблица customer
со столбцом credit_card_number
, я не могу приблизиться к ней, если права доступа установлены правильно.
О доступе к объектам в public
:
REVOKE
, который удаляет привилегию, которая никогда не была предоставлена, ничего не делает.
Привилегия USAGE
для схемы public
предоставляется PUBLIC
, а не just_one_schema_user
.
Используйте это, чтобы показать разрешения в psql
:
\dn+
Вы ищете:
REVOKE CREATE, USAGE ON SCHEMA public FROM public;
Я бырекомендуем хранить данные приложения без public
, только расширения.Тогда не отзывайте USAGE
, только CREATE
.