AWS 上传存储桶策略:限制文件类型

AWS 上传存储桶策略:限制文件类型

我正在使用 PHP 对象上传到 S3。我想只接受 PDF 文件并拒绝其他扩展名的文件。

因此我写了这个存储桶策略:

{
"Version": "2012-10-17",
"Id": "Policy1464968545158",
"Statement": [
    {
        "Sid": "Stmt1464968483619",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::MYBUCKET/*.pdf"
    }
]
}

但它不起作用,我的存储桶仍然接受具有任何扩展名的文件。

我做错了什么 ?

谢谢

答案1

您的策略允许在匹配的文件上使用 putObject *.pdf。但是,它不会对 putObject 施加任何限制。如果您通过其他方式获得该权限,您仍然可以上传其他文件。例如,AWS 托管策略arn:aws:iam::aws:policy/AmazonS3FullAccess当前如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

如果您将其附加到您的 AWS IAM 用户或 IAM 角色,您将能够将所有对象放入具有该策略的存储桶中。

元素NotResource可能在这里有用,请参阅这里一个有效的政策可能看起来像这样:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:putObject",
    "NotResource": [
      "arn:aws:s3:::MYBUCKET/*.pdf"
    ]
  }
}

如果不满足条件,则将拒绝任何人的 putObjects *.pdf

相关内容