如何使用项目级服务帐户为 Google Cloud Storage 创建签名 URL?

Jef*_*ine 5 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 和身份验证/凭据”部分下。我可以在“项目/权限”下看到它们,但我不能在那里对它们做任何事情。

我是否缺少其他方法来检索这些默认帐户的私钥,或者在使用它们时无法对网址进行签名?

Kam*_*ran 0

当您通过主帐户或 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 配置集帐户