如何允许用户仅将某些文件类型上传到我的 Amazon S3 桶?

1 分钟阅读
0

我只想在 Amazon Simple Storage Service(Amazon S3)桶中存储某些文件类型。我想限制上传,以便我的桶只接受这些文件类型。

解决方法

在桶策略中添加允许或拒绝以下操作的语句:

  • 仅针对具有所需文件类型扩展名的对象允许 s3:PutObject 操作。
  • 针对没有所需文件类型扩展名的对象显式拒绝 s3:PutObject 操作。
    注意:此显式拒绝语句将文件类型要求应用于可完全访问 Amazon S3 资源的用户。

例如,此桶策略仅允许针对文件扩展名为 .jpg.png.gif 的对象对 exampleuser 执行 s3:PutObject 操作:

**警告:**此示例桶策略包括显式拒绝语句。如果用户不满足指定条件,那么即使是设置桶策略的用户也可能被拒绝访问桶。因此,在保存桶策略之前,请仔细阅读。如果您意外锁定了桶,请参阅我意外拒绝了所有人对我的 Amazon S3 桶的访问。如何重新获得访问权限?

{
  "Version": "2012-10-17",
  "Id": "Policy1464968545158",
  "Statement": [
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/exampleuser"
      },
      "Action": "s3:PutObject",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    },
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "NotResource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    }
  ]
}

注意:

  • 对于第一个 Principal 值,请列出您要向其授予上传权限的用户的 Amazon 资源名称(ARN)。
  • 对于 ResourceNotResource 值,请将 DOC-EXAMPLE-BUCKET 替换为桶的名称。
  • 当您在桶策略中指定资源时,桶策略评估区分大小写。拒绝 NotResource arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg 的 s3:PutObject 操作的桶策略允许您上传 my_image.jpg.。但是,如果你尝试上传 my_image.JPG,则 Amazon S3 会返回访问被拒绝错误。
AWS 官方
AWS 官方已更新 8 个月前