таблицы с помощью Spark.
Создал роль - read_only_external, которая умеет только SELECT таблицы в схеме external.
Написал привилегию, если в схеме external появляется новая таблица, то роль read_only_external автоматический может ее читать:
ALTER DEFAULT PRIVILEGES IN SCHEMA external GRANT SELECT ON TABLES TO read_only_external;
Когда Spark создает новую таблицу в схеме external, то дефолтная настройка не отрабатывает. То бишь роль не может читать из новой созданной таблицы.
Если я ручками создаю тестовую таблицу в схеме external, то роль ее видит.
Что за магия вне Хогвартса?
Может это: You can change default privileges only for objects that will be created by yourself or by roles that you are a member of.
А создают разные юзернэймы?
У меня своя роль и у Spark тоже. Но мы оба superuser. Разница в том, что условную схему external я создал, а Спарк туда закидывает таблицы. То есть, из-за того, что я создал схему, то и созданные мной таблицы в этой схеме будут автоматический читаться ролью read_only_external, потому что создана такая привилегия. Спарк никакого отношения к схеме read_only_external не имеет и не состоит в других ролях, то его таблицы созданные в схеме external будут игнорироваться настроенной привилегий для read_only_external? Вообще не очевидное поведение для меня
Кароч эти изменения привязаны к роли всегда. Если ты роль не указываешь то к той под которой делаешь альтер.https://www.postgresql.org/docs/current/sql-alterdefaultprivileges.html
Спасибо. Буду играться сейчас с этим. Если бы даже изначально это прочитал в документации, то не понял, что это относится к моей проблеме
А сразу в явном виде грант после создания нельзя дать?
Обсуждают сегодня