невозможно выполнить запрос к BigQuery - ошибка разрешения 403 - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть IAM пользователь с ролью: BigQuery Data Editor В моем наборе данных я Share dataset добавил пользователя с привилегиями Can Edit.

Однако, когда я запускаю свой скрипт, который обращается к BigQuery, я получаю ошибку 403

Когда я добавляю своему IAM пользователю роль BigQuery User Сценарий работает.

Скрипты запускают только SELECT запрос из таблицы в этом наборе данных.

Я не понимаю, почему я должен предоставить BigQuery User, чтобы это работало.

Согласно документацииhttps://cloud.google.com/bigquery/docs/access-control

Обоснование: роль dataEditor расширяет bigquery.dataViewer, предоставляя привилегии создания, обновления и удаления для таблиц в наборе данных

roles/bigquery.dataViewer has bigquery.tables.getData которые получают данные таблицы

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 27 сентября 2018

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

Согласно документации, roles/bigquery.dataEditor имеетследующие разрешения:

  • Чтение метаданных набора данных и вывод списка таблиц в наборе данных.
  • Создание, обновление, получение и удаление таблиц набора данных.

Это означает, что пользователь с этой ролью имеет права доступа и манипулирования информацией о наборе данных и таблицами в нем.Примером может служить то, что пользователь с этой ролью может видеть всю информацию таблицы, перейдя к ней через консоль GCP (схема, сведения и вкладки предварительного просмотра), но при попытке выполнить запрос там появится следующее сообщение:

Доступ запрещен: проект <PROJECT-ID>: пользователь <USER> не имеет разрешения bigquery.jobs.create в проекте <PROJECT-ID>.

Теперь давайте проверим roles/bigquery.user разрешения:

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

Ключевой элемент здесь заключается в том, что роль BigQuery User можетвыполнять задания, а BigQuery DataEditor не может. BigQuery Jobs - это объекты, которые управляют задачами BigQuery, включая выполнение запросов.

С этой информацией в матрице сравнения ролей становится понятнее, чем вы являетесьдля этого вам понадобятся роль BigQuery DataEditor (получение данных / метаданных таблицы) и роль BigQuery User (создание заданий / запросов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...