在GCE VM上使用Google Storage的正确方法

时间:2016-04-29 18:02:02

标签: google-cloud-storage

我想知道让一台机器将数据复制到Google存储空间的正确/最佳方式。

我需要一台机器才能写入存储桶,但无法创建或删除其他存储桶。

在研究时,我发现您应该创建一个帐户服务,以便此帐户可以登录GC然后使用存储。

但问题是,当机器来自GCE时,有范围。设置范围"默认"它可以从谷歌存储中读取,但无法写入。即使在使用服务帐户进行身份验证之后 当范围是Devstorage.read_write时,机器可以在不登录的情况下从该存储创建和删除存储桶。我觉得要冒风险。

有人有任何建议吗?

由于

1 个答案:

答案 0 :(得分:0)

这里的核心问题是“写入”范围包括写入和删除,并且GCE服务帐户可能是项目编辑者的成员,可以创建和删除存储桶。听起来您想要做的是将服务帐户限制为只能影响单个存储桶。您应该可以通过以下步骤执行此操作:

  1. 在项目中创建服务帐户(并保存私钥文件)。
  2. 在项目的权限页面中,确保服务帐户不是项目的项目编辑器。
  3. 使用对项目具有完全权限的帐户,创建存储桶,然后授予服务帐户对存储桶的写入权限。示例gsutil命令:

    gsutil mb gs://yourbucket

    gsutil acl ch -u your-service-account-name@gserviceaccount.com:W gs://yourbucket

  4. 创建一个启用GCE服务帐户的虚拟机。

  5. 将服务帐户的私钥文件推送到该VM。

  6. 在VM上gcloud auth activate-service-account --key-file=your-key-file.json

  7. 现在在VM上运行的gsutil命令应该能够写入(和删除)该存储桶中的对象,但不能写入项目中的任何其他存储桶。