我有属于不同客户端的服务器 S3 存储桶。我在我的应用程序中使用 AWS SDK for PHP 将照片上传到 S3 存储桶。确切地说,我正在使用适用于 Laravel 4 的 AWS 开发工具包,但我认为问题不在于这个特定的实现。
问题是除非我给 AWS 用户我的服务器正在使用 FullS3Access,否则它不会将照片上传到存储桶。它会说拒绝访问!我首先尝试只授予对相关存储桶的完全访问权限,然后我意识到我应该添加列出所有存储桶的功能,因为这可能是 SDK 尝试做的以确认凭据但仍然没有运气。
{
"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:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::clientbucket"
]
}
]
}
这个应用程序可以访问所有 S3 存储桶来工作,这对我来说是一个很大的安全问题。