Запрещение пользователям изменять привилегии по умолчанию в PostgreSQL

Я тестирую разрешения базы данных на PostgreSQL и пытаюсь запретить обычному пользователю (читающему) выполнить инструкцию ALTER DEFAULT PRIVILEGES. Однако я не могу найти способ отозвать это конкретное разрешение и ничего не могу найти об этом в документации.

Я запустил локальный экземпляр PostgreSQL 11.2, удалил разрешения на подключение, создал базу данных testdb и отменил создание таблицы в схеме public.

revoke connect on database postgres from public;

create database testdb with template template0 --lc_collate "pt_BR.utf8" lc_ctype "pt_BR.utf8";

revoke connect on database testdb from public;

\c :database

revoke all on schema public from public;
grant all on schema public to postgres;

create schema private;

После этого я создал пользователя с правами только на чтение:

create user readuser
       with nosuperuser
            nocreatedb
            nocreaterole
            noreplication
            login
            encrypted password 'testpassword';

grant connect
   on database testdb
   to readuser;

Затем создайте схему testschema и предоставьте права на чтение ее таблиц:

grant usage
   on schema testschema
   to readuser;

grant select
   on all tables
   in schema testschema
   to readuser;

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

alter default privileges in schema testschema grant select on tables to readuser;
ALTER DEFAULT PRIVILEGES

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


person MattLemos    schedule 18.07.2019    source источник


Ответы (1)


Попробуйте это, отозвав EXECUTE из роли postgres, которая предоставила привилегию выполнения по умолчанию для readuser

ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA testschema REVOKE EXECUTE ON FUNCTIONS FROM readuser;
person William    schedule 19.07.2019