IAM用户策略返回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/*"
        ]
      }
    ]
  }

当我在S3存储桶中创建一个新对象时,我会收到一个403 Forbidden错误,但当我使用名为"AmazonS3FullAccess"的托管策略时,一切都很好。

我想做的是限制某些IAM用户的上传/下载权限,但我很难做到这一点。

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

我设法弄清楚,为了上传工作,我需要包含操作"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/*"
                ]
            }
        ]
    }

你能做的第一件事就是弄清楚是错误的操作还是资源范围,你能一次一个地执行这两个策略吗:

    "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"
    ]

如果两者都失败了,那么很可能是你的行为和资源都错了。

好运

最新更新