【问题标题】:Grant AWS IAM Group access to a single S3 Bucket授予 AWS IAM 组对单个 S3 存储桶的访问权限
【发布时间】:2020-08-22 23:17:01
【问题描述】:

我有一个供应商需要每晚将 CSV 文件和 ZIP 文件上传到 AWS S3 存储桶。显然,我不希望他们看到/访问我的任何其他存储桶。在与他们反复多次后,他们可以完成这项夜间任务的唯一方法是将以下策略应用于他们的用户所属的 IAM 组:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}

这显然不理想,我真的希望他们的用户有一个更严格的政策。我一直在使用IAM Policy Simulator 测试一堆其他策略,在测试 ListBucket 和 PutObject 时,它们都导致“拒绝 - 隐式拒绝(无匹配语句)”结果。我还从存储桶中删除了“阻止所有公共访问”设置,认为它正在创建固有的拒绝状态。

我尝试过的许多策略中的一些是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

 {
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::mybucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::mybucket/*"
      }
   ]
}

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

对此的任何帮助表示赞赏。提前感谢您抽出几分钟的时间。

【问题讨论】:

  • 该供应商是否通过 Web 控制台或 api/sdk 访问?
  • API/CLI。抱歉,应该澄清一下。
  • 您是否为要模拟的 ListBucket 和 PutObject 指定了存储桶 arn?如果是,它与mybucket匹配吗?
  • 我没有在模拟中指定存储桶 ARN。我刚刚做了,它通过了。如果我将此策略部署到 IAM 组,是否有任何原因不起作用?我目前正在测试上面提到的最后一个。
  • 您需要发布有关 IAM 组附加了哪些策略的更多详细信息,以便我们进行调试。

标签: amazon-s3 amazon-iam


【解决方案1】:

更新:

我的进一步测试以及我的供应商的广泛测试已证实这一点,可以根据需要工作。

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

【讨论】:

  • 是的,该策略会起作用。我已将您的问题标题从“限制”更改为“授予”,因为在这种情况下您似乎需要这样做(授予访问权限而不是限制现有访问权限)。
  • 如果您发现自己想要为多个供应商执行此操作,您可以使用该策略来限制对特定路径的访问,而不必为每个供应商分配一个存储桶。见:IAM Policy Elements: Variables and Tags - AWS Identity and Access Management
猜你喜欢
  • 2017-01-01
  • 2017-11-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
相关资源
最近更新 更多