AWS:如何查看用户 2 创建的用户 1 存储桶

AWS: how to see the user1 created bucket by user2

第 1 步: User1 创建了 test-bucket 并上传了几个文件

第 2 步: 下面的策略已创建并附加到存储桶

{
"Version":"2012-10-17",
"Id":"policy example",
"Statement":
 [
  {
"Effect":"Allow",
"Principal":"*",
"Action":["s3:List*","s3:Get*","s3:Put*"],
"Resource":"arn:aws:s3:::*"
   }
 ]
}

第 3 步: 用户 1 使用 s3cmd ls 并且能够看到存储桶

第 4 步: 用户 2 使用了 s3cmd ls 但无法看到存储桶

第 5 步: 用户 2 使用 s3cmd ls s3://test-bucket 并且能够看到存储桶内容

问题: 有什么方法可以在存储桶上定义 policy/access 以便 User2 能够看到该存储桶(如第 4 步中所述)? ?

非常感谢

如果两个 IAM 用户都在同一个 AWS 账户中

s3cmd ls 命令将列出 AWS 账户 中的所有存储桶。它使用 s3:ListAllMyBuckets 权限。 运行 此命令的权限 不是 由存储桶策略授予,因为它列出了 所有 个存储桶。

如果您想授予使用 s3cmd ls 的权限,请将此权限 添加到 IAM 用户 :

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource":"*"
      }
   ]
}

如果 IAM 用户在不同的 AWS 账户

当不同 AWS 账户中的用户列出存储桶时,不可能 出现 test-bucket。这是因为 s3cmd ls 命令列出了当前用户 AWS 账户中的所有存储桶。如果存储桶是在其他帐户中创建的,它将不会列出。

还有一个警告...

您显示的存储桶策略高度不安全。它正在授予 世界上任何人 的权限:

  • 列出存储桶的内容
  • 上传文件到存储桶
  • 从存储桶下载文件

例如,他们可以上传盗版电影,然后邀请其他人下载文件。您需要支付所涉及的数据传输费用。

s3:List*s3:Put* 权限授予 *(这意味着任何人和每个人!)很少是个好主意。