Ключевой частью разрешений на уровне строк является то, что вы фактически даете разрешение представлению. Представление определяет строки и столбцы, которые должны видеть делегированные пользователи, не предоставляя им доступ к базовой таблице.
Для этого создайте представление, которое будет возвращать строки и столбцы, которые должны отображаться для пользователя. Для приведенного выше примера представление будет выглядеть так:
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