Panoramica sulla gestione degli accessi - Amazon Simple Storage Service

Questa guida non viene più aggiornata. Per informazioni e istruzioni aggiornate, consultare la nuova GuidaAmazon S3 dell'utente.

Panoramica sulla gestione degli accessi

Quando si concedono le autorizzazioni, è necessario stabilire chi le riceverà e per quali risorse di Amazon S3, nonché le operazioni specifiche da permettere su tali risorse.

Risorse di Amazon S3: bucket e oggetti

In Amazon Web Services (AWS) una risorsa è un'entità con cui è possibile lavorare. In Amazon S3 le risorse sono costituite da bucket e oggetti e a entrambi sono associate risorse secondarie. Ad esempio, risorse secondarie dei bucket includono:

Le risorse secondarie degli oggetti includono:

  • acl – Archivia un elenco delle autorizzazioni di accesso per l'oggetto. Questo argomento spiega come utilizzare le risorse secondarie per gestire le autorizzazioni dell'oggetto (consulta Gestione degli accessi con le ACL).

  • restore – Supporta il ripristino temporaneo di un oggetto archiviato (consulta RestoreObject). Un oggetto nella classe di storage S3 Glacier è un oggetto archiviato. Per accedere all'oggetto, è necessario prima avviare una richiesta di ripristino che ripristina una copia dell'oggetto archiviato. Nella richiesta, occorre specificare per quanti giorni la copia ripristinata dovrà essere disponibile. Per ulteriori informazioni sull'archiviazione degli oggetti, consulta Gestione del ciclo di vita degli oggetti.

Proprietà di bucket e oggetti di Amazon S3

I bucket e gli oggetti sono risorse di Amazon S3. Per impostazione predefinita, solo il proprietario della risorsa è in grado di accedervi. Il proprietario della risorsa fa riferimento all'account AWS che crea la risorsa. Ad esempio:

  • L'account AWS utilizzato per creare i bucket e caricare gli oggetti è il proprietario di tali risorse.

  • Se carichi un oggetto utilizzando le credenziali di ruolo o utente di AWS Identity and Access Management (IAM), l'account AWS a cui appartiene il ruolo o l'utente è proprietario dell'oggetto.

  • Un proprietario del bucket può concedere a un altro account AWS (o agli utenti di un altro account) autorizzazioni multiaccount per caricare gli oggetti. In questo caso, gli oggetti appartengono all'account AWS che li carica. Il proprietario del bucket non dispone di autorizzazioni sugli oggetti di proprietà di un altro account, ad eccezione dei casi seguenti:

    • È il proprietario del bucket a pagare la fattura. Il proprietario del bucket può rifiutare l'accesso agli oggetti nel bucket o eliminarli, indipendentemente dall'utente a cui appartengono.

    • Il proprietario del bucket può archiviare gli oggetti nel bucket o ripristinarli, indipendentemente dall'utente a cui appartengono. L'archiviazione fa riferimento alla classe di storage utilizzata per archiviare gli oggetti. Per ulteriori informazioni, consulta Gestione del ciclo di vita degli oggetti.

Proprietà e autenticazione delle richieste

Tutte le richieste a un bucket possono essere autenticate o non autenticate. Le richieste autenticate devono includere un valore di firma che autentichi il mittente della richiesta, mentre non è necessario per le richieste non autenticate. Per ulteriori informazioni sull'autenticazione delle richieste, consulta Esecuzione di richieste.

Un proprietario di bucket può consentire richieste non autenticate. Le richieste PutObject non autenticate, ad esempio, sono permesse quando un bucket ha una policy del bucket pubblica o quando una lista ACL del bucket concede l'accesso di tipo WRITE o FULL_CONTROL al gruppo All Users o all'utente anonimo in modo specifico. Per ulteriori informazioni sulle policy dei bucket pubbliche e sulle liste ACL pubbliche, consulta Significato di "pubblico".

Tutte le richieste non autenticate sono fatte dall'utente anonimo. Questo utente viene rappresentato dall'ID utente canonico specifico 65a011a29cdf8ec533ec3d1ccaae921c nelle liste di controllo accessi (ACL). Se un oggetto viene caricato in un bucket tramite una richiesta non autenticata, la proprietà dell'oggetto è dell'utente anonimo. L'ACL predefinita dell'oggetto garantisce FULL_CONTROL all'utente anonimo in quanto proprietario dell'oggetto. Perciò, Amazon S3 consente alle richieste non autenticate di recuperare l'oggetto o di modificarne l'ACL.

Per impedire all'utente anonimo di modificare oggetti, raccomandiamo di non implementare policy di bucket che consentono scritture pubbliche anonime sul bucket e di non utilizzare delle ACL che concedono all'utente anonimo accesso di scrittura al bucket. Puoi applicare questo comportamento consigliato utilizzando il blocco dell'accesso pubblico di Amazon S3.

Per ulteriori informazioni sul blocco dell'accesso pubblico, consulta Utilizzo del blocco dell'accesso pubblico di Amazon S3. Per ulteriori informazioni sulle ACL, consulta Panoramica delle liste di controllo accessi (ACL).

Importante

AWS consiglia di non utilizzare le credenziali dell'utente root dell'account AWS per effettuare richieste autenticate. Crea invece un utente IAM, concedendogli accesso completo. Questi utenti vengono definiti utenti amministratori. È possibile utilizzare le credenziali dell'utente amministratore, anziché quelle dell'utente root dell'account AWS, per interagire con AWS ed eseguire attività come creare un bucket, creare utenti e concedere loro autorizzazioni. Per ulteriori informazioni, consulta Credenziali Utente root dell'account AWS e credenziali utente IAM in Riferimenti generali AWS e Best practice IAM nella Guida per l'utente di IAM.

Operazioni sulle risorse

Amazon S3 fornisce un set di operazioni da utilizzare con le relative risorse. Per un elenco di operazioni disponibili, consulta Operazioni definite da Amazon S3.

Gestione dell'accesso alle risorse

Gestire un accesso significa conceder a terzi (utenti e account AWS) l'autorizzazione a effettuare operazioni sulle risorse scrivendo una policy di accesso. Ad esempio, è possibile concedere l'autorizzazione PUT Object a un utente nell'account AWS per consentirgli di caricare oggetti nel bucket di cui si è proprietari. Oltre a concedere autorizzazioni a singoli utenti e account, è possibile concedere autorizzazioni a qualsiasi utente (accesso anonimo) o a tutti gli utenti autenticati (utenti con credenziali AWS). Ad esempio, se si configura un bucket come un sito Web, è possibile rendere tutti gli oggetti pubblicamente accessibili concedendo l'autorizzazione GET Object a qualsiasi utente.

Opzioni delle policy di accesso

La policy di accesso descrive chi può accedere e a quali risorse. È possibile associare una policy di accesso a una risorsa (bucket e oggetto) oppure a un utente. Di conseguenza, è possibile categorizzare le policy di accesso di Amazon S3 disponibili come indicato di seguito:

  • Policy basate su risorse – Le policy dei bucket e le liste di controllo accessi (ACL) sono basate sulle risorse perché vengono collegate alle risorse di Amazon S3.

    
						Diagramma che illustra le risorse dell'account AWS, incluso un bucket S3 con un'ACL del bucket e una policy di bucket e oggetti di S3 con le ACL per l'oggetto.
    • ACL – A ogni bucket e oggetto è associata una ACL. Un'ACL è un elenco delle assegnazioni che identificano l'assegnatario e l'autorizzazione concessa. Le ACL vengono utilizzate per concedere autorizzazioni base di lettura/scrittura ad altri account AWS. Le liste ACL utilizzano uno schema XML specifico di Amazon S3.

      Di seguito è riportato un esempio di ACL del bucket. L'autorizzazione nell'ACL indica un proprietario del bucket con autorizzazione al controllo completo.

      <?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

      ACL del bucket e dell'oggetto utilizzano lo stesso schema XML.

    • Policy del bucket – È possibile aggiungere una policy al bucket per concedere ad altri account AWS o utenti IAM le autorizzazioni per il bucket e gli oggetti in esso contenuti. Le autorizzazioni relative a un oggetto si applicano solo agli oggetti creati dal proprietario del bucket. Le policy di bucket fungono da supporto alle policy di accesso basate su ACL e in molti casi le sostituiscono.

      Di seguito è riportato un esempio di policy di bucket. La policy di bucket e la policy utente si esprimono con un file JSON. La policy concede autorizzazioni di lettura anonima su tutti gli oggetti di un bucket. La policy di bucket dispone di una dichiarazione che consente l'operazione s3:GetObject (autorizzazione di lettura) sugli oggetti di un bucket nominato examplebucket.  Specificando il principal con un carattere jolly (*), la policy concede l'accesso anonimo e deve essere usata con cautela. La policy del bucket seguente, ad esempio, rende gli oggetti accessibili pubblicamente.

      { "Version":"2012-10-17", "Statement": [ { "Sid":"GrantAnonymousReadPermissions", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
  • Policy utente – È possibile utilizzare IAM per gestire l'accesso alle risorse di Amazon S3. È possibile creare utenti, gruppi e ruoli IAM nell'account e collegarvi policy di accesso per permettere loro l'accesso alle risorse AWS, tra cui Amazon S3.

    
						Diagramma che illustra l'amministratore dell'account AWS e altri utenti account con policy utente collegate.

    Per ulteriori informazioni su IAM, consulta la pagina dei dettagli del prodotto AWS Identity and Access Management (IAM).

    Di seguito è illustrato un esempio di policy utente. Non è possibile concedere autorizzazioni anonime in una policy utente IAM in quanto la policy è collegata all'utente. La policy di esempio permette all'utente associato collegato di eseguire sei diverse operazioni di Amazon S3 su un bucket e sugli oggetti in esso contenuti. La policy può essere collegata a un utente, gruppo o ruolo IAM specifico.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssignUserActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*", "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "ExampleStatement2", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }

Quando Amazon S3 riceve una richiesta, deve valutare tutte le policy di accesso per determinare se autorizzarla o rifiutarla. Per ulteriori informazioni su come Amazon S3 valuta le policy, consulta In che modo Amazon S3 autorizza una richiesta.

Access Analyzer per S3

Nella console Amazon S3 è possibile utilizzare Access Analyzer per S3 per esaminare tutti i bucket che dispongono di liste di controllo accessi (ACL) del bucket, policy del bucket o policy dell'access point che concedono l'accesso pubblico o condiviso. Access Analyzer per S3 invia avvisi sui bucket configurati per permettere l'accesso a chiunque su Internet o ad altri account AWS, inclusi gli account AWS esterni all'organizzazione. Per ogni bucket pubblico o condiviso, vengono visualizzati risultati che riportano l'origine e il livello di accesso pubblico o condiviso.

In Access Analyzer per S3 è possibile bloccare tutti gli accessi pubblici a un bucket con un solo clic. Ti consigliamo di bloccare tutti gli accessi ai bucket, a meno che non sia necessario l'accesso pubblico per supportare un caso d'uso specifico. Prima di bloccare tutti gli accessi pubblici, assicurati che le applicazioni continuino a funzionare correttamente senza accesso pubblico. Per ulteriori informazioni, consulta Utilizzo del blocco dell'accesso pubblico di Amazon S3.

Inoltre, puoi eseguire il drill-down nelle impostazioni relative alle autorizzazioni a livello di bucket per configurare i livelli di accesso granulari. Per casi d'uso specifici e verificati che richiedono l'accesso pubblico o condiviso, puoi confermare e registrare l'intenzione del bucket di rimanere pubblico o condiviso archiviando i risultati per il bucket. Puoi consultare e modificare le configurazioni relative al bucket in qualsiasi momento. Inoltre, puoi scaricare i risultati come report CSV per scopi di audit.

Access Analyzer per S3 è disponibile senza costi aggiuntivi nella console Amazon S3. Access Analyzer per S3 si basa su AWS Identity and Access Management (IAM) Access Analyzer. Per utilizzare Access Analyzer per S3 nella console Amazon S3, visita la console IAM e crea un analizzatore a livello di account in IAM Access Analyzer per ogni regione.

Per ulteriori informazioni su Access Analyzer per S3, consulta l'articolo relativo all'utilizzo di Access Analyzer per S3 nella Guida per l'utente della console di Amazon Simple Storage Service.

Quale metodo di controllo degli accessi utilizzare?

In merito alle opzioni disponibili per scrivere una policy di accesso, sorgono le seguenti domande:

  • Quando utilizzare un determinato metodo di controllo degli accessi? Ad esempio, per concedere autorizzazioni per il bucket, è consigliabile utilizzare una policy di bucket o un'ACL del bucket? Quando si è proprietari di un bucket e degli oggetti nel bucket, è consigliabile utilizzare una policy di accesso basata su risorse o una policy utente IAM? Se si utilizza una policy di accesso basata su risorse, è consigliabile usare una policy di bucket o un'ACL dell'oggetto per gestire le autorizzazioni dell'oggetto?

  • Quando si è proprietari di un bucket ma non degli oggetti in esso contenuti, in che modo vengono gestite le autorizzazioni di accesso per gli oggetti di proprietà di terzi?

  • Se si concede l'accesso utilizzando una combinazione delle opzioni delle policy di accesso, in che modo Amazon S3 determina se un utente dispone dell'autorizzazione per eseguire un'operazione richiesta?

Nelle sezioni seguenti sono disponibili informazioni sulle diverse alternative di controllo degli accessi, su come Amazon S3 valuta i meccanismi di controllo degli accessi e su quando utilizzare i diversi metodi di controllo degli accessi. Forniscono inoltre procedure guidate di esempio.

È consigliabile prima di tutto esaminare gli argomenti introduttivi in cui vengono spiegate le opzioni disponibili per gestire l'accesso alle risorse di Amazon S3. Per ulteriori informazioni, consulta Identity and Access Management in Amazon S3. Per ulteriori informazioni sulle opzioni specifiche per le policy d'accesso, consulta gli argomenti indicati di seguito.