如何使用项目级服务帐户为Google云端存储创建签名网址?

时间:2015-01-21 19:32:19

标签: google-cloud-storage google-compute-engine

对于每个Google Compute实例,都有一个默认服务帐户:

1234567890123-compute@developer.gserviceaccount.com

我可以使用适当的范围(即https://www.googleapis.com/auth/devstorage.full_control)创建我的实例,并使用此帐户发出API请求。

在此页面上:https://cloud.google.com/storage/docs/authentication#service_accounts它说:

  

每个项目都有一个与之关联的服务帐户,可用于身份验证并启用高级功能,如签名URL和使用POST的浏览器上传。

这意味着我可以使用此服务帐户创建签名URL。但是,我不知道如何使用此服务帐户创建签名URL,因为我似乎无法获得与此帐户关联的私钥(.p12文件)。

我可以从开发者控制台创建一个新的独立服务帐户,并且可以选择下载.p12文件进行签名,但项目级服务帐户不会出现在" API和auth /下凭证"部分。我可以在" Project / Permissions"下看到它们,但我无法在那里做任何事情。

我是否遗漏了其他方法来检索这些默认帐户的私钥,或者在使用这些帐户时是否无法签署网址?

1 个答案:

答案 0 :(得分:3)

当您通过主帐户或GCE服务帐户或对存储桶和文件具有适当权限的其他服务帐户进行身份验证时,您可以使用任何服务帐户的p12密钥。

在这种情况下,只需创建服务帐户下载p12密钥并使用以下命令对您的URL进行签名:

$ gsutil signurl -d 10m privatekey.p12 gs:// bucket / foo

虽然您可以使用以下命令使用不同的服务帐户进行身份验证:

gcloud auth activate-service-account service-account-email --key-file key.p12

您可以使用以下命令列出并切换帐户:

$ gcloud auth list
$ gcloud config set account