如何根据文件类型限制S3文件上传到桶?



我尝试创建一个桶策略,只允许以jpeg和png上传文件,并限制其他类型。

{
"Id": "Policy1464968545158",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1464968483619",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<bucket>/*.jpg",
"Principal": "*"
},
{
"Sid": "Stmt1464968543787",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<bucket>/*.png",
"Principal": "*"
}
]
}

但这不起作用,因为它允许其他文件类型的文件上传(例如:pdf等)。请协助解决我的用例。谢谢!

您可以将Deny与NotResource:

组合使用
{
"Version": "2012-10-17",
"Id": "Policy1464968545158",
"Statement": [
{
"Sid": "Stmt1464968483619",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"NotResource": [
"arn:aws:s3:::<bucket>/*.jpg",
"arn:aws:s3:::<bucket>/*.png"
]
}
]
}

您的策略只检查文件的扩展名,而不检查实际上传的文件是jpeg还是png,并且不考虑它们的变体,例如JPG、png、jpeg等等。扩展名可能不准确。

作为一个旁注,这是一个不好的做法,允许匿名上传到您的桶。如果你有其他的可能性,最好先考虑一下。

最新更新