如何调整谷歌云存储的访问控制问题?

时间:2016-07-30 20:42:33

标签: google-cloud-storage google-cloud-platform

在学习如何将Google Compute Engine与Google云端存储配合使用时,我遇到了ACL问题。从我自己的计算机上,使用我自己的SSH凭据,我可以用我的桶做我想做的任何事情。但是当我使用基于Web的SSH客户端登录我的计算实例时,我只能从桶中读取。将数据重新复制到存储桶会导致“访问权限异常:403”权限不足'错误。 (我正在使用gsutil进行所有这些复制实验。)

这对我没有意义。唯一的服务帐户已授予项目编辑器角色,并且我确认存储桶ACL列表允许所有者访问项目编辑器角色AND与服务帐户。我还尝试将服务帐户更改为" WRITE"许可而不是" OWNER"在桶上,但这没有帮助。最后,当我从本地计算机上执行所有操作时,我使用下载的ssh密钥用于相同的默认服务帐户,因此我不明白为什么会发生变化。

问题的一部分是我无法看到橡胶遇到的道路 - 我所得到的只是403而没有更多的信息。我无法看到gsutil正在做什么(事实上,我甚至不确定gsutil如何获取其凭据,因为当你通过控制台进行ssh时,这一切都是自动完成的 - 我只是假设它在服务帐户下登录。)

我显然希望解决这个直接问题,但我也非常感谢有关如何在未来调试这些问题的任何提示。

1 个答案:

答案 0 :(得分:3)

我相信你遇到了一个非常普遍的问题,但我可能错了,所以在我解释之前,我会从顶部概述所需的内容。

默认情况下,计算引擎上的gsutil不使用您的个人用户凭据。相反,它将自动获取凭据以充当为该VM配置的服务帐户(通常是计算引擎默认服务帐户)。

该服务帐户需要两件事才能写入GCS:1。)GCS写入该特定位置的权限,以及2.)写入GCS的范围。

听起来您已将服务帐户设置为项目编辑器,甚至使其成为相关存储桶的所有者,因此您已经处理了第1项。但是,默认情况下,GCE仅授予您的实例访问存储的只读范围。这很有可能是为什么读取对你有用,但写不是。

修复此问题有点烦人,因为无法在正在运行的实例上编辑范围。因此,您需要创建一个新的GCE实例,并在执行此操作时,请确保明确指定范围。如果您正在使用用户界面,请选择"允许对所有云API"的完全访问权限,或选择"为每个API设置访问权限#34;并确保选择" Read Write"或"完全"用于存储。

有关如何在Google网站上执行此操作的更好说明:https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#using