我的存储桶文件夹是私有的,但是当我将单个对象的URL复制到浏览器中时(当我注销时),我仍然可以下载/查看该文件。
我该如何防止这种情况?
这是我的存储桶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"NotResource": "arn:aws:s3:::my-bucket/backup/*"
}
]
}
我想要实现的目标:将每个文件夹设为私有,除了名为media
和static
的2个文件夹(我希望公开读取访问权限)。
答案 0 :(得分:0)
在您的政策中,您明确告知其允许匿名公开GET访问。
您必须将其更改为以下内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:*"
],
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::ACCOUNT_ID:user/USERNAME_A",
"arn:aws:iam::ACCOUNT_ID:user/USERNAME_B",
"arn:aws:iam::ACCOUNT_ID:user/USERNAME_C",
"arn:aws:iam::ACCOUNT_ID:role/ROLE_A",
"arn:aws:iam::ACCOUNT_ID:role/ROLE_B",
"arn:aws:iam::ACCOUNT_ID:role/ROLE_C"
]
},
"Resource": [
"arn:aws:s3:::BUCKET_NAME",
"arn:aws:s3:::BUCKET_NAME/*"
]
}
]
}
请在此处参阅更多政策examples。
答案 1 :(得分:0)
我认为你正在寻找类似的东西。
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("borderOut", MainBorder);
}
请参阅此Grant Access to User-Specific Folders in an Amazon S3 Bucket了解详情。
答案 2 :(得分:0)
此政策授予对这两个文件夹的公开GetObject
访问权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadAccess",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::jr-enc/media/*",
"arn:aws:s3:::jr-enc/static/*"
],
"Principal": "*"
}
]
}
请注意,GetObject
仅授予访问/下载对象的权限。它不允许列出存储桶/文件夹的内容。