【问题标题】:BigQuery cross project access via cloud functionsBigQuery 通过云功能进行跨项目访问
【发布时间】:2020-09-05 18:24:19
【问题描述】:

假设我有两个 GCP 项目,A 和 B。我是这两个项目的所有者。使用 UI 时,我可以从两个项目中查询项目 B 中的 BigQuery 表。但是当我尝试在项目 A 中运行 Cloud Function 时遇到问题,我尝试从中访问项目 B 中的 BigQuery 表。具体来说,我遇到了403 Access Denied: Table <>: User does not have permission to query table <>.。我对为什么我无法访问 B 中的数据以及我需要做什么感到有些困惑。在我的 Cloud Function 中,我所做的只是:

from google.cloud import bigquery

client = bigquery.Client()
query = cient.query(<my-query>)
res = query.result()

项目 A 中存在用于运行该函数的服务帐号 - 如何为其授予编辑者访问项目 B 中 BigQuery 的权限? (或者我还应该做什么?)。

【问题讨论】:

  • 我相信您必须将您的 Cloud Function 假定的服务帐户添加到项目 B。
  • 你是对的。我没有意识到您可以将该服务帐户添加为项目 B IAM 中的成员。这应该可行 - 将尽快测试。

标签: python google-cloud-platform google-bigquery google-cloud-functions google-iam


【解决方案1】:

基本上,您在用于运行该函数的服务帐户上的 IAM 权限和角色存在问题。

您应该在您的服务帐户上定义角色 bigquery.admin,这样就可以解决问题。

但是,就最佳做法而言,它可能不是适当的解决方案。下面的链接提供了一些场景以及最适合您的案例的角色示例。

https://cloud.google.com/bigquery/docs/access-control-examples

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2016-11-21
    • 2021-06-30
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多