Amazon web services 拒绝所有用户的访问,只有一个用户可以访问S3存储桶中的私人文件夹
我有一个公共S3存储桶,里面有两个文件夹,Amazon web services 拒绝所有用户的访问,只有一个用户可以访问S3存储桶中的私人文件夹,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,我有一个公共S3存储桶,里面有两个文件夹,public folder和private folder 我希望每个人都能访问公用文件夹,我只希望user1以编程方式访问专用文件夹 在S3存储桶中,我添加了以下策略: { "Version": "2012-10-17", "Id": "Policy1568654876568", "Statement": [ {
public folder
和private folder
我希望每个人都能访问公用文件夹
,我只希望user1
以编程方式访问专用文件夹
在S3存储桶中,我添加了以下策略:
{
"Version": "2012-10-17",
"Id": "Policy1568654876568",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn-of-user1"
]
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/private-folder/*"
}
]
}
在IAM中,我为user1
创建了一个能够访问存储桶的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
有没有更好的方法来实现这一目标?是否可以使用S3策略拒绝所有人访问
私人文件夹
,然后使用我为user1
定义的IAM策略覆盖该策略?如果您有公用文件夹
和私人文件夹
,下面的操作不是更容易、更自然吗。以下内容基于以下事实:默认情况下,bucket及其对象是私有的
桶政策
它允许公众访问公用文件夹
:
{
"Version": "2012-10-17",
"Id": "Policy1568654876568",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/public-folder/*"
}
]
}
用户策略
它允许放置、获取和删除私有文件夹中的对象
,以及列出bucket
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/private-folder/*"
}
]
}
是否可以使用S3策略拒绝所有人访问私有文件夹,然后使用我为user1定义的IAM策略覆盖该策略
显式拒绝覆盖任何允许。因此,如果您拒绝所有人的访问,则无法使用任何IAM策略来允许访问。非常感谢。我已经公开了这个桶。。。公用文件夹包含每个人都应该看到的图像。有了上述解决方案,人们能否在浏览器中看到公共图像?@HoomanBahreini Hi。我看不出有什么理由不。显然,您还必须调整
阻止公共访问(bucket设置)
设置。然而,最简单的检查方法是验证。如果不想在主bucket上进行实验,可以设置第二个bucket,以使用一些示例文件和策略进行测试。