[英]Deny access to all users except one to access private-folder inside S3 bucket
我有一个公共 S3 存储桶,里面有 2 个文件夹, public-folder
和private-folder
我希望每个人都可以访问public-folder
而我只希望user1
以编程方式访问private-folder
。
在 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 策略拒绝每个人访问private-folder
,然后使用我为user1
定义的 IAM 策略覆盖它?
如果您有public-folder
和private-folder
,下面的事情会不会更容易、更自然。 以下内容基于桶及其对象默认为私有的事实。
它允许公共访问public-folder
:
{
"Version": "2012-10-17",
"Id": "Policy1568654876568",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/public-folder/*"
}
]
}
它允许在private-folder
放置、获取和删除对象,以及列出存储桶。
{
"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 策略来允许访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.