Salta al contenuto

Come posso consentire agli utenti di caricare solo determinati tipi di file nel mio bucket Amazon S3?

3 minuti di lettura
0

Desidero archiviare solo determinati tipi di file nel mio bucket Amazon Simple Storage Service (Amazon S3). Desidero limitare i caricamenti in modo che il mio bucket accetti solo quei tipi di file.

Risoluzione

Puoi limitare i caricamenti di file a tipi di file specifici con una policy di bucket che utilizza una combinazione di istruzioni Allow e Deny. Questo approccio utilizza una corrispondenza del modello sulla chiave dell'oggetto per applicare i requisiti di estensione del file.

Nota: il metodo filtra in base alle estensioni dei file nella chiave dell'oggetto, non al contenuto effettivo del file o al tipo MIME (Multipurpose Internet Mail Extensions). Gli utenti possono bypassare questa restrizione rinominando i file. Per la convalida basata sui contenuti, valuta la possibilità di applicare ulteriori controlli a livello di applicazione.

Utilizza nella policy di bucket i seguenti due tipi di istruzione:

  • Le istruzioni Allow consentono le azioni s3:PutObject solo per gli oggetti che corrispondono ai tipi di file approvati.

  • Le istruzioni Deny negano le azioni s3:PutObject per oggetti che non corrispondono ai tipi di file approvati.

    Nota: l'istruzione di diniego esplicita impedisce il caricamento di tipi di file non autorizzati anche da utenti con autorizzazioni per S3 ampie, come l'accesso amministratore.

Ad esempio, questa policy di bucket consente l'azione PutObject a exampleuser solo per oggetti con estensioni di file .jpg, .png o .gif:

{
  "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"
      ]
    }
  ]
}

Nota: sostituisci DOC-EXAMPLE-BUCKET con il nome del tuo bucket.

Per il primo valore Principale, elenca i nomi della risorsa Amazon (ARN) degli utenti a cui desideri concedere le autorizzazioni di caricamento.

Nota: quando specifichi le risorse nella policy di bucket, la valutazione della policy di bucket fa distinzione tra maiuscole e minuscole. Una policy di bucket che nega le azioni s3:PutObject per NotResource arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg ti consente di caricare mia_immagine.jpg. Tuttavia, se provi a caricare mia_immagine.JPG, Amazon S3 restituisce un errore Access Denied. Per supportare entrambi i casi, includi le estensioni *.jpg e *.JPG nella policy.

Questo esempio di policy di bucket include un'istruzione di diniego esplicita. Se un utente non soddisfa le condizioni, anche l'utente che imposta la policy di bucket può perdere l'accesso al bucket. Pertanto, rivedi attentamente la policy di bucket prima di salvarla. Se blocchi accidentalmente il bucket, consulta Come posso riottenere l'accesso al mio bucket Amazon S3 dopo aver negato accidentalmente l'accesso a tutti?

Per proteggere un bucket Amazon S3 in base a criteri diversi dal tipo di file, utilizza Protezione da malware Amazon GuardDuty per S3 o Amazon Macie. Il motore di scansione di Protezione da malware Amazon GuardDuty verifica la presenza di malware in tutti i file caricati. Amazon Macie riporta i risultati sui dati sensibili nei formati di file supportati che hai caricato in S3. Utilizza i criteri integrati o identificatori di dati personalizzati.