我想在其他用户的账户上托管 EC2 实例,同时保留所有 shell 访问权限。我可以只创建实例并保留私钥,但根据https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair,存储 EC2 实例的 AWS 账户的所有者可以通过分离根卷并将其重新连接到新实例来恢复密钥。
我的想法是加密卷(通过创建卷的快照,使用我自己的个人 KMS 密钥对其进行加密 - 此处向新用户提供临时访问权限,并将其附加到 EC2 实例),然后撤销新用户对 KMS 密钥的访问权限。在撤销 KMS 密钥访问权限后,我尝试了上述链接概述的分离和重新连接方法,并且在启动新实例(附加了加密卷)时发生错误(Client.InternalError:启动时客户端错误) - 这是我想要的。
我的问题是,这是实现我想要的目标的有效方法吗 - 在不同的用户帐户上托管 EC2 实例,同时完全阻止 shell 访问?
答案1
不,这不是限制访问的有效解决方案。正确的解决方案是将客户资源托管在您拥有的新帐户上。显然,在其他人拥有的帐户上运行任何东西都不会安全,因为他们可以创建 IAM 角色来做任何事情。当然,您可以撤销跨帐户 KMS 密钥,但他们可能会终止您的实例。
我建议创建一个新帐户(讨厌的文书工作),但这是必要的。如果客户是付款人,您可以向他们发送与每月 AWS 账单相匹配的发票,但这在您的管辖范围内,理应如此。
如果您确实需要在其他人的帐户上托管实例,则加密卷是您可以获得的最佳安全性,但请记住客户端可以随意销毁该实例。