Configurazione ACLs - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione ACLs

Questa sezione spiega come gestire le autorizzazioni di accesso per i bucket e gli oggetti S3 utilizzando gli elenchi di controllo degli accessi (). ACLs Puoi aggiungere sovvenzioni alla tua risorsa ACL utilizzando AWS Management Console, AWS Command Line Interface (CLI), o. REST API AWS SDKs

Le autorizzazioni per il bucket e gli oggetti sono indipendenti l'una dall'altra. Un oggetto non eredita le autorizzazioni dal bucket a cui appartiene. Se ad esempio si crea un bucket e si concede l'accesso in scrittura a un utente, non sarà possibile accedere agli oggetti di tale utente a meno che questi non conceda esplicitamente l'accesso.

Puoi concedere autorizzazioni ad altri Account AWS utenti o a gruppi predefiniti. L'utente o il gruppo a cui si concedono le autorizzazioni è denominato assegnatario. Per impostazione predefinita, il proprietario, che è colui Account AWS che ha creato il bucket, dispone delle autorizzazioni complete.

Ogni autorizzazione concessa a un utente o a un gruppo aggiunge una voce associata al bucket. ACL Gli ACL elenchi delle concessioni, che identificano il beneficiario e l'autorizzazione concessa.

S3 Object Ownership è un'impostazione a livello di bucket di Amazon S3 che puoi utilizzare sia per controllare la proprietà degli oggetti caricati nel tuo bucket sia per disabilitarli o abilitarli. ACLs Per impostazione predefinita, Object Ownership è impostata sull'impostazione imposta dal proprietario del Bucket e tutti sono disabilitati. ACLs Quando ACLs sono disabilitati, il proprietario del bucket possiede tutti gli oggetti nel bucket e ne gestisce l'accesso esclusivamente utilizzando le politiche di gestione degli accessi.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di. ACLs Ti consigliamo di rimanere ACLs disabilitato, tranne in circostanze insolite in cui devi controllare l'accesso per ogni oggetto singolarmente. ACLsDisabilitando, puoi utilizzare le policy per controllare l'accesso a tutti gli oggetti nel tuo bucket, indipendentemente da chi ha caricato gli oggetti nel tuo bucket. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disattivazione ACLs del bucket.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario del Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice di errore. AccessControlListNotSupported Le richieste di lettura ACLs sono ancora supportate.

avvertimento

Si consiglia vivamente di evitare di concedere l'accesso in scrittura ai gruppi Everyone (accesso pubblico) o Authenticated Users (tutti gli utenti AWS autenticati). Per maggiori informazioni sugli effetti della concessione dell'accesso in scrittura a questi gruppi, consulta Gruppi predefiniti di Amazon S3.

La console visualizza le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo diACLs, usa Amazon S3 REST API AWS CLI, o. AWS SDKs

La tabella seguente mostra le ACL autorizzazioni che puoi configurare per i bucket nella console Amazon S3.

ACLAutorizzazioni della console Amazon S3 per i bucket
Autorizzazione console ACLautorizzazione Accesso
Oggetti – Elenco READ Consente all'assegnatario di elencare gli oggetti del bucket.
Oggetti - Scrittura WRITE Consente all'assegnatario di creare nuovi oggetti del bucket. Per i proprietari di bucket e oggetti di oggetti esistenti, consente anche di eliminare e sovrascrivere tali oggetti.
Bucket ACL - Leggi READ_ACP Consente al beneficiario di leggere il bucket. ACL
Bucket - Scrivi ACL WRITE_ACP Consente al beneficiario di scrivere il file ACL per il bucket applicabile.
Everyone (Tutti) (accesso pubblico): Oggetti - Elenco READ Concede l'accesso pubblico in lettura per gli oggetti nel bucket. Quando si concede l'accesso all'elenco a Everyone (Tutti) (accesso pubblico), chiunque al mondo può accedere agli oggetti nel bucket.
Tutti (accesso pubblico): Bucket - Read ACL READ_ACP Garantisce l'accesso pubblico alla lettura del bucket. ACL Quando concedi l'accesso in lettura a Everyone (accesso pubblico), chiunque nel mondo può accedere al bucket. ACL

Per ulteriori informazioni sulle ACL autorizzazioni, consulta. Panoramica della lista di controllo degli accessi (ACL)

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo di accesso (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il AccessControlListNotSupported codice di errore. Le richieste di lettura ACLs sono ancora supportate.

Per impostare ACL le autorizzazioni per un bucket
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nell'elenco Buckets (Bucket) scegliere il nome del bucket per cui impostare le autorizzazioni.

  3. Seleziona Autorizzazioni.

  4. In Lista di controllo degli accessi (ACL), seleziona Modifica.

    Puoi modificare le seguenti ACL autorizzazioni per il bucket:

    Oggetti
    • List: consente all'assegnatario di elencare gli oggetti nel bucket.

    • Scrittura – Consente all'assegnatario di creare nuovi oggetti nel bucket. Per i proprietari di bucket e oggetti di oggetti esistenti, consente anche di eliminare e sovrascrivere tali oggetti.

      Nella console S3, puoi concedere l'accesso in scrittura solo al gruppo di consegna dei log S3 e al proprietario del bucket (il tuo). Account AWS Ti consigliamo vivamente di non concedere l'accesso in scrittura ad altri utenti. Tuttavia, se devi concedere l'accesso in scrittura, puoi usare AWS CLI AWS SDKs, o il. REST API

    Secchio ACL
    • Leggi: consente al beneficiario di leggere il bucket. ACL

    • Scrittura: consente al beneficiario di scrivere il file per il ACL bucket applicabile.

  5. Per modificare le autorizzazioni del proprietario del bucket, oltre a Proprietario del bucket (tuo Account AWS), deseleziona o seleziona una delle seguenti autorizzazioni: ACL

    • OggettiElenco o scrittura

    • Bucket ACL : leggi o scrivi

    Il proprietario si riferisce a Utente root dell'account AWS, non a un AWS Identity and Access Management IAM utente. Per ulteriori informazioni sull'utente root, vedere The Utente root dell'account AWS in the IAM User Guide.

  6. Per concedere o annullare le autorizzazioni per il pubblico generale (tutti gli utenti di Internet), accanto a Tutti (accesso pubblico), deseleziona o seleziona una delle seguenti ACL autorizzazioni:

    • OggettiElenco

    • Bucket — Leggi ACL

    avvertimento

    Prestare attenzione nel concedere l'accesso pubblico al bucket S3 al gruppo Everyone (Tutti). Quando si concede l'accesso a questo gruppo, qualsiasi persona al mondo può accedere al bucket. Si consiglia di non concedere mai alcun tipo di accesso in scrittura pubblico al bucket S3.

  7. Per concedere o annullare le autorizzazioni a chiunque disponga di un gruppo Account AWS, oltre al gruppo Authenticated Users (chiunque disponga di un Account AWS), deseleziona o seleziona una delle seguenti autorizzazioni: ACL

    • OggettiElenco

    • ACLBucket — Leggi

  8. Per concedere o annullare le autorizzazioni ad Amazon S3 per scrivere i log di accesso al server nel bucket, nel gruppo di consegna dei log S3, deseleziona o seleziona una delle seguenti autorizzazioni: ACL

    • OggettiElenco o scrittura

    • Bucket: lettura o scrittura ACL

      Se un bucket è configurato come bucket target per la ricezione dei log di accesso, le autorizzazioni del bucket devono permettere al gruppo Log Delivery (Distribuzione log) l'accesso in scrittura al bucket. Quando si abilita la registrazione degli accessi al server in un bucket, la console di Amazon S3 concede l'accesso in scrittura al gruppo Log Delivery (Distribuzione log) per il bucket di destinazione scelto per la ricezione dei log. Per ulteriori informazioni sulla registrazione degli accessi al server, consulta Abilitazione della registrazione degli accessi al server Amazon S3.

  9. Per concedere l'accesso a un altro utente Account AWS, procedi come segue:

    1. Scegli Aggiungi assegnatario.

    2. Nella casella Assegnatario, inserisci l'ID canonico dell'altro Account AWS.

    3. Seleziona una delle seguenti ACL autorizzazioni:

      • OggettiElenco o scrittura

      • Bucket ACL: lettura o scrittura

    avvertimento

    Quando concedi ad altri Account AWS l'accesso alle tue risorse, tieni presente che Account AWS possono delegare le proprie autorizzazioni agli utenti tramite i rispettivi account. Questa operazione è nota con il nome di accesso multiaccount. Per informazioni sull'utilizzo dell'accesso su più account, consulta Creazione di un ruolo per delegare le autorizzazioni a un IAM utente nella Guida per l'utente. IAM

  10. Per rimuovere l'accesso a un altro utente Account AWS, in Accesso per altri Account AWS, scegli Rimuovi.

  11. Per salvare le modifiche, scegliere Save changes (Salva modifiche).

La console visualizza le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo diACLs, usa Amazon S3 REST API AWS CLI, o. AWS SDKs La tabella seguente mostra le ACL autorizzazioni che puoi configurare per gli oggetti nella console Amazon S3.

ACLAutorizzazioni della console Amazon S3 per gli oggetti
Autorizzazione console ACLautorizzazione Accesso
Oggetto - Lettura READ Consente all'assegnatario di leggere i dati dell'oggetto e i relativi metadati.
OggettoACL: leggi READ_ACP Consente al beneficiario di leggere l'oggetto. ACL
OggettoACL: scrittura WRITE_ACP Consente al beneficiario di scrivere ACL per l'oggetto applicabile

Per ulteriori informazioni sulle ACL autorizzazioni, vedere. Panoramica della lista di controllo degli accessi (ACL)

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo di accesso (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il AccessControlListNotSupported codice di errore. Le richieste di lettura ACLs sono ancora supportate.

Per impostare ACL le autorizzazioni per un oggetto
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nell'elenco Buckets (Bucket) scegliere il nome del bucket contenente l'oggetto.

  3. Nell'elenco Oggetti, scegli il nome dell'oggetto per il quale si desidera impostare le autorizzazioni.

  4. Seleziona Autorizzazioni.

  5. In Elenco di controllo degli accessi (ACL), scegli Modifica.

    È possibile modificare le seguenti ACL autorizzazioni per l'oggetto:

    Oggetto
    • Read: consente all'assegnatario di leggere i dati dell'oggetto e i relativi metadati.

    Oggetto ACL
    • Leggi: consente al beneficiario di leggere l'oggetto. ACL

    • Scrittura: consente al beneficiario di scrivere ACL per l'oggetto applicabile. Nella console S3, puoi concedere l'accesso in scrittura solo al proprietario del bucket (il tuo). Account AWS Ti consigliamo vivamente di non concedere l'accesso in scrittura ad altri utenti. Tuttavia, se devi concedere l'accesso in scrittura, puoi utilizzare il AWS CLI AWS SDKs, o il. REST API

  6. È possibile gestire le autorizzazioni di accesso all'oggetto per i seguenti tipi di accesso:

    1. Accesso per il proprietario dell'oggetto

      Il proprietario si riferisce al Utente root dell'account AWS e non a un AWS Identity and Access Management IAM utente. Per ulteriori informazioni sull'utente root, vedere The Utente root dell'account AWS in the IAM User Guide.

      Per modificare le autorizzazioni di accesso agli oggetti del proprietario, in Accesso per il proprietario dell'oggetto, scegli Il tuo AWS account (proprietario).

      Selezionare le caselle di controllo per le autorizzazioni da modificare, quindi selezionare Save (Salva).

    2. Accesso per altri Account AWS

      Per concedere le autorizzazioni a un AWS utente di un altro utente Account AWS, in Accesso per altri Account AWS, scegli Aggiungi account. Nel campo Inserisci un ID, inserisci l'ID canonico dell' AWS utente a cui desideri concedere le autorizzazioni relative all'oggetto. Per informazioni sulla ricerca di un ID canonico, consulta I tuoi identificatori nel. Account AWSRiferimenti generali di Amazon Web Services È possibile aggiungere fino a 99 utenti.

      Selezionare le caselle di controllo relative alle autorizzazioni da concedere all'utente, quindi selezionare Save (Salva). Per visualizzare informazioni sulle autorizzazioni, scegliere le icone della Guida in linea.

    3. Accesso pubblico

      Per concedere al pubblico (chiunque al mondo) l'accesso all'oggetto, in Public access (Accesso pubblico) scegliere Everyone (Tutti). La concessione delle autorizzazioni di accesso pubblico consente a chiunque di accedere all'oggetto.

      Selezionare le caselle di controllo per le autorizzazioni da concedere, quindi selezionare Save (Salva).

      avvertimento
      • Prestare attenzione quando si concede al gruppo Everyone (Tutti) l'accesso anonimo agli oggetti Amazon S3. Quando si concede l'accesso a questo gruppo, qualsiasi persona al mondo può accedere all'oggetto. Se è necessario concedere l'accesso a chiunque, è vivamente consigliato farlo solo per autorizzazioni di tipo Read objects (Leggi oggetti).

      • È vivamente sconsigliato autorizzare il gruppo Everyone (Tutti) alla scrittura dell'oggetto, In questo modo chiunque può sovrascrivere le ACL autorizzazioni per l'oggetto.

Questa sezione fornisce esempi di come configurare le concessioni di access control list (ACL) su bucket e oggetti.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice di errore. AccessControlListNotSupported Le richieste di lettura ACLs sono ancora supportate.

Java

Questa sezione fornisce esempi di come configurare le concessioni di access control list (ACL) su bucket e oggetti. Il primo esempio crea un bucket con un valore predefinito ACL (vediIn scatola ACL), crea un elenco di autorizzazioni personalizzate e quindi sostituisce il bucket predefinito con uno contenente le concessioni personalizzate. ACL ACL Il secondo esempio mostra come modificare un metodo. ACL AccessControlList.grantPermission()

Esempio Crea un bucket e specifica un bucket predefinito ACL che conceda l'autorizzazione al gruppo di consegna dei log S3

Questo esempio crea un bucket. Nella richiesta, l'esempio specifica un valore predefinito ACL che concede al gruppo Log Delivery l'autorizzazione a scrivere log nel bucket.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.ArrayList; public class CreateBucketWithACL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String userEmailForReadPermission = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Create a bucket with a canned ACL. This ACL will be replaced by the // setBucketAcl() // calls below. It is included here for demonstration purposes. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName()) .withCannedAcl(CannedAccessControlList.LogDeliveryWrite); s3Client.createBucket(createBucketRequest); // Create a collection of grants to add to the bucket. ArrayList<Grant> grantCollection = new ArrayList<Grant>(); // Grant the account owner full control. Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl); grantCollection.add(grant1); // Grant the LogDelivery group permission to write to the bucket. Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write); grantCollection.add(grant2); // Save grants by replacing all current ACL grants with the two we just created. AccessControlList bucketAcl = new AccessControlList(); bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0])); s3Client.setBucketAcl(bucketName, bucketAcl); // Retrieve the bucket's ACL, add another grant, and then save the new ACL. AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName); Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read); newBucketAcl.grantAllPermissions(grant3); s3Client.setBucketAcl(bucketName, newBucketAcl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Esempio Aggiornamento su un oggetto esistente ACL

Questo esempio aggiorna il ACL su un oggetto. L'esempio esegue le seguenti operazioni:

  • Recupera un oggetto ACL

  • Cancella il file ACL rimuovendo tutte le autorizzazioni esistenti

  • Aggiunge due autorizzazioni: accesso completo al proprietario e WRITE _ ACP (vediQuali autorizzazioni è possibile concedere?) a un utente identificato da un indirizzo e-mail

  • Salva il file ACL nell'oggetto

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.CanonicalGrantee; import com.amazonaws.services.s3.model.EmailAddressGrantee; import com.amazonaws.services.s3.model.Permission; import java.io.IOException; public class ModifyACLExistingObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; String emailGrantee = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get the existing object ACL that we want to modify. AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName); // Clear the existing list of grants. acl.getGrantsAsList().clear(); // Grant a sample set of permissions, using the existing ACL owner for Full // Control permissions. acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl); acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp); // Save the modified ACL back to the object. s3Client.setObjectAcl(bucketName, keyName, acl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET
Esempio Crea un bucket e specifica un bucket predefinito ACL che conceda l'autorizzazione al gruppo di consegna dei log S3

Questo esempio C# crea un bucket. Nella richiesta, il codice specifica anche un codice predefinito ACL che concede al gruppo Log Delivery le autorizzazioni per scrivere i log nel bucket.

Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta Getting Started with the for. AWS SDK NETnella AWS SDKforma. NETGuida per gli sviluppatori.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingBucketACLTest { private const string newBucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateBucketUseCannedACLAsync().Wait(); } private static async Task CreateBucketUseCannedACLAsync() { try { // Add bucket (specify canned ACL). PutBucketRequest putBucketRequest = new PutBucketRequest() { BucketName = newBucketName, BucketRegion = S3Region.EUW1, // S3Region.US, // Add canned ACL. CannedACL = S3CannedACL.LogDeliveryWrite }; PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest); // Retrieve bucket ACL. GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest { BucketName = newBucketName }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }
Esempio Aggiornamento ACL su un oggetto esistente

Questo esempio in C# aggiorna un oggetto esistente. ACL L'esempio esegue le seguenti operazioni:

  • Recupera quello di un oggetto. ACL

  • Cancella il file ACL rimuovendo tutte le autorizzazioni esistenti.

  • Aggiunge due autorizzazioni: accesso completo al proprietario e WRITE _ ACP a un utente identificato tramite indirizzo e-mail.

  • Salva il ACL inviando una PutAcl richiesta.

Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta Getting Started with the AWS SDK for. NETnella AWS SDKforma. NETGuida per gli sviluppatori.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingObjectACLTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key name ***"; private const string emailAddress = "*** email address ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); TestObjectACLTestAsync().Wait(); } private static async Task TestObjectACLTestAsync() { try { // Retrieve the ACL for the object. GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest { BucketName = bucketName, Key = keyName }); S3AccessControlList acl = aclResponse.AccessControlList; // Retrieve the owner (we use this to re-add permissions after we clear the ACL). Owner owner = acl.Owner; // Clear existing grants. acl.Grants.Clear(); // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions). S3Grant fullControlGrant = new S3Grant { Grantee = new S3Grantee { CanonicalUser = owner.Id }, Permission = S3Permission.FULL_CONTROL }; // Describe the grant for the permission using an email address. S3Grant grantUsingEmail = new S3Grant { Grantee = new S3Grantee { EmailAddress = emailAddress }, Permission = S3Permission.WRITE_ACP }; acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail }); // Set a new ACL. PutACLResponse response = await client.PutACLAsync(new PutACLRequest { BucketName = bucketName, Key = keyName, AccessControlList = acl }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

Amazon S3 ti APIs consente di impostare un ACL quando crei un bucket o un oggetto. Amazon S3 consente inoltre API di impostare un oggetto ACL o un bucket esistente. Questi APIs forniscono i seguenti metodi per impostare un: ACL

  • Imposta ACL utilizzando le intestazioni di richiesta: quando invii una richiesta per creare una risorsa (bucket o oggetto), ne imposti una ACL utilizzando le intestazioni della richiesta. Utilizzando queste intestazioni, è possibile specificare una concessione predefinita o specificare in modo esplicito (identificando in ACL modo esplicito il beneficiario e le autorizzazioni).

  • Imposta ACL utilizzando il corpo della richiesta: quando invii una richiesta per impostare una ACL risorsa esistente, puoi impostarla nell'intestazione ACL o nel corpo della richiesta.

Per informazioni sul REST API supporto per la gestioneACLs, consulta le seguenti sezioni in Amazon Simple Storage Service API Reference:

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice AccessControlListNotSupported di errore. Le richieste di lettura ACLs sono ancora supportate.

Intestazioni di richiesta specifiche di Access Control List (ACL)

È possibile utilizzare le intestazioni per concedere autorizzazioni basate sulla lista di controllo degli accessi (ACL). Per impostazione predefinita, tutti gli oggetti sono privati. Solo il proprietario ha il controllo completo dell'accesso. Quando aggiungi un nuovo oggetto, puoi concedere autorizzazioni a singoli Account AWS o a gruppi predefiniti definiti da Amazon S3. Queste autorizzazioni vengono quindi aggiunte all'Access Control List (ACL) sull'oggetto. Per ulteriori informazioni, consulta Panoramica della lista di controllo degli accessi (ACL).

Con questa operazione, puoi concedere le autorizzazioni di accesso utilizzando uno dei due metodi seguenti:

  • In scatola ACL (x-amz-acl): Amazon S3 supporta un set di impostazioni ACLs predefinite, note come in scatola. ACLs Ogni dispositivo predefinito ACL ha un set predefinito di concessionari e autorizzazioni. Per ulteriori informazioni, consulta In scatola ACL.

  • Autorizzazioni di accesso — Per concedere esplicitamente le autorizzazioni di accesso a specifici Account AWS o gruppi, utilizza le seguenti intestazioni. Ogni intestazione è mappata a autorizzazioni specifiche supportate da Amazon S3 in un file. ACL Per ulteriori informazioni, consulta Panoramica della lista di controllo degli accessi (ACL). Nell'intestazione, specifica un elenco di assegnatari che ottengono l'autorizzazione specifica.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-acp

    • x-amz-grant-write-acp

    • x-amz-grant-full-controllo

Per ulteriori informazioni sulla gestione dell'ACLsutilizzo di AWS CLI, vedere put-bucket-aclnel AWS CLI Command Reference.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo di accesso (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice AccessControlListNotSupported di errore. Le richieste di lettura ACLs sono ancora supportate.