我已成功添加了使用 GCP 实例上的我自己的本地帐户连接和从 GCP 实例传输文件的功能,方法是通过添加 Google Cloud 服务帐户的 API 访问权限。
我在 GCP 实例上运行了一项服务 NGINX,并且该服务以实例上的本地帐户权限 (nginx) 运行。但是,作为用户“nginx”,我无法使用 gsutil 命令。我想做的是将日志文件从 GCP 实例传输到存储桶中以进行安全保存,这样我就可以释放实例上的空间。
现在回答我的问题是:如何设置权限或环境,以便用户能够让 GCP 实例上的本地帐户使用 gsutil 和/或 gcloud (或类似)命令使用 GCP 服务帐户将数据从实例复制到存储桶?
答案1
答案2
对于可能存在错误的一些想法:
- 告诉 gsutil 使用应用程序默认凭据的配置位于 中
/etc/boto.cfg
。确保您的 nginx 用户可以读取该文件。 - gsutil 的设置可以被覆盖。查看是否有 BOTO_CONFIG 环境变量或 ~nginx/.boto.cfg 文件替换默认设置。
我相信 GCE 实例上的任何用户都应该能够使用gsutil
。凭据是通过 HTTP 调用授予的。您可以通过 sudo 成为 nginx 用户并运行以下命令来测试您是否收到了它们:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
-H "Metadata-Flavor: Google"
答案3
.config
我通过添加一个组并为该组提供.gsutil
适当的权限,然后将用户添加到该组来解决这个问题nginx
。但这真的不是我喜欢的解决方法 - 但它确实有用。