Linee guida per le policy di accesso - Amazon Simple Storage Service

Linee guida per le policy di accesso

Amazon S3 supporta le policy basate su risorse e le policy utente per gestire l'accesso alle risorse Amazon S3. Per ulteriori informazioni, consulta Gestione dell'accesso alle risorse. Nelle policy basate su risorse sono comprese le policy di bucket nonché le liste di controllo accessi (ACL) del bucket e dell'oggetto. In questa sezione vengono descritti alcuni scenari specifici per l'utilizzo di policy di accesso basate su risorse al fine di gestire l'accesso alle risorse di Amazon S3.

Quando utilizzare una policy d'accesso basata su liste di controllo accessi (ACL) (per bucket e oggetti)

I bucket e gli oggetti dispongono di ACL associate che è possibile utilizzare per concedere autorizzazioni.

Per impostazione predefinita, quando un altro Account AWS carica un oggetto nel bucket S3, tale account (l'object writer) possiede l'oggetto, ne ha accesso e può concedere ad altri utenti l'accesso tramite ACL. È possibile utilizzare Object Ownership per modificare questo comportamento di default in modo che le ACL siano disabilitate e che tu, in qualità di proprietario del bucket, possieda automaticamente ogni oggetto nel tuo bucket. Di conseguenza, il controllo degli accessi per i tuoi dati è basato su policy, come policy IAM, policy bucket S3, policy endpoint del cloud privato virtuale (VPC) e policy di controllo dei servizi (SCP) di AWS Organizations.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di ACL ed è consigliabile disabilitarle tranne in circostanze straordinarie in cui è necessario controllare l'accesso individualmente per ciascun oggetto. Con Object Ownership, è possibile disabilitare le ACL e fare affidamento sulle policy per il controllo degli accessi. Quando si disabilitano le ACL, è possibile mantenere facilmente un bucket con oggetti caricati da diversi Account AWS. In qualità di proprietario del bucket, possiedi tutti gli oggetti nel bucket e puoi gestirne l'accesso utilizzando le policy. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

Importante

Se il bucket utilizza l'impostazione proprietario del bucket applicato per S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

Quando utilizzare un'ACL a livello di oggetto

Di seguito sono riportati gli scenari di utilizzo delle ACL per gestire le autorizzazioni dell'oggetto.

Gli oggetti non appartengono al proprietario del bucket

Un'ACL di oggetto è l'unico modo per gestire l'accesso agli oggetti che non appartengono al proprietario del bucket. Un Account AWS proprietario di un bucket può assegnare a un altro Account AWS l'autorizzazione a caricare oggetti. che però non appartengono al proprietario del bucket. L'Account AWS che ha creato l'oggetto deve assegnare le autorizzazioni tramite le ACL dell'oggetto.

Nota

Il proprietario di un bucket non può concedere autorizzazioni per gli oggetti che non sono di sua proprietà. Ad esempio, una policy di bucket che assegna autorizzazioni a livello di oggetto si applica solo agli oggetti appartenenti al proprietario del bucket. Tuttavia, il proprietario del bucket, che paga la fattura, può scrivere una policy di bucket per rifiutare l'accesso agli oggetti nel bucket, indipendentemente dall'utente a cui appartengono. Il proprietario del bucket può anche eliminare gli oggetti nel bucket.

È necessario gestire le autorizzazioni a livello di oggetto

Si supponga che le autorizzazioni varino in base all'oggetto e che sia necessario gestire le autorizzazioni a livello di oggetto. Puoi scrivere una singola istruzione della policy per concedere a un Account AWS l'autorizzazione di lettura su milioni di oggetti con un prefisso di nome di chiave specifico. Ad esempio, è possibile assegnare l'autorizzazione di lettura agli oggetti che hanno logs come prefisso del nome della chiave. Tuttavia, se le autorizzazioni di accesso variano in base all'oggetto, potrebbe non essere pratico assegnarle a singoli oggetti tramite policy di bucket. Inoltre, le dimensioni delle policy del bucket sono limitate a 20 KB.

In questo caso, utilizzare un'ACL di oggetto può rivelarsi una buona alternativa. È tuttavia necessario ricordare che anche le ACL di oggetto sono limitate a massimo 100 assegnazioni. Per ulteriori informazioni, consulta Panoramica delle liste di controllo accessi (ACL).

Le ACL di oggetto controllano le autorizzazioni solo a livello di oggetto

Per l'intero bucket è presente una singola policy di bucket, ma le ACL degli oggetti sono specificate per oggetto.

Un Account AWS proprietario di un bucket può assegnare a un altro Account AWS l'autorizzazione per la gestione della policy d'accesso. Fare ciò consentirà a tale account di modificare ogni elemento della policy. Per gestire meglio le autorizzazioni, si può scegliere di non attribuire un'autorizzazione così ampia, ma concedere all'altro account solo le autorizzazioni per operazioni di READ-ACP e WRITE-ACP su un sottoinsieme di oggetti. In questo modo, l'account può gestire le autorizzazioni solo su oggetti specifici aggiornando le singole ACL dell'oggetto.

Se si desidera utilizzare le ACL per gestire le autorizzazioni a livello di oggetto e si desidera anche possedere nuovi oggetti scritti nel bucket, è possibile applicare l'impostazione del proprietario del bucket preferito per Object Ownership. Un bucket con l'impostazione del proprietario del bucket preferito continua ad accettare e rispettare le ACL di bucket e oggetti. Con questa impostazione, nuovi oggetti scritti con l'ACL predefinita bucket-owner-full-control sarà automaticamente di proprietà del proprietario del bucket anziché dell'object writer. Tutti gli altri comportamenti ACL rimangono in vigore. Per richiedere a tutte le operazioni PUT di Amazon S3 di includere l'ACL predefinita bucket-owner-full-control, puoi aggiungere una policy del bucket che consenta solo il caricamento di oggetti utilizzando questo ACL.

Alternative all'uso di ACL

Oltre a un'ACL a livello di oggetto, il proprietario dell'oggetto ha diverse opzioni per gestirne le autorizzazioni:

  • Se l'Account AWS proprietario dell'oggetto è anche proprietario del bucket, può scrivere una policy di bucket per la gestione delle autorizzazioni dell'oggetto.

  • Se l'Account AWS proprietario dell'oggetto intende assegnare a un utente nel suo account un'autorizzazione, può utilizzare una policy utente.

  • Se, in qualità di proprietario del bucket, si desidera possedere automaticamente e avere il pieno controllo su ogni oggetto nel bucket, è possibile eseguire l'impostazione proprietario del bucket applicato per Object Ownership per disabilitare le ACL. Di conseguenza, il controllo degli accessi per i dati è basato su policy. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

Quando utilizzare un'ACL a livello di bucket

L'unico caso d'uso consigliato per le ACL del bucket è per concedere autorizzazioni a determinati Servizi AWS come l'account awslogsdelivery di Amazon CloudFront. Quando si crea o si aggiorna una distribuzione e si abilita la registrazione a CloudFront, quest'ultimo aggiornerà l'ACL del bucket per concedere all'account awslogsdelivery le autorizzazioni in modalità FULL_CONTROL per scrivere log sul bucket. Per ulteriori informazioni, consulta Autorizzazioni richieste per configurare la registrazione standard e per accedere ai file di log nella Guida per sviluppatori di Amazon CloudFront. Se il bucket che archivia i registri utilizza l'impostazione proprietario del bucket applicato per S3 Object Ownership per disabilitare le ACL, CloudFront non potrà scrivere i registri nel bucket. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

Quando utilizzare una policy di bucket

Se un Account AWS proprietario di un bucket intende assegnare agli utenti nel suo account un'autorizzazione, può utilizzare una policy di bucket o una policy utente. Negli scenari seguenti, è necessario utilizzare una policy di bucket.

Vuoi gestire le autorizzazioni multiaccount per tutte le autorizzazioni Amazon S3

È possibile utilizzare ACL per concedere autorizzazioni multiaccount ad altri account. Tuttavia, le ACL supportano solo un set finito di autorizzazioni e non includono tutte le autorizzazioni di Amazon S3. Per ulteriori informazioni, consulta Quali autorizzazioni è possibile concedere? Ad esempio, non è possibile concedere autorizzazioni per le risorse secondarie del bucket. Per ulteriori informazioni, consulta Identity and Access Management in Amazon S3.

Sia le policy di bucket sia quelle utente supportano la concessione dell'autorizzazione per tutte le operazioni di Amazon S3. Per ulteriori informazioni, consult Operazioni di Amazon S3.) Tuttavia, le policy utente servono a gestire le autorizzazioni per gli utenti dell'account. Per assegnare autorizzazioni multiaccount ad altri Account AWS o a utenti in un altro account, è necessario utilizzare una policy di bucket.

Quando utilizzare una policy utente

In linea generale, per gestire le autorizzazioni è possibile utilizzare una policy utente o una policy di bucket. È possibile scegliere di gestire le autorizzazioni creando utenti e gestendo le autorizzazioni singolarmente collegando le policy agli utenti (o a gruppi di utenti). In alternativa, è possibile che le policy basate sulle risorse, ad esempio una policy di bucket, funzionino meglio per lo scenario.

Con AWS Identity and Access Management (IAM) puoi creare più utenti all'interno del tuo Account AWS e gestire le rispettive autorizzazioni tramite le policy utente. Un utente IAM deve essere autorizzato dall'account parent al quale appartiene e dall'Account AWS proprietario della risorsa a cui l'utente desidera accedere. Tali autorizzazioni possono essere assegnare nel modo seguente:

  • Autorizzazione dall'account padre – L'account padre può concedere le autorizzazioni all'utente collegando una policy utente.

  • Autorizzazione dal proprietario della risorsa – Il proprietario della risorsa può concedere l'autorizzazione all'utente IAM (tramite una policy del bucket) o all'account padre (tramite una policy del bucket, una lista ACL del bucket o una lista ACL dell'oggetto).

È come quando un bambino vuole prendere il gioco di qualcun altro. Per poterlo fare, il bambino deve ricevere il permesso sia dal genitore sia dal proprietario del gioco.

Per ulteriori informazioni, consulta Policy di bucket e policy utente.

Delega delle autorizzazioni

Se un Account AWS è proprietario di una risorsa, può assegnare queste autorizzazioni a un altro Account AWS. Tale account a sua volta può delegare le autorizzazioni, o una parte di esse, agli utenti al suo interno. Questa operazione si definisce delega delle autorizzazioni. Tuttavia, un account che riceve le autorizzazioni da un altro account non può delegarle a un terzo Account AWS.

È consigliabile prima di tutto esaminare tutti gli argomenti introduttivi che spiegano come gestire l'accesso alle risorse di Amazon S3 e le linee guida correlate. 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.