我有一些(虚拟)服务器。他们使用应用程序密钥在 Backblaze B2 上备份自己。
我想雇一个人来帮助我管理这些服务器。
当该人获得对服务器的 root 访问权限(我想要)时,他还可以访问 B2 应用程序密钥。这意味着他可以删除服务器和备份。
我可以使用什么程序/设置来防范这种极端情况?我确实有离线备份,但这些是每月一次,而 B2 备份是每天一次。
我有一些(虚拟)服务器。他们使用应用程序密钥在 Backblaze B2 上备份自己。
我想雇一个人来帮助我管理这些服务器。
当该人获得对服务器的 root 访问权限(我想要)时,他还可以访问 B2 应用程序密钥。这意味着他可以删除服务器和备份。
我可以使用什么程序/设置来防范这种极端情况?我确实有离线备份,但这些是每月一次,而 B2 备份是每天一次。
在某些环境中,您只需将工作分成两个团队 - 一个团队运行/保护服务器,另一个运行/保护备份。
另一部分更重要的是,imo 更重要的是:如果备份是可写的,尤其是来自正在备份的系统,那么它就不是一个好的备份。
许多工具(如 borg)中的系统性问题。最好(在云世界中)将备份推送到 AWS Glacier,同时将它们存储到 S3 中,角色只能创建它们。有删除的时间表,没有人需要能够“快速”做到这一点。
另外,不要忘记有关于这些东西的书籍。
这是如何做到的:
在 Backblaze B2 上,创建一个不能删除文件的应用程序密钥:
设置备份,以便它使用该密钥并且不尝试删除旧的备份文件。例如,在 中
duplicity
,不要使用remove-older-than
、remove-all-but-n-full
或remove-all-inc-of-but-n-full
; 在duply
,不要使用purge
或purgeIncr
。要删除旧备份,请在存储桶上设置自定义生命周期设置;例如,设置以开头的行
duplicity-full
360天后隐藏,再360天后删除;duplicity-inc
对于以和开头的文件,依此类推duplicity-new
。更新:
B2 实际上并没有提供任何“删除文件”的功能。每次您替换同一个文件时,它都会保留其历史记录,因此一个文件可以有“版本”——最新的版本通常就是您需要的版本。B2 提供的是“隐藏”文件的功能。当您隐藏一个文件时,您实际上是在文件的历史记录中记录该文件被“删除”,您可以添加一个新的文件版本,即隐藏或删除的文件。
除此之外,B2 还提供实际删除文件版本的功能。没有 deleteFiles 权限的用户实际上有隐藏文件的权限,但没有删除文件版本的权限。
在我看来,duplicity 的
remove-...
功能应该通过隐藏文件来实现。(然后由存储桶的配置在一段时间后实际删除这些隐藏文件版本。)但是 duplicity 的 B2 的后端不这样做;它的作用是实际删除文件版本。在大多数公有云上,ssh 访问服务器并不意味着可以删除服务器。在服务器上管理和在云帐户中进行管理是有区别的。因此,您可以将它们分开。您还可以相当多地拆分权限,尤其是在 Amazon AWS 上。例如,您可以授予某人重新启动服务器的权限,但不能将其删除。AWS 在虚拟机上有删除保护选项。
这些天来,最佳实践是使用像 Chef/Puppet/Salt/Ansible 这样的配置管理来对您的服务器进行任何更改,而不是实际登录服务器。
此外,对于 AWS,您可以根据需要随时对服务器进行快照,这是备份它们的最有效方式。