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/*"
]
}
]
}
我正在努力让 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/*"
]
}
]
}