2016-02-03 6 views
4

У меня немного странная ситуация в Amazon Redshift, где у меня есть пользователь X, у которого есть выбор гранта на всех таблицах в схеме public, но как только создается новая таблица, этот грант, похоже, не применяется к новой таблице. Это нормальное поведение? Если да, то как с ним можно справиться, чтобы поддерживались уровни уровня схемы. Спасибо.Amazon Redshift Grants - доступ к новой таблице невозможен, даже если пользователь имеет гранты для всех таблиц в схеме

ответ

0

Это нормальное поведение. Только владелец объекта/суперпользователь имеет разрешение на использование объекта по умолчанию.

http://docs.aws.amazon.com/redshift/latest/dg/r_Privileges.html

Вы можете добавить grant команды в create table заявление и предоставить необходимые привилегии для пользователя.

+0

Благодарим за ответ – user1823293

3

В таблицах и представлениях Redshift автоматически не наследуются разрешения их родительской схемы. Ваши вновь созданные таблицы доступны только пользователю, который их создал, и суперпользователю.

В недавнем обновлении для Redshift была реализована новая функция предоставления привилегий по умолчанию, которая устраняет эту проблему.

Alter Default Privileges

Следующий фрагмент кода будет предоставлять привилегии выберите только для всех будущих таблиц в схеме продаж в группе sales_admin. Если вы хотите, чтобы это применимо к существующим таблицам в схеме, вам нужно будет объединить его со вторым заявлением на грант.

alter default privileges in schema sales grant select on tables to group sales_admin; 
+0

Похоже, что «изменить права по умолчанию» применяется только тогда, когда суперпользователь создает объект, о котором идет речь; когда обычный пользователь с правами создания создает объект, привилегии по умолчанию не добавляются. Кто-нибудь видел это? –

+0

То же самое происходит со мной @JesseMacNett – unpairestgood

+1

@JesseMacNett, doc не очень хорошо описывает, как это работает, но вы должны добавить предложение 'FOR USER user' в инструкцию, и если вы этого не сделаете предполагает текущий пользователь. Поэтому, если у вас есть пользователь X, который создает таблицу, и вы запускаете «ALTER DEFAULT PRIVILEGES ...», предполагается, что вы имеете в виду «ALTER DEFAULT PRIVILEGES ДЛЯ ПОЛЬЗОВАТЕЛЯ current_user ...», а не «ALTER DEFAULT PRIVILEGES ДЛЯ ПОЛЬЗОВАТЕЛЯ user_X ... ', поэтому только новые таблицы, созданные' current_user', будут иметь измененные привилегии по умолчанию. –

-1

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

ALTER DEFAULT PRIVILEGES IN SCHEMA <SCHEMANAME> GRANT SELECT ON TABLES TO GROUP <USER/GROUPNAME>; 
+1

Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (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

+0

Странно, я не могу воспроизвести это сейчас, но буду держать поток в курсе, если обнаруживаю что-нибудь новое! – Skippy

+0

@Micho - Я не мог комментировать ранее, но теперь могу, был моим единственным вариантом в то время, ничего себе, дать новой девушке перерыв! – Skippy

0

, выполняющему следующая команда, как супер-пользователь (мастер):

alter default privileges 
    for user staging_user 
    in schema staging 
    grant select on tables 
    to reporting_user; 

позволит reporting_user выбрать данные из всех будущих таблиц, созданных staging_user в схеме постановки.