Google api 限制谷歌服务账户';她允许吗?

Google api 限制谷歌服务账户';她允许吗?,google-api,google-bigquery,Google Api,Google Bigquery,我正在浏览谷歌的指南,并试图使用服务帐户的凭证来调用谷歌API 所以我有一个data对象,它包含从JSON密钥文件解析的凭证 def get_bigquery_service(): # ... Read and parse JSON Key file scope = ["https://www.googleapis.com/auth/bigquery"] credentials = SignedJwtAssertionCredentials( data['

我正在浏览谷歌的指南,并试图使用服务帐户的凭证来调用谷歌API

所以我有一个
data
对象,它包含从JSON密钥文件解析的凭证

def get_bigquery_service():
    # ... Read and parse JSON Key file
    scope = ["https://www.googleapis.com/auth/bigquery"]
    credentials = SignedJwtAssertionCredentials(
        data['client_email'],
        data['private_key'],
        scope=scope)
    http = httplib2.Http()
    http = credentials.authorize(http)
    return build("bigquery", "v2", http=http)
然后我将有权访问BigQueryAPI,因为我在
scope
中声明了它

我担心的是,我看不到任何选项允许我实际约束该服务帐户能够在Google开发者控制台中使用BigQueryAPI。比方说,如果凭证文件意外泄漏给其他人,他们基本上可以对我的任何服务做任何事情,只需在
范围内声明他们想要访问的内容


我们有没有办法限制服务帐户拥有的权限?

因此您拥有project-A,并且希望创建一个只能在project-A中使用BigQuery和分析数据的服务帐户


创建project-B,并仅为其启用BigQuery API。为project-B创建一个服务帐户。然后在project-a中为project-B提供分析其数据的权限。

Hmm。但我在project a中已经有大量历史数据,无法迁移到project B。您不必迁移数据,只需告诉BigQuery project B可以窥视project a数据(读取权限)请注意,您有两个选项可以授予读取权限:(1)您可以将项目B的服务帐户添加为项目a中的项目读取器。这将授予对项目a的所有数据集的读取权限以及对项目a的项目状态的读取权限。(2) 您可以将项目B的服务帐户添加到项目A中要共享的特定数据集中。这将提供对这些数据集的读取权限。在任何一种情况下,项目B的服务帐户都将向读取项目A中的表的项目B提交查询作业。您将需要使用完全限定的表引用,即“[projectA:dataset.table]”。