全面评估 S3 访问

Fully evaluate S3 access

我是 S3 的新手,我知道可以通过存储桶策略或 acl 授予对我的 bucket/objects 的访问权限。问题是可以为每个对象授予 acl 访问权限,所以我不清楚如何全面审查谁获得了访问权限,即使是对存储桶中的单个对象也是如此。我的问题是如何从 aws Web 管理控制台或 boto3 轻松准确地评估它,以确保我是唯一有权访问我的存储桶及其所有对象的人。

不容易。

首先,让我们回顾一下授予权限的方式:

  • 访问控制列表 (ACL) 是 object-level 权限,可以授予 public 访问权限,或访问给特定的用户。它们是 Amazon S3 早期工作方式的残余,管理起来可能很烦人。事实上,最近推出了一项新功能,允许禁用 ACL——这正是 AWS 推荐的!

  • 存储桶策略 允许将权限分配给存储桶,或 存储桶中的路径。这是创建存储桶 public 的好方法,也是提供 cross-account 访问存储桶的唯一方法。
  • IAM 策略 可以应用于 IAM 用户、IAM 组或 IAM 角色。这些策略可以授予访问同一账户内的 Amazon S3 资源的权限。这是 将权限分配给特定 IAM 用户 而不是通过存储桶策略执行此操作的好方法。

Amazon S3 控制台允许您Review bucket access using Access Analyzer for S3:

Access Analyzer for S3 alerts you to S3 buckets that are configured to allow access to anyone on the internet or other AWS accounts, including AWS accounts outside of your organization. For each public or shared bucket, you receive findings into the source and level of public or shared access. For example, Access Analyzer for S3 might show that a bucket has read or write access provided through a bucket access control list (ACL), a bucket policy, a Multi-Region Access Point policy, or an access point policy. Armed with this knowledge, you can take immediate and precise corrective action to restore your bucket access to what you intended.

但是,它不会为您提供谁可以访问哪些存储桶的完整列表。

您想要“确保您是唯一有权访问存储桶的人”——这将需要检查存储桶策略权限所有 IAM 用户。没有 short-cut 可以这样做。

我认为其他答案非常详细地回答了大部分选项。 但通常每个桶包含 public 数据、non-public 数据或敏感数据。对于不应包含 public 数据的任何存储桶,只需禁用它和 CloudFormation

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html

提到此 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html 以限制 public 访问。

此外,存储桶支持加密,当您允许KMS 加密时,您还可以通过KMS 密钥控制对数据的访问。对于敏感数据,这是值得考虑的事情。

否则 - 是的,确实很难确保帐户中没有任何政策不允许您帐户中的任何用户访问他们不应该访问的内容。一种方法可能是只控制谁可以修改 IAM 策略(iam:* 权限)。还有用于控制策略和查找漏洞的自动工具。仅出于一个目的,创建一个也不难。

即使存储桶是完全私有的,也可以通过其他方式 public 创建对象 - 通常是通过 CloudFront。