Как предоставить пользователю Vertica доступ только для чтения к определенным системным таблицам? - PullRequest
4 голосов
/ 29 февраля 2012

Мы хотим настроить пользователя в нашей базе данных Vertica, который может видеть определенные системные таблицы (projection, projection_storage и views), но мы не хотим, чтобы этот пользователь был dbadmin, потому что мы не хотимим иметь права на запись в эти таблицы.Я пытался использовать операторы GRANT, чтобы предоставить обычному пользователю доступ к этим таблицам, но, похоже, это не работает.Каждый пользователь может видеть только свои собственные записи в этих таблицах.Есть ли способ настроить пользователя, как я описываю, или нам нужно, чтобы этот пользователь был dbadmin?

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

Спасибо!

Ответы [ 5 ]

3 голосов
/ 14 ноября 2014

Предоставление USAGE на схеме пользователю или роли недостаточно для того, чтобы пользователи могли видеть ее проекции в таблице projection_storage.Если пользователь или роль имеют доступ к таблице SELECT, то прогнозы для этих таблиц можно просмотреть в projection_storage.Я нахожусь в Vertica 7.1, и я смог просматривать записи проекции, предоставив SELECT разрешение только для роли вместо предоставления отдельного идентификатора пользователя.

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

2 голосов
/ 21 мая 2013

Просто для удобства вы должны создавать роли базы данных !! а затем дать доступ к этим ролям для ваших пользователей. В противном случае обслуживание будет для вас адом!

1 голос
/ 24 июня 2013

Предоставление выбора доступа к роли в таблице не дает полного доступа к таблицам метаданных, таким как projection_storage. Это похоже на ошибку. Для того, чтобы получить полный доступ, необходимо предоставить выбор индивидуальному идентификатору пользователя.

1 голос
/ 29 февраля 2012

Обычно я просто даю пользователю ИСПОЛЬЗОВАНИЕ на схеме. А затем "GRANT SELECT on;"

Есть ли у них разрешения INSERT для этих таблиц?

0 голосов
/ 07 декабря 2016

Вы можете выполнить следующие шаги, чтобы создать пользователя с привилегиями выбора для схемы. Я последую этому примеру: в моей тестовой базе данных есть схема 'sid' с таблицей 'student_table'.

1) Login as a admin on your database .
    [dbadmin@localhost bin]$  vsql -u
    User name: dbadmin
    Password: 

2) Create the user with a password 

    dbadmin=> create user test identified by 'R';
    CREATE USER


3) Give the newly created user a Grant for the usage on the database.
    dbadmin=> Grant ALL on database vertica to test;
    GRANT PRIVILEGE

4) You can then grant the user the Usage to the schema 
    dbadmin=> Grant Usage on Schema sid to test;
    GRANT PRIVILEGE

5) Finally provide the select grant to the user on the table .
    dbadmin=> Grant select on sid.student_table to test ;
    GRANT PRIVILEGE
    dbadmin=> \q
6) Login with the new user 'test' , You will be able to access both projection storage and 
    your table sid.student_table

    [dbadmin@localhost bin]$ vsql -u
    vsql: Warning: The -u option is deprecated. Use -U.
    User name: test
    Password: 
    Welcome to vsql, the Vertica Analytic Database interactive terminal.

    test=> select * From sid.student_table;
     Student_ID | Last_name | First_Name | Class_Code |      Grade_pt      
    ------------+-----------+------------+------------+--------------------
           9999 | T_        | S%         | PG         | 98.700000000000000
    (1 row)

    test=> select * From projection_storage;
    -[ RECORD 1 ]-----------+-----------------------------------------
    node_name               | v_vertica_node0001
    projection_id           | 45035996273836526
    projection_name         | Student_Table_DBD_1_rep_tet1_v1_node0001
    projection_schema       | sid
    projection_column_count | 6
    row_count               | 9
    used_bytes              | 375
    wos_row_count           | 0
    wos_used_bytes          | 0
    ros_row_count           | 9
    ros_used_bytes          | 375
    ros_count               | 1
    anchor_table_name       | Student_Table
    anchor_table_schema     | sid
    anchor_table_id         | 45035996273756612
...