IAM 用户策略在 Amazon S3 存储桶上返回 403 Forbidden

IAM user policy returning 403 Forbidden on Amazon S3 bucket

我正在努力让 AWS S3 IAM 用户策略发挥作用,这是我当前的 IAM 用户策略:

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

当我执行 post 在我的 S3 存储桶中创建一个新对象时,我收到 403 禁止错误,但是当我使用名为 'AmazonS3FullAccess' 的托管策略时,一切正常。

我想做的是限制某些 IAM 用户的 upload/downloads 权限,但我正在努力让它工作。

如有任何建议,我们将不胜感激!

您可以做的第一件事是弄清楚是错误的操作还是资源范围,您可以同时执行这两个策略吗:

    "Action": [
      "s3:*"
    ],
    "Resource": [
      "arn:aws:s3:::vault-us/*"
    ]

    "Action": [
      "s3:DeleteObject",
      "s3:GetObject",
      "s3:PutObject"
    ],
    "Resource": [
      "*"
    ]

如果第一个有效而第二个失败,则说明您没有足够的权限来执行操作,例如尝试添加 listBucket 或类似的(我倾向于添加所有可能的并逐渐删除它们直到它中断)。

如果第一个失败而第二个有效,那么您的资源声明是错误的,我发现的最常见的修复方法是尝试添加:

    "Action": [
      "s3:DeleteObject",
      "s3:GetObject",
      "s3:PutObject"
    ],
    "Resource": [
      "arn:aws:s3:::vault-us/*",
      "arn:aws:s3:::vault-us"
    ]

如果两者都失败了,那么很可能您的操作和您的资源都是错误的。

祝你好运

我设法弄清楚,为了使上传工作正常,我需要包含操作 "s3:PutObjectAcl" 以下是我的 IAM 策略示例:

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