我想设置一个服务帐户,每天都可以将文件备份保存到谷歌云存储中。
我打算使用对象版本控制和生命周期策略来维护文件的最新30个版本。
但是,我发现了同一文件的gsutil requires the delete privilege to create a new version。
在我看来,赋予备份进程删除权限有点疯狂,而且不符合最小权限原则,因为我的理解是,这将使服务帐户能够一次性执行gsutil rm -a
和nuke所有版本的备份。
那么,实现这一目标的最好、最小特权的方法是什么呢?
我可以每次都在文件名上附加一个时间戳,但是这样我就不能使用生命周期管理,而必须编写自己的脚本来确定哪些是最近的30个,并删除其余的。
有没有更好/更简单的方法来做到这一点?
发布于 2021-02-10 15:27:42
我能想到的解决这个问题的最好方法是有两个服务帐户--一个只能创建对象(使用时间戳创建备份),另一个可以列出和删除它们。
storage.objects.delete
cronjob凭据用于运行一个脚本,该脚本列出您的备份对象并删除除最新的30个对象之外的所有对象-您可以在某处的虚拟机上作为cronjob运行此脚本,或者仅在利用云发布/订阅to trigger a Cloud Function.上载新备份时运行此脚本
发布于 2021-02-12 12:02:56
我们最终只是将文件保存为不同的文件名(例如backup-YYYYMMDD
),并使用保留策略在30天后删除该文件。
它不是水密的,如果备份失败30天,那么所有版本都将被删除,但我们认为我们已经采取了足够的措施,人们会在30天前注意到这一点。
我们不喜欢让脚本来执行删除操作,因为:
https://stackoverflow.com/questions/66131990
复制相似问题