我想知道让一台机器将数据复制到Google存储空间的正确/最佳方式。
我需要一台机器才能写入存储桶,但无法创建或删除其他存储桶。
在研究时,我发现您应该创建一个帐户服务,以便此帐户可以登录GC然后使用存储。
但问题是,当机器来自GCE时,有范围。设置范围"默认"它可以从谷歌存储中读取,但无法写入。即使在使用服务帐户进行身份验证之后 当范围是Devstorage.read_write时,机器可以在不登录的情况下从该存储创建和删除存储桶。我觉得要冒风险。
有人有任何建议吗?
由于
答案 0 :(得分:0)
这里的核心问题是“写入”范围包括写入和删除,并且GCE服务帐户可能是项目编辑者的成员,可以创建和删除存储桶。听起来您想要做的是将服务帐户限制为只能影响单个存储桶。您应该可以通过以下步骤执行此操作:
使用对项目具有完全权限的帐户,创建存储桶,然后授予服务帐户对存储桶的写入权限。示例gsutil命令:
gsutil mb gs://yourbucket
gsutil acl ch -u your-service-account-name@gserviceaccount.com:W gs://yourbucket
创建一个不启用GCE服务帐户的虚拟机。
将服务帐户的私钥文件推送到该VM。
在VM上gcloud auth activate-service-account --key-file=your-key-file.json
现在在VM上运行的gsutil
命令应该能够写入(和删除)该存储桶中的对象,但不能写入项目中的任何其他存储桶。