我想设置一个可以每天将文件备份保存到 Google Cloud Storage 的服务帐户。
我打算使用对象版本控制和维护文件的最新 30 个版本的生命周期策略来做到这一点。
但是,我发现了同一个文件的 gsutil requires the delete privilege to create a new version。
给备份进程删除权限似乎有点疯狂,并且与最小权限原则不符,因为我的理解是这使服务帐户能够执行 gsutil rm -a
并全部删除一次性备份多个版本。
那么,实现这一目标的最佳、最低权限的方法是什么?
我每次都可以在文件名后附加一个时间戳,但是我无法使用生命周期管理,并且必须编写自己的脚本来确定哪些是最近的 30 个并删除其余的。
有没有更好/更简单的方法来做到这一点?
答案 0 :(得分:0)
我能想到的解决此问题的最佳方法是拥有两个服务帐户——一个只能创建对象(使用时间戳创建备份),另一个可以列出和删除它们。
storage.objects.delete
权限。答案 1 :(得分:0)
我们最终只是将文件保存为不同的文件名(例如 backup-YYYYMMDD
)并使用保留策略在 30 天后删除该文件。
它并不严格,如果备份失败 30 天,那么所有版本都将被删除,但我们认为我们已经做好了足够的准备,以至于有人会在 30 天前注意到这一点。
我们不喜欢把它留给脚本来进行删除,因为: