我想将对AWS S3存储桶的访问限制为仅限在其上运行代码的应用程序。所有其他用户都不应该能够查看或访问bucket,即使是AWS帐户所有者。
根据亚马逊上提到的解决方案,帐户所有者可以访问所有服务。
一种解决方案可以是加密存储桶中的数据,并且应用程序代码拥有解密它的逻辑。但我正在寻找更好的解决方案,如果有的话。
感谢任何解决方案!
除了root登录之外,AmazonS3中的所有内容默认都是私有的。除非通过IAM或Bucket策略授予权限,否则任何用户都无法访问它。
因此,简单的答案是只向应该具有访问权限的特定实体授予访问权限。在组织希望授予"管理员"访问权限的情况下,这会稍微复杂一些,该策略可能会授予对所有AmazonS3存储桶的访问权限。可以通过应用覆盖"允许"策略的Deny策略来更正此问题。例如,Admins可能具有对所有S3存储桶的Allow访问权限,但Deny策略可能会删除他们对特定存储桶的访问权限。
如果超级敏感信息保存在Amazon S3中,通常的做法是将敏感数据放入不同AWS帐户的Amazon S3存储桶中。这样,即使是Admins和root登录名也无法访问bucket。只有其他帐户的root登录名才能获得访问权限。
另一种常见做法是使用多因素身份验证(MFA(保护root登录,例如物理设备,然后将该物理设备锁定在保险箱中。或者,将密码分成两半,每一半由不同的人使用。这可以防止使用root登录,但允许在关键情况下使用它。
加密应用程序中的信息是好的,但如果应用程序能够解密它,那么有权访问应用程序源代码的人也可以找到如何解密它。即使加密密钥保存在AWS Secrets Manager中,root登录名也可以访问这些机密。
底线:使用锁定的物理MFA保护root登录,然后根据需要使用IAM策略授予访问权限。
此外,还要注意如何授予应用程序访问权限。如果是通过IAM角色完成的,请确保其他人不能担任该角色并自己获得相同的访问权限。