У меня немного странная ситуация в Amazon Redshift, где у меня есть пользователь X, у которого есть выбор гранта на всех таблицах в схеме public, но как только создается новая таблица, этот грант, похоже, не применяется к новой таблице. Это нормальное поведение? Если да, то как с ним можно справиться, чтобы поддерживались уровни уровня схемы. Спасибо.Amazon Redshift Grants - доступ к новой таблице невозможен, даже если пользователь имеет гранты для всех таблиц в схеме
ответ
Это нормальное поведение. Только владелец объекта/суперпользователь имеет разрешение на использование объекта по умолчанию.
http://docs.aws.amazon.com/redshift/latest/dg/r_Privileges.html
Вы можете добавить grant
команды в create table
заявление и предоставить необходимые привилегии для пользователя.
В таблицах и представлениях Redshift автоматически не наследуются разрешения их родительской схемы. Ваши вновь созданные таблицы доступны только пользователю, который их создал, и суперпользователю.
В недавнем обновлении для Redshift была реализована новая функция предоставления привилегий по умолчанию, которая устраняет эту проблему.
Следующий фрагмент кода будет предоставлять привилегии выберите только для всех будущих таблиц в схеме продаж в группе sales_admin. Если вы хотите, чтобы это применимо к существующим таблицам в схеме, вам нужно будет объединить его со вторым заявлением на грант.
alter default privileges in schema sales grant select on tables to group sales_admin;
Похоже, что «изменить права по умолчанию» применяется только тогда, когда суперпользователь создает объект, о котором идет речь; когда обычный пользователь с правами создания создает объект, привилегии по умолчанию не добавляются. Кто-нибудь видел это? –
То же самое происходит со мной @JesseMacNett – unpairestgood
@JesseMacNett, doc не очень хорошо описывает, как это работает, но вы должны добавить предложение 'FOR USER user' в инструкцию, и если вы этого не сделаете предполагает текущий пользователь. Поэтому, если у вас есть пользователь X, который создает таблицу, и вы запускаете «ALTER DEFAULT PRIVILEGES ...», предполагается, что вы имеете в виду «ALTER DEFAULT PRIVILEGES ДЛЯ ПОЛЬЗОВАТЕЛЯ current_user ...», а не «ALTER DEFAULT PRIVILEGES ДЛЯ ПОЛЬЗОВАТЕЛЯ user_X ... ', поэтому только новые таблицы, созданные' current_user', будут иметь измененные привилегии по умолчанию. –
Когда мы впервые заметили новые таблицы, отсутствующие в нашем инструменте отчетности, я обнаружил, быстро устранить проблему, необходимо повторно выполнить следующую инструкцию SQL для групп/пользователей повлияли:
ALTER DEFAULT PRIVILEGES IN SCHEMA <SCHEMANAME> GRANT SELECT ON TABLES TO GROUP <USER/GROUPNAME>;
Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (http://meta.stackexchange.com/questions/214173/why-do-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/15294962) – Micho
Странно, я не могу воспроизвести это сейчас, но буду держать поток в курсе, если обнаруживаю что-нибудь новое! – Skippy
@Micho - Я не мог комментировать ранее, но теперь могу, был моим единственным вариантом в то время, ничего себе, дать новой девушке перерыв! – Skippy
, выполняющему следующая команда, как супер-пользователь (мастер):
alter default privileges
for user staging_user
in schema staging
grant select on tables
to reporting_user;
позволит reporting_user выбрать данные из всех будущих таблиц, созданных staging_user в схеме постановки.
Благодарим за ответ – user1823293