有没有办法在Google的云服务环境中创建服务帐户,只能访问BigQuery而不是任何其他服务(GCE,App Engine,& c)?或者是否有必要创建一个新的“项目”并将该帐户置于该项目中?
答案 0 :(得分:3)
范围访问有两种方法:
任何一个选项都可以为您服务,具体取决于您的最终目标。
如何使用ACL限制只能访问BigQuery
服务帐户是一种身份,就像电子邮件地址是一种身份一样。
通过ACL控制身份访问,无论是在项目上还是在您要管理的各个数据集上。 BigQuery的访问控制在此处描述:https://cloud.google.com/bigquery/access-control。其他服务和apis提供自己的ACL控件。这些选项共同为您提供了对访问的精细控制。
例如,如果您将服务帐户放在项目所有者ACL中,那么该服务帐户将可以访问项目所有者拥有的所有内容:BigQuery,Google Storage等。
或者,如果您仅将该服务帐户放在单个BigQuery数据集上,那么它只能访问该数据集。 (如果您还希望该服务帐户能够运行BigQuery作业,那么它需要成为某个项目的成员,因为作业在项目的上下文中运行。如果您要求项目运行BigQuery作业不能与存储Google Storage数据的项目相同,那么您将需要多个项目。)
如何使用OAuth Scopes限制只能访问BigQuery
为服务帐户创建OAuth凭据时,可以指定凭据有效的范围。每个api都记录了调用api所需的范围。 BigQuery的范围记录在此处:https://cloud.google.com/bigquery/authorization。
例如,如果您只提供BigQuery范围,那么您的代码将只能进行BigQuery api调用。尝试使用绑定到BigQuery的凭据调用Google Storage API无法正常工作。