Назад | Перейти на главную страницу

Политика AWS Upload Bucket: ограничение типа файла

Загрузка I4m с объектами PHP в S3. Я хочу принимать только файлы PDF и отказываться от файлов с другими расширениями.

Итак, я написал эту политику ведра:

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

Но это не работает, моя корзина по-прежнему принимает файлы с любыми расширениями.

Что я сделал не так ?

Спасибо

Ваша политика позволяет помещать объект в файлы, соответствующие *.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.