【发布时间】:2014-12-13 02:31:27
【问题描述】:
有没有办法在只能访问 BigQuery 而不能访问任何其他服务(GCE、App Engine 等)的 Google 云服务上下文中创建服务帐户?或者是否需要创建一个新的“项目”并将帐户放入该项目中?
【问题讨论】:
标签: google-bigquery
有没有办法在只能访问 BigQuery 而不能访问任何其他服务(GCE、App Engine 等)的 Google 云服务上下文中创建服务帐户?或者是否需要创建一个新的“项目”并将帐户放入该项目中?
【问题讨论】:
标签: google-bigquery
有两种方法来确定访问范围:
任何一个选项都适合你,这取决于你的最终目标是什么。
如何使用 ACL 限制对 BigQuery 的访问
服务帐户是一种身份,就像电子邮件地址是一种身份一样。
身份访问通过 ACL 控制,无论是在项目上还是在您要管理的单个数据集上。 BigQuery 的访问控制在此处描述:https://cloud.google.com/bigquery/access-control。其他服务和 API 提供自己的 ACL 控件。这些选项一起为您提供了对访问权限的细粒度控制。
例如,如果您将服务帐号放在项目所有者 ACL 中,那么该服务帐号将可以访问项目所有者拥有的所有内容:BigQuery、Google Storage 等。
或者,如果您只将该服务帐号放在单个 BigQuery 数据集上,则它只能访问该数据集。 (如果您还希望该服务帐户能够运行 BigQuery 作业,那么它需要是某个项目的成员,因为作业在项目的上下文中运行。如果您需要在其中运行 BigQuery 作业的项目不能是存储 Google Storage 数据的同一个项目,那么您将需要多个项目。)
如何使用 OAuth 范围限制对 BigQuery 的访问
为您的服务帐户创建 OAuth 凭据时,您可以指定凭据有效的范围。每个 api 都记录了调用 api 所需的范围。 BigQuery 的范围在此处记录:https://cloud.google.com/bigquery/authorization。
例如,如果您只提供 BigQuery 范围,那么您的代码将只能进行 BigQuery api 调用。尝试使用绑定到 BigQuery 的凭据调用 Google Storage API 将不起作用。
【讨论】: