You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Colab访问BigQuery持续报403权限错误,求解决办法

Colab中使用服务账号访问BigQuery持续触发403权限拒绝错误

我需要在Colab笔记本中访问BigQuery数据,但一直遭遇403访问被拒错误,尽管已经配置了看起来足够的权限。

已配置的权限

  • 为项目添加了服务账号,并授予以下角色:
    BigQuery Admin
    BigQuery Data Editor
    BigQuery Data Viewer
    BigQuery User
    Viewer
    Editor
    
  • 通过Policy Analyzer确认这些权限已应用到项目及数据集级别。

运行的代码

我创建了API密钥并导入到Colab,执行以下代码时触发错误:

from google.cloud import bigquery
from google.oauth2 import service_account
import google.auth
credentials = service_account.Credentials.from_service_account_file('pathtoapikey.json')

project_id = 'myproject'
client = bigquery.Client(credentials= credentials,project=project_id)


query_job = client.query("""
   SELECT *
   FROM myproject.mydataset.table_name
   LIMIT 1000 """)

results = query_job.result()

错误信息

完整错误栈如下:

Forbidden                                 Traceback (most recent call last)
<ipython-input-12-208d568225a8> in <cell line: 15>()
     13    LIMIT 1000 """)
     14 
---> 15 results = query_job.result()

5 frames
/usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/query.py in result(self, page_size, max_results, retry, timeout, start_index, job_retry)
   1518                 do_get_result = job_retry(do_get_result)
   1519 
-> 1520             do_get_result()
   1521 
   1522         except exceptions.GoogleAPICallError as exc:

/usr/local/lib/python3.10/dist-packages/google/api_core/retry.py in retry_wrapped_func(*args, **kwargs)
    347                 self._initial, self._maximum, multiplier=self._multiplier
    348             )
-> 349             return retry_target(
    350                 target,
    351                 self._predicate,

/usr/local/lib/python3.10/dist-packages/google/api_core/retry.py in retry_target(target, predicate, sleep_generator, timeout, on_error, **kwargs)
    189     for sleep in sleep_generator:
    190         try:
-> 191             return target()
    192 
    193         # pylint: disable=broad-except

/usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/query.py in do_get_result()
   1508                     self._job_retry = job_retry
   1509 
-> 1510                 super(QueryJob, self).result(retry=retry, timeout=timeout)
   1511 
   1512                 # Since the job could already be "done" (e.g. got a finished job

/usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/base.py in result(self, retry, timeout)
    909 
    910         kwargs = {} if retry is DEFAULT_RETRY else {"retry": retry}
-> 911         return super(_AsyncJob, self).result(timeout=timeout, **kwargs)
    912 
    913     def cancelled(self):

/usr/local/lib/python3.10/dist-packages/google/api_core/future/polling.py in result(self, timeout, retry, polling)
    259             # pylint: disable=raising-bad-type
    260             # Pylint doesn't recognize that this is valid in this case.
-> 261             raise self._exception
    262 
    263         return self._result

Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while globbing file pattern.

Location: US
Job ID: 

已尝试的操作

  • 删除所有服务账号后重新创建
  • 多次重新配置权限
  • 移除除项目所有者外所有用户的权限,创建全新服务账号并重新授权
  • 生成新的API密钥并更新到Colab环境
  • 完全重建项目后从头配置

这看起来是权限配置相关的问题,但始终找不到遗漏的环节,求解决思路。

内容的提问来源于stack exchange,提问作者ike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:45:11