【问题标题】:IAM Policy: Users cannot access S3 bucketIAM 政策:用户无法访问 S3 存储桶
【发布时间】:2022-01-10 18:05:23
【问题描述】:

我创建了一个用户并分配了以下内联策略。同时,我在 s3 中创建了一个存储桶。

"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucketname"

当我将此策略应用于特定用户并尝试访问 S3 时,资源中列出的特定存储桶未显示? 我担心的是我已经对所有 s3 进行了操作,然后我的存储桶没有出现在 S3 中吗?

通过可视化编辑器,我尝试为相同的事物创建策略,策略如下所示

 {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListStorageLensConfigurations",
                "s3:ListAccessPointsForObjectLambda",
                "s3:GetAccessPoint",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessPoints",
                "s3:ListJobs",
                "s3:PutStorageLensConfiguration",
                "s3:ListMultiRegionAccessPoints",
                "s3:CreateJob"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketname"
        }
    ]
}

为什么要为列表创建单独的操作并允许每个资源使用?

【问题讨论】:

  • 要列出存储桶,您需要资源 * 上的 s3:ListAllBuckets。您还错误地将操作限制在存储桶中,因此您根本没有提供任何对象权限(为此您需要arn:aws:s3:::bucketname/*)。见example policy

标签: amazon-web-services amazon-s3 amazon-iam


【解决方案1】:

一些操作在存储桶级别执行(例如列出存储桶),而一些操作在对象级别执行(例如下载对象)。

您可以同时授予这两种权限:

这是来自User policy examples - Amazon Simple Storage Service的示例:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":["s3:ListBucket","s3:GetBucketLocation"],
         "Resource":"arn:aws:s3:::bucketname"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::bucketname/*"
      }
   ]
}

您也可以将它们全部组合成一个策略:

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

但是,请注意,此“全部允许”策略还授予用户删除对象和存储桶的权限,因此在授予用户此类权限时应非常小心。

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2023-03-29
    • 2023-04-05
    • 2019-02-26
    • 2020-06-24
    • 2019-12-01
    • 2021-06-22
    • 2013-08-05
    • 2015-10-06
    相关资源
    最近更新 更多