В BigQuery вы предоставляете пользователям / ролям (или авторизованным представлениям) доступ на уровне набора данных, а не на уровне представления / таблицы.Задача, которую я хочу решить, - это как управлять контролем доступа в больших запросах, когда у меня есть сотни таблиц и представлений и много разных ролей / отделов, которые должны иметь доступ как к представлениям, общим для всех отделов, так и представлениям только для определенной роли / отдела?
Пример: допустим, у меня есть исходный набор данных с исходными таблицами A-> D и три представления для каждой таблицы, представляющие различные поля в зависимости от чувствительности данных 1-> 3.Кроме того, у меня есть три роли (синий, зеленый, красный).Если бы я мог управлять доступом на уровне таблицы, это выглядело бы так:
Представление: роли
Учитывая эти требования, я не могу создавать наборы данных только на основе чувствительности (1-3) или источника (AD) и управлять доступом на основе этого.Единственное решение, которое я вижу в этом, - это создание набора данных для каждой роли.Это можно сделать вручную, если количество ролей и представлений немного, но при управлении более 10 ролями и более 50 представлений это становится более сложным.
Единственное решение, которое я могу предложить, - это настройка CI / CD (облачная сборка) с файлами / файлами, определяющими наборы данных (то есть роли), зависимости и DDL-оператор / ы.Позволяет скрипту / программе выполнять итерации по файлу / файлам, генерировать представления и предоставлять доступ (авторизованное представление) к источнику.Файл примера:
{"roles":["crm_analyst", "admin", "customer_service_agent"],
"ddl":"CREATE VIEW `myproject.'{role}'.newview` AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.myview",
"dependencies":"myproject.mydataset.myview"}
Как другие компании решают эту проблему?Существуют крупные банки, которые перешли на большие запросы, в которых должно быть множество отделов и различная чувствительность наборов данных.