Google cloud platform 我不想为我想与之共享bigquery数据集的外部用户生成服务帐户-这会产生什么影响?

Google cloud platform 我不想为我想与之共享bigquery数据集的外部用户生成服务帐户-这会产生什么影响?,google-cloud-platform,google-bigquery,google-iam,Google Cloud Platform,Google Bigquery,Google Iam,我让一个用户的Google帐户访问我的一个数据集。他们正在使用以下Python脚本: def query_stackoverflow(): client = bigquery.Client() query_job = client.query( """ SELECT * FROM `myproject.mydata.mytable` ORDER BY someColumn DESC

我让一个用户的Google帐户访问我的一个数据集。他们正在使用以下Python脚本:

def query_stackoverflow():
    client = bigquery.Client()
    query_job = client.query(
        """
        SELECT *
        FROM `myproject.mydata.mytable`
        ORDER BY someColumn DESC
        LIMIT 10"""
    )

    results = query_job.result()
这是可行的,但他们看到了这个警告:

用户警告:您的应用程序已使用最终用户进行身份验证 来自Google Cloud SDK的凭据,没有配额项目。你可以 接收到超出配额或API未启用错误。我们推荐 您重新运行gcloud auth应用程序默认登录,并确保 添加了配额项目。或者您可以使用服务帐户。对于 有关服务帐户的更多信息,请参阅 WARNING.warn\u CLOUD\u SDK\u凭证\u WARNING

我读了一些文件,但我不明白这意味着什么。这是否意味着我应该为我的项目设定配额?我认识这个人,也信任他们,但这是否意味着他们可以用掉我所有的bq配额和他们的查询?这似乎也可以通过使用服务帐户来解决,那么这个配额是我不能更改的非服务帐户访问的硬限制吗

让用户的Google帐户访问比创建服务帐户并为其生成密钥更方便、更安全。

客户端库等使用配额项目进行计费。您可以使用CLI设置配额项目:

命令示例:

cloud auth application-default set-quota-project my-quota-project
查看BigQuery配额和限制并实施它们。这将提高安全性并将金融风险降至最低

谷歌云有三种主要的授权方法。由Google帐户、Gmail、G套件等、服务帐户和API密钥创建的用户凭据

您收到的警告是由于谷歌更倾向于应用程序使用服务帐户进行授权,而不是用户凭据。您可以在代码中禁用此警告,但我不建议这样做。相反,创建配额项目,创建服务帐户,并锁定服务帐户,以仅提供用户所需的角色

在您的问题中,您没有描述如何使用用户凭据来获取授予API访问权限所需的OAuth访问令牌。如果你在传递代币,这不是很安全。可以删除服务帐户,可以轮换服务帐户密钥等,从而提供更好的安全级别。如果你了解谷歌云,我写了一篇关于如何使用模拟的文章。您可以使用此方法继续使用用户凭据模拟服务帐户,而无需分发密钥

用户帐户凭据的API调用配额比服务帐户低得多。这可能会导致使用用户帐户生成的访问令牌的软件失败。

客户端库等使用配额项目进行计费。您可以使用CLI设置配额项目:

命令示例:

cloud auth application-default set-quota-project my-quota-project
查看BigQuery配额和限制并实施它们。这将提高安全性并将金融风险降至最低

谷歌云有三种主要的授权方法。由Google帐户、Gmail、G套件等、服务帐户和API密钥创建的用户凭据

您收到的警告是由于谷歌更倾向于应用程序使用服务帐户进行授权,而不是用户凭据。您可以在代码中禁用此警告,但我不建议这样做。相反,创建配额项目,创建服务帐户,并锁定服务帐户,以仅提供用户所需的角色

在您的问题中,您没有描述如何使用用户凭据来获取授予API访问权限所需的OAuth访问令牌。如果你在传递代币,这不是很安全。可以删除服务帐户,可以轮换服务帐户密钥等,从而提供更好的安全级别。如果你了解谷歌云,我写了一篇关于如何使用模拟的文章。您可以使用此方法继续使用用户凭据模拟服务帐户,而无需分发密钥


用户帐户凭据的API调用配额比服务帐户低得多。这可能会导致使用用户帐户生成的访问令牌的软件失败。

我想我被搞糊涂了,似乎我应该让其他用户在他们自己的gcp项目中生成他们自己的服务帐户,然后我与他们的服务帐户共享我的数据集,然后他们获得大查询引擎查询的账单,对吗?他们正在查询我的大查询数据集,但他们正在支付BQ查询/计算成本,对吗?@red888将他们的服务帐户标识添加到您的项目中是一个很好的解决方案管理/安全性。然而,这不会改变谁来付账。项目是收费的,而不是项目的用户。服务帐户所在的项目是收费的,对吗?他们正在使用项目中的服务帐户运行大查询查询,但正在访问我的数据集,对吗?@red888-当您在项目a中创建服务帐户并添加该帐户时
标识到项目B,在项目B中访问的任何资源都将记入项目B。该标识不用于计费。有一些例外,比如谷歌域名,但在谷歌云中,拥有资源的项目是收费的,而不是访问资源的用户。@red888-BigQuery专家Mikhail Berlyant的回答说,你对查询计费的看法是对的,我错了。我考虑的是资源,而不是查询。。看看这个答案是否有帮助:我想我被弄糊涂了,似乎我应该让其他用户在他们自己的gcp项目中生成他们自己的服务帐户,然后我与他们的服务帐户共享我的数据集,然后他们获得大查询引擎查询的账单,对吗?他们正在查询我的大查询数据集,但他们正在支付BQ查询/计算成本,对吗?@red888将他们的服务帐户标识添加到您的项目中是一个很好的解决方案管理/安全性。然而,这不会改变谁来付账。项目是收费的,而不是项目的用户。服务帐户所在的项目是收费的,对吗?他们正在使用项目中的服务帐户运行大查询查询,但正在访问我的数据集,对吗?@red888-当您在项目a中创建服务帐户,然后将该标识添加到项目B时,在项目B中访问的任何资源都将计入项目B。该标识不用于计费。有一些例外,比如谷歌域名,但在谷歌云中,拥有资源的项目是收费的,而不是访问资源的用户。@red888-BigQuery专家Mikhail Berlyant的回答说,你对查询计费的看法是对的,我错了。我考虑的是资源,而不是查询。。看看这个答案是否有用: