Предоставить доступ к Vertica SQL Tables каждому, кто использует Python - PullRequest
0 голосов
/ 31 января 2019

Я использую скрипт Python для создания таблиц и вставки в них данных.Однако только я могу видеть созданные таблицы.Члены моей команды не могут их просматривать.Как мне это изменить?

Какие операторы Python я могу включить, чтобы предоставить доступ каждому?Я использую vertica_python и sqlalchemy для подключения к базе данных через Python.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Для предоставления таких разрешений, как выбор привилегий, необходимо, чтобы у вас сначала были такие разрешения.

Согласно веб-сайту Vertica, для получения права GRANT требуется:

  • Суперпользователь может предоставлять привилегии для всех типов объектов другим пользователям.
  • Владелец объекта может предоставлять привилегии для объекта другим пользователям, используя необязательное условие WITH GRANT OPTION.

Псевдо-решение

В зависимости от того, кому нужен доступ , вы можете использовать имя пользователя, роль или PUBLIC (все).

Вотнекоторые примеры утверждений - так как я сам не работал с Vertica, я не могу проверить это

GRANT SELECT on all tables in schema myschema TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

ИЛИ

GRANT SELECT on schema.TABLENAME TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

, это может также потребовать GRANT USAGE также на схеме


Обработка запроса с Python

И обработка его через sqlalchemy в скрипте Python (см. этот вопрос для уточнений):

sSQL = "my sql grant statement(s)"
with oSuperEngine.begin() as conn:
    conn.execute(sSQL)
    conn.execute("COMMIT")
0 голосов
/ 31 января 2019

Синтаксис для предоставления привилегий: (см. GRANT (Таблица) ):

GRANT SELECT ON TABLE <schema>.<table> TO <user>;

Вы можете предоставить следующие привилегии для таблиц:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • REFERENCES
  • TRUNCATE

Прежде чем предоставить привилегии для таблицы, вы должны как минимум предоставить USAGE для схемы таблицы.

GRANT USAGE ON SCHEMA <schema> to <user>;

Если, однако, все эти таблицы находятся в одной и той же схеме,вы можете предоставлять привилегии пользователям на уровне схемы.Для этого сначала необходимо включить наследование схемы .Затем предоставьте права на схему пользователям.Таким образом, вам не нужно продолжать предоставлять привилегии таблицам при их создании.

GRANT USAGE, SELECT ON SCHEMA <schema> TO <user>;
...