当 root 用户可访问 S3 存储桶时,我可以模拟该存储桶关闭吗?

当 root 用户可访问 S3 存储桶时,我可以模拟该存储桶关闭吗?

我正在尝试为在 Debian 设备上运行的应用程序测试新的网络监控代码。我目前的任务是确保在使用 FUSE 安装外部网络共享(例如 S3 存储桶)并且连接中断时抛出 SNMP 陷阱。

问题是,为了使共享无法访问,我显然必须使文件不可写(或使用 iptables 阻止每个可能与 S3 相关的 IP),并且如果存储桶要由 root 用户读取和写入,则我无法阻止写访问,并且由 root 用户监控。

有没有什么方法可以让这个以 root 身份运行的程序认为存储桶已经崩溃了?

PS 我无法使用 chattr 创建这些存储桶,因为据我所知,S3 不支持诸如不变性之类的属性概念。

答案1

有很多方法可以模拟某些事情发生。您已经说过一种使用 iptables 阻止规则的方法。

另一个非常简单的方法 - 拔掉网络路由器,这样您的监控软件仍然可以看到主机,但主机无法与 S3(或其他任何东西)通信。对我来说,这是最简单的方法,但在某些情况下可能不合适。

另一个选项是编辑服务器上的 hosts 文件,并为 S3 主机名添加一些虚拟 IP,以便它们解析到错误的位置。即使用未分配给任何内容的 IP。因此,来自主机的所有 S3 请求都将尝试到达那里,但无法到达。完成后,只需从 hosts 文件中删除 IP,一切都将恢复正常,无需重新启动。

答案2

为什么不直接检查 S3 bucket 中是否存在特定文件呢?如果不存在,就抛出 SNMP 陷阱。

创建/删除此文件将使验证您的脚本是否正常运行变得非常简单。

答案3

如果存储桶旨在由根用户读取和写入,并且由根用户监控,则我无法阻止写访问。

这个故事的开始和结束都在于这个存储桶需要通过 IAM 访问。您在 AWS 上的根帐户仅用于设置 IAM 角色。完成该设置后,您可以更改 IAM 权限以进行测试。

相关内容