Política de Bucket de Upload da AWS: restringir o tipo de arquivo

1

Eu estou carregando o PHP com objetos PHP para o S3. Gostaria de aceitar apenas arquivos PDF e recusar arquivos com outras extensões.

Então, escrevi esta política de buckets:

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

Mas não está funcionando, meu bucket ainda aceita arquivos com extensões.

O que eu fiz de errado?

Obrigado

    
por Chuck 26.06.2018 / 11:24

1 resposta

0

Sua política permite putObject em arquivos correspondentes a *.pdf . No entanto, ele não coloca nenhuma restrição no putObject. Se você obtivesse essas permissões por outros meios, ainda poderia fazer upload de outros arquivos. Por exemplo. a política gerenciada da AWS arn:aws:iam::aws:policy/AmazonS3FullAccess atualmente é assim:

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

Se você anexar isso ao usuário do IAM da AWS ou à função do IAM, poderá colocar todos os objetos em um intervalo com essa política.

O elemento NotResource pode ser útil aqui, consulte aqui . Uma política de trabalho pode ser assim:

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

Isso negaria putObjects para qualquer um, se eles não fizerem *.pdf .

    
por 26.06.2018 / 11:58