允许管理员访问s3存储桶中的sub_foldier.保持所有其他文件夹为公共文件夹



假设我有以下s3结构

company_folder
folder1
folder2
folder3
sub_folder1 
sub_folder2

我目前拥有以下权限,允许访问每个文件夹、子文件夹和文件。这是一个网络应用程序。

"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::company_folder/*"

使用管理员IAM访问密钥id:ABCD我可以使用carrierwave将图像放入子文件夹中。我使用一个单一的cloudfront根url来传递来自各种"文件夹"one_answers"子文件夹"的图像

发送到"sub_folder2"的图像没有显示在网站上,并且分辨率很高。除管理员外,任何人都不应访问它们。

如何在"company_folder"的bucket策略中更改对"sub_folder2"的限制

我需要拒绝除admin之外的所有人对"sub_folder2"的GET和PUT访问,同时对"company_folder"中的其他内容保持公共读取。

我认为"company_folder"需要保持公开,因为这是我的cloudfront url指向的地方。

这是一个只编辑bucket策略的简单解决方案吗?

下面的bucket策略应该适用于您。诀窍是明确拒绝访问您不想要的资源/操作,然后允许访问您想要的资源或操作。注意bucket策略、IAM策略和对象ACL之间的交互。此外,请确保您使用Trusted Advisor来警告您具有世界可读性的存储桶。

{
"Id": "Policy1429934459265",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1429934187436",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::company_folder/*",
"Principal": "*"
},
{
"Sid": "Stmt1429934452272",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTorrent",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTorrent",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:RestoreObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::company_folder/folder3/sub_folder2/*",
"Principal": {
"AWS": [
"arn:aws:iam::888888888888:user/youruser"
]
}
},
{
"Sid": "Stmt1429934245711",
"Action": "s3:GetObject",
"Effect": "Deny",
"Resource": "arn:aws:s3:::company_folder/folder3/sub_folder2/*",
"Principal": "*"
}
]
}

相关内容

  • 没有找到相关文章