我的服务帐号即使拥有足够的权限也无法访问 BigQuery 数据

Posted

技术标签:

【中文标题】我的服务帐号即使拥有足够的权限也无法访问 BigQuery 数据【英文标题】:My service account is not able to access BigQuery Data even if it have sufficient permission 【发布时间】:2020-09-02 01:03:28 【问题描述】:

我想使用 BigQuery API 在 BigQuery 中查询数据。 这些是我所做的。

    从“API 服务”菜单创建服务帐户 screenshot 我授予了“BigQuery 数据编辑器”和“BigQuery 用户”权限 screenshot 为该服务帐户添加了密钥 screenshot 尝试使用我创建的服务帐户从该项目的 BigQuery 表中检索数据。但它失败并显示以下错误消息。

拒绝访问:表 [项目 ID]-[表名称]:用户没有表 [项目 ID]-[表名称] 的 bigquery.tables.get 权限。

这很奇怪,因为在 Google 文档中的 BigQuery predefined IAM roles 上,“BigQuery 数据编辑器”中包含“bigquery.tables.get”权限。screenshot

我仔细检查了服务帐号是否具有来自 IAM 和管理菜单的“BigQuery 数据编辑器”和“BigQuery 用户”权限。 screenshot 我多次尝试此过程以确认我没有犯错误,但结果不会改变。这个问题的原因是什么?任何评论将不胜感激。 p.s.我使用 Microsoft 提供的数据分析工具 DataBricks 软件,关注this step。首先我怀疑 DataBricks 上的配置,但是当我成功使用另一个 BigQuery 帐户检索数据时,我认为这个 BigQuery 帐户存在问题。

【问题讨论】:

【参考方案1】:

您可能没有使用您认为的凭据运行?您可以从您的数据块工具运行查询来验证吗? SELECT SESSION_USER() as whoami 之类的东西应该可以确认。

另一个最可能导致此错误的原因是该工具正在尝试使用与您预期不同的项目 ID。 databricks 是否有用于定义要使用的默认项目 ID 的配置选项?

【讨论】:

感谢 cmets shollyman。我正在寻找在 DataBricks 上执行此类查询的命令,但仍然无法找到它。找到后让我更新。 DataBricks 有一个用于定义默认项目 ID 的配置选项,我明确定义了项目 ID,但它不起作用。再次感谢您的评论。 我尝试了您提供的命令,并确认查询是由我打算使用的服务帐户运行的。现在我假设 GCP 上的 VPC 网络正在限制来自数据块的访问。 cloud.google.com/vpc/docs/vpc?hl=en 是的,如果涉及 VPC-SC 策略,则可能是问题的根源。

以上是关于我的服务帐号即使拥有足够的权限也无法访问 BigQuery 数据的主要内容,如果未能解决你的问题,请参考以下文章

无法使用服务帐户订阅 google pub 子主题

即使拥有管理员权限,我也无法从 Facebook 页面获取事件 [重复]

您没有足够的权限访问此页面而不进行任何更改[关闭]

即使在清单文件中声明了适当的权限,也无法访问相机

无法在Azure Active Directory中创建应用程序。错误:没有足够的权限来完成操作

即使 IAM 策略授予访问权限,Web 应用程序也无法访问私有 s3 文件