Ограничить доступ к таблицам Redshift, только предоставить доступ к представлению - PullRequest
0 голосов
/ 10 октября 2019

Использование Redshift в AWS. У нас есть БД с целью, которую мы хотим представить клиентам. Представление, которое делает наши различные базовые таблицы похожими на одну большую таблицу uber (требование клиента). Это постоянно обновляемый набор больших данных, поэтому снимок и его копирование куда-то не вариант ... если только не существует какого-то безумно быстрого способа сделать это каждые несколько минут.

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

Есть ли какой-то другой способ предотвратить просмотр этих имен таблиц? Или, может быть, какой-нибудь умный способ обойти представление в отдельной базе данных из базовых таблиц. Кажется невозможным иметь представление ссылки на другой БД, но именно поэтому я здесь прошу идеи:)

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Предположим, у вас есть данные и таблицы в db1.

Итак, вы создаете схему (s1) в db1 и создаете все представления на основе таблиц в db1. Затем создайте роль типа db1_s1_reader, имеющую доступ для чтения схемы s1, и назначьте эту роль всем пользователям, которые хотят читать данные. Опубликуйте этот отзыв для пользователей из db1, если у них уже есть доступ к данным.

0 голосов
/ 17 октября 2019

Вы можете использовать хранимую процедуру.

"Для детального управления доступом вы можете создавать хранимые процедуры для выполнения функций без предоставления пользователю доступа к базовым таблицам. Например, только владелец илиСуперпользователь может усекать таблицу, и пользователю требуется разрешение на запись для вставки данных в таблицу. Вместо предоставления пользователю разрешений на базовые таблицы, вы можете создать хранимую процедуру, которая выполняет задачу. Затем вы даете пользователю разрешение на запускхранимая процедура.

Хранимая процедура с атрибутом безопасности DEFINER запускается с привилегиями владельца хранимой процедуры. По умолчанию хранимая процедура имеет защиту INVOKER, что означает, что процедура использует разрешения пользователя, который вызываетпроцедура. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...