Как исправить «У пользователя нет прав доступа к таблице XYZ.» в BigQuery? - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу выполнить запрос BQ с помощью команды bq.

Вот моя команда:

bq query    --application_default_credential_file $GOOGLE_APPLICATION_CREDENTIALS  
  --nouse_legacy_sql 'SELECT * FROM `my_project.data.Document` limit 100' 

GOOGLE_APPLICATION_CREDENTIALS указывает на файл учетных данных. Я могу использовать эту переменную для включения команды gcloud для доступа к ресурсам моего проекта.

Запрос выполняется нормально, если я запускаю его непосредственно в пользовательском интерфейсе запроса bigquery. Я вхожу как я.

Однако bq не удалось с этой ошибкой Access Denied: Table my_project:data.Document: User does not have permission to query table my_project:data.Document.

Я назначил эти роли id, учетной записи службы, содержащейся в файле учетных данных:

enter image description here

Я пропустил какую-либо роль / разрешение?

1 Ответ

0 голосов
/ 29 апреля 2020

Полагаю, вам может быть известно о том, что bq флаги авторизации исполнителя уже устарели и больше не используются, поэтому флаг --application_default_credential_file больше похож на избыточность в вашей начальной команде bq query. Как правило, bq параметры авторизации иногда влияют на gcloud учетные данные настройки , что приводит к непредсказуемым результатам. В соответствии с официальными рекомендациями вы должны следовать обычным инструкциям SDK для выполнения настройки авторизации:

Флаги авторизации bq устарели. Чтобы настроить авторизацию для инструмента командной строки bq, см. Авторизация инструментов Cloud SDK .

По умолчанию @appspot.gserviceaccount.com Сервисная учетная запись App Engine предоставила примитивная Editor роль, допуская, что она имеет доступ ко всем ресурсам, дополнительные разрешения roles/bigquery.dataViewer и roles/bigquery.user здесь совершенно не нужны.

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