Создать пользователя с доступом к просмотру в красном смещении - PullRequest
0 голосов
/ 10 июля 2019

Я вытягиваю данные из экземпляров mysql ec2 в сегменты s3, затем создаю представления в красном смещении. Я хочу создать пользователей базы данных, которые могут только запрашивать и видеть определенные представления, созданные специально для них в Redshift. У меня есть пример кода ниже, который я использую для создания пользователя, просмотра и предоставления доступа. Проблема, с которой я столкнулся, заключается в том, что мне также нужно предоставить доступ к базовой схеме, из которой создается представление, что означает, что пользователь может просматривать и запрашивать таблицы в этой схеме. Также пользователь может видеть другие схемы в базе данных, даже те, которые они не могут запрашивать. Есть ли способ предоставить пользователям только определенные представления и сделать так, чтобы они не могли видеть другие схемы, к которым у них нет доступа?

Код:

--create schema
create schema tst_user_schema;

--create view in schema
create view tst_user_schema.inventory_report_customer as (
  select * from user341.inventory_report_customer
  )
with no schema binding;


--creating user
CREATE USER tstuser PASSWORD 'tstPassword';

--grant access
GRANT USAGE ON SCHEMA tst_user_schema TO tstuser;

--grant read access to all tables in schema
GRANT SELECT ON ALL TABLES IN SCHEMA tst_user_schema TO tstuser;

--grant access
GRANT USAGE ON SCHEMA user341 TO tstuser;

--grant read access to all tables in schema
GRANT SELECT ON ALL TABLES IN SCHEMA user341 TO tstuser;


--grant access
GRANT USAGE ON SCHEMA tst_user_schema TO tstuser;

--grant read access to all tables in schema
GRANT SELECT ON ALL TABLES IN SCHEMA tst_user_schema TO tstuser;

1 Ответ

0 голосов
/ 11 июля 2019

Напомним:

  • схема user341 - содержит исходные таблицы, пользователь не должен иметь возможность выбирать из таблиц в этой схеме.Вы также хотите скрыть это от пользователя
  • tst_user_schema - содержит представления, из которых пользователь должен иметь возможность выбирать.

Глядя на свои заявления GRANT, вы без необходимости предоставляете пользователю SELECT разрешение на ALL TABLES IN SCHEMA user341.Для представлений работа вам нужно только GRANT USAGE в этой схеме.

Так что REVOKE эти разрешения, и пользователь не должен иметь возможность выбирать.

REVOKE SELECT ON ALL TABLES IN SCHEMA user341 FROM tstuser;

Совет : чтобы легко проверить разрешения, вы можете начать сеанс как tstuser, используя директиву SET SESSION AUTHORIZATION , а затем проверить, какие операторы разрешены, ичего нет.

SET SESSION AUTHORIZATION tstuser

Относительно видимости схемы - к сожалению, нет способа скрыть или запретить пользователю видеть все таблицы и столбцы во всех схемах.Можно только ограничить доступ к данным.

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