Как использовать разрешения на уровне строк в BigQuery?

Google объявил об этой функции сегодня, но я не вижу никаких документов для нее. Как я могу предоставить пользователю разрешения на уровне строк?

Например, допустим, у меня есть таблица private.all_customers со схемой {customer:string, id:integer, is_secret:boolean}.

Я хотел бы предоставить нашим продавцам доступ к полям customer и id, но не к is_secret, и более того, я хотел бы дать им доступ только к тем строкам, где is_secret = false. Как я могу это сделать?


person Jordan Tigani    schedule 16.04.2015    source источник


Ответы (1)


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

Для этого создайте представление, которое будет возвращать строки и столбцы, которые должны отображаться для пользователя. Для приведенного выше примера представление будет выглядеть так:

SELECT customer, id FROM private.all_customers where is_secret = false

Затем я могу сохранить это как представление «public.public_customers» и поделиться набором данных public с аналитиками.

Обратите внимание, что пока это НЕ означает, что аналитики будут иметь доступ к данным. Если они попытаются запустить его сейчас, они получат ошибку. Простой доступ к представлению, которое читает таблицу, не дает вам доступа к базовым данным в этой таблице. Если бы это было так, то любой мог бы просто создать представление для чтения любых данных, которые он хотел бы видеть.

Второй шаг — добавление этого представления в ACL набора данных private. Это делает записи о том, что представление должно иметь доступ к данным. Таким образом, владелец набора данных private может проверить, кто имеет доступ к его данным, и отозвать его при необходимости.

Самый простой способ добавить представление в ACL — использовать веб-интерфейс BigQuery. Если щелкнуть стрелку рядом с именем набора данных private в веб-интерфейсе и нажать «Поделиться этим набором данных», откроется диалоговое окно, позволяющее редактировать ACL. В нижней части этого диалогового окна будет отображаться «Добавить людей» и кликабельный значок слева. Если вы нажмете на этот значок, вы сможете выбрать «Авторизованный просмотр». Как только это выбрано, вы должны ввести полное имя -- project:dataset.view представления. В нашем примере это будет my-project:public.public_customers. Нажмите «Добавить», и он появится в списке, а затем нажмите «Сохранить изменения», чтобы зафиксировать изменения.

После добавления представления в ACL любой, у кого есть доступ к «общедоступному» набору данных, должен иметь возможность выполнять запросы к представлению public.public_customers.

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

person Jordan Tigani    schedule 16.04.2015
comment
Я могу настроить разрешение на уровне строк в организации. Но снаружи я не могу предоставить доступ. Это дает ошибку конфигурации набора данных Data Studio не может подключиться к вашему набору данных. Не удалось получить данные из базового набора данных. - person Urvah Shabbir; 28.01.2020