Configuration ACLs - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration ACLs

Cette section explique comment gérer les autorisations d'accès pour les compartiments et objets S3 à l'aide de listes de contrôle d'accès (ACLs). Vous pouvez ajouter des subventions à votre ressource à ACL l'aide du AWS Management Console, AWS Command Line Interface (CLI) RESTAPI, ou AWS SDKs.

Les autorisations de compartiment et d'objet sont indépendantes les unes des autres. un objet n'hérite pas des autorisations de son compartiment. Par exemple, si vous créez un compartiment et accordez un accès en écriture à un utilisateur, vous ne pouvez pas accéder à ses objets sauf s'il vous accorde explicitement l'accès.

Vous pouvez accorder des autorisations à d'autres Compte AWS utilisateurs ou à des groupes prédéfinis. L'utilisateur ou le groupe auquel vous accordez des autorisations est le « bénéficiaire ». Par défaut, le propriétaire, qui est Compte AWS qui a créé le bucket, dispose des autorisations complètes.

Chaque autorisation que vous accordez à un utilisateur ou à un groupe ajoute une entrée associée au bucket. ACL La ACL liste répertorie les subventions, qui identifient le bénéficiaire et l'autorisation accordée.

La propriété des objets S3 est un paramètre au niveau du compartiment Amazon S3 que vous pouvez utiliser à la fois pour contrôler la propriété des objets chargés dans votre compartiment et pour les désactiver ou les activer. ACLs Par défaut, Object Ownership est défini sur le paramètre imposé par le propriétaire du bucket, et tous ACLs sont désactivés. Lorsqu'ils ACLs sont désactivés, le propriétaire du compartiment possède tous les objets du compartiment et gère l'accès à ceux-ci exclusivement à l'aide de politiques de gestion des accès.

La majorité des cas d'utilisation modernes d'Amazon S3 ne nécessitent plus l'utilisation deACLs. Nous vous recommandons de rester ACLs désactivé, sauf dans des circonstances exceptionnelles où vous devez contrôler l'accès à chaque objet individuellement. Lorsque cette ACLs option est désactivée, vous pouvez utiliser des politiques pour contrôler l'accès à tous les objets de votre compartiment, quelle que soit la personne qui les a chargés dans votre compartiment. Pour de plus amples informations, veuillez consulter Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment.

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.

Avertissement

Nous vous recommandons vivement d'éviter d'accorder un accès en écriture au groupe Tout le monde (accès public) ou aux utilisateurs authentifiés (tous AWS groupes d'utilisateurs authentifiés). Pour en savoir plus sur les effets de l'octroi d'un accès en écriture à ces groupes, veuillez consulter Groupes prédéfinis Amazon S3.

La console affiche les autorisations d'accès combinées pour les bénéficiaires en double. Pour voir la liste complète desACLs, utilisez Amazon S3 RESTAPI, AWS CLI, ou AWS SDKs.

Le tableau suivant indique les ACL autorisations que vous pouvez configurer pour les buckets dans la console Amazon S3.

ACLAutorisations de console Amazon S3 pour les buckets
Autorisation de la console ACLautorisation Accès
Objets – Liste READ Elles permettent au bénéficiaire de répertorier les objets dans le compartiment
Objets – Écriture WRITE Elles permettent au bénéficiaire de créer des objets dans le compartiment. Pour les propriétaires de compartiments et d'objets existants, elles permettent également de supprimer et de remplacer ces objets.
Seau ACL - Lire READ_ACP Permet au bénéficiaire de lire le seau. ACL
Bucket ACL - Écrire WRITE_ACP Permet au bénéficiaire d'écrire le nom ACL du compartiment applicable.
Tout le monde (accès public) : Objets – Liste READ Elles accordent un accès public en lecture pour les objets se trouvant dans le compartiment. Lorsque vous accordez l'accès à la liste à Tout le monde (accès public), quiconque dans le monde peut accéder aux objets présents dans le compartiment.
Tout le monde (accès public) : Bucket ACL - Read READ_ACP Accorde un accès public en lecture au bucketACL. Lorsque vous accordez l'accès en lecture à tout le monde (accès public), n'importe qui dans le monde peut accéder au bucketACL.

Pour plus d'informations sur ACL les autorisations, consultezVue d'ensemble de la liste de contrôle d'accès (ACL).

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.

Pour définir ACL des autorisations pour un bucket
  1. Connectez-vous au AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment pour lequel vous souhaitez définir des autorisations.

  3. Choisissez Permissions.

  4. Sous Liste de contrôle d'accès, choisissez Modifier.

    Vous pouvez modifier les ACL autorisations suivantes pour le bucket :

    Objets
    • List – Permet au bénéficiaire de lister les objets dans le compartiment.

    • Write (Écriture) – Permet au bénéficiaire de créer des objets dans le compartiment. Pour les propriétaires de compartiments et d'objets existants, elles permettent également de supprimer et de remplacer ces objets.

      Dans la console S3, vous pouvez uniquement accorder un accès en écriture au groupe de mise à disposition de journaux S3 et au propriétaire du compartiment (votre Compte AWS). Nous vous recommandons vivement de ne pas accorder d'accès en écriture à d'autres bénéficiaires. Toutefois, si vous devez accorder un accès en écriture, vous pouvez utiliser AWS CLI, AWS SDKs, ou le RESTAPI.

    Seau ACL
    • Lire — Permet au bénéficiaire de lire le bucketACL.

    • Écrire — Permet au bénéficiaire d'écrire le code ACL correspondant au compartiment applicable.

  5. Pour modifier les autorisations du propriétaire du bucket, à côté du propriétaire du bucket (votre Compte AWS), effacez ou sélectionnez l'une des ACL autorisations suivantes :

    • ObjetsListe ou Écriture

    • Bucket ACLLire ou écrire

    Le propriétaire fait référence au Utilisateur racine d'un compte AWS, pas un AWS Identity and Access Management IAMutilisateur. Pour plus d'informations sur l'utilisateur root, consultez le Utilisateur racine d'un compte AWS dans le guide de l'utilisateur IAM.

  6. Pour accorder ou annuler des autorisations au grand public (tout le monde sur Internet), à côté de Tout le monde (accès public), effacez ou sélectionnez l'une ACL des autorisations suivantes :

    • ObjetsListe

    • Bucket ACLLire

    Avertissement

    Soyez vigilant lorsque vous accordez au groupe Tout le monde l'accès public à votre compartiment S3. Lorsque vous accordez l'accès à ce groupe, tout le monde peut accéder à votre compartiment. Nous vous recommandons vivement de ne jamais accorder un type d'accès en écriture public quel qu'il soit à votre compartiment S3.

  7. Pour accorder ou annuler des autorisations à toute personne disposant d'un Compte AWS, à côté du groupe des utilisateurs authentifiés (toute personne possédant un Compte AWS), effacez ou sélectionnez l'une des ACL autorisations suivantes :

    • ObjetsListe

    • Bucket ACLLire

  8. Pour accorder ou annuler les autorisations permettant à Amazon S3 d'écrire des journaux d'accès au serveur dans le compartiment, dans le groupe de mise à disposition des journaux S3, effacez ou sélectionnez l'une ACL des autorisations suivantes :

    • ObjetsListe ou Écriture

    • Bucket ACLLire ou écrire

      Si un compartiment est configuré en tant que compartiment cible (les journaux d'accès y seront stockés), les autorisations sur ce compartiment doivent autoriser le groupe Livraison des journaux à disposer d'un accès en écriture sur le compartiment. Lorsque vous activez la journalisation des accès serveur sur un compartiment, la console Amazon S3 accorde au groupe Log Delivery (Livraison des journaux) un droit d'accès en écriture sur le compartiment que vous avez choisi pour la réception des journaux. Pour en savoir plus sur la journalisation des accès au serveur, consultez Activation de la journalisation des accès au serveur Amazon S3.

  9. Pour accorder l'accès à un autre Compte AWS, procédez comme suit :

    1. Choisissez Ajouter un bénéficiaire.

    2. Dans le champ Bénéficiaire, entrez l'identifiant canonique de l'autre Compte AWS.

    3. Sélectionnez l'une des ACL autorisations suivantes :

      • ObjetsListe ou Écriture

      • Bucket ACLLire ou écrire

    Avertissement

    Lorsque vous accordez d'autres Comptes AWS accès à vos ressources, sachez que Comptes AWS peuvent déléguer leurs autorisations aux utilisateurs de leurs comptes. Il s'agit d'un accès entre comptes. Pour plus d'informations sur l'utilisation de l'accès entre comptes, voir Création d'un rôle pour déléguer des autorisations à un IAM utilisateur dans le guide de l'IAMutilisateur.

  10. Pour supprimer l'accès à un autre Compte AWS, sous Accès pour les autres Comptes AWS, choisissez Supprimer.

  11. Choisissez Enregistrer pour enregistrer les modifications.

La console affiche les autorisations d'accès combinées pour les bénéficiaires en double. Pour voir la liste complète desACLs, utilisez Amazon S3 RESTAPI, AWS CLI, ou AWS SDKs. Le tableau suivant indique les ACL autorisations que vous pouvez configurer pour les objets dans la console Amazon S3.

ACLAutorisations de console Amazon S3 pour les objets
Autorisation de la console ACLautorisation Accès
Objet – Lecture READ Elles permettent au bénéficiaire de lire les données de l'objet et ses métadonnées.
Objet ACL - Lire READ_ACP Permet au bénéficiaire de lire l'objetACL.
Objet ACL - Écrire WRITE_ACP Permet au bénéficiaire d'écrire le ACL pour l'objet applicable

Pour plus d'informations sur ACL les autorisations, consultezVue d'ensemble de la liste de contrôle d'accès (ACL).

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.

Pour définir ACL des autorisations pour un objet
  1. Connectez-vous au AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment qui contient l'objet.

  3. Dans la liste Objets, sélectionnez le nom de l'objet pour lequel vous souhaitez définir des autorisations.

  4. Choisissez Permissions.

  5. Sous Liste de contrôle d'accès (ACL), choisissez Modifier.

    Vous pouvez modifier les ACL autorisations suivantes pour l'objet :

    Objet
    • Read – Permet au bénéficiaire de lire les données de l'objet et ses métadonnées.

    Objet ACL
    • Lire — Permet au bénéficiaire de lire l'objetACL.

    • Écrire — Permet au bénéficiaire d'écrire le nom ACL de l'objet applicable. Dans la console S3, vous ne pouvez accorder l'accès en écriture qu'au propriétaire du compartiment (votre Compte AWS). Nous vous recommandons vivement de ne pas accorder d'accès en écriture à d'autres bénéficiaires. Toutefois, si vous devez accorder un accès en écriture, vous pouvez utiliser AWS CLI, AWS SDKs, ou le RESTAPI.

  6. Vous pouvez gérer les autorisations d'accès aux objets pour :

    1. Accès pour le propriétaire de l'objet

      Le propriétaire fait référence au Utilisateur racine d'un compte AWS, et non un AWS Identity and Access Management IAMutilisateur. Pour plus d'informations sur l'utilisateur root, consultez le Utilisateur racine d'un compte AWS dans le guide de l'utilisateur IAM.

      Pour modifier les autorisations d'accès aux objets du propriétaire, sous Accès pour le propriétaire de l'objet, sélectionnez Votre AWS Compte (propriétaire).

      Activez les cases à cocher des autorisations que vous souhaitez modifier, puis choisissez Enregistrer.

    2. Accès pour les autres Comptes AWS

      Pour accorder des autorisations à un AWS utilisateur d'un autre Compte AWS, sous Accès pour les autres Comptes AWS, choisissez Ajouter un compte. Dans le champ Entrez un identifiant, entrez l'identifiant canonique du AWS utilisateur auquel vous souhaitez accorder des autorisations d'objets. Pour plus d'informations sur la recherche d'un identifiant canonique, consultez Votre Compte AWS identifiants dans le Référence générale d'Amazon Web Services. Vous pouvez ajouter jusqu'à 99 utilisateurs.

      Activez les cases à cocher des autorisations que vous souhaitez accorder à l'utilisateur, puis choisissez Enregistrer. Pour afficher des informations sur les autorisations, choisissez les icônes d'aide.

    3. Accès public

      Pour permettre au grand public (tout le monde) d'accéder à votre objet, sous Accès public, sélectionnez Tout le monde. Si vous accordez des autorisations d'accès public, tout le monde peut accéder à l'objet.

      Activez les cases à cocher des autorisations que vous souhaitez accorder, puis choisissez Enregistrer.

      Avertissement
      • Soyez vigilant lorsque vous accordez au groupe Everyone (Tout le monde) l'accès anonyme à vos objets Amazon S3. Lorsque vous accordez l'accès à ce groupe, tout le monde peut accéder à votre objet. Si vous avez besoin d'accorder l'accès à tout le monde, nous vous recommandons vivement d'octroyer uniquement des autorisations Lecture d'objet.

      • Nous vous recommandons de ne pas accorder des autorisations d'écriture sur l'objet au groupe Tout le monde. Cela permet à n'importe qui de remplacer les ACL autorisations associées à l'objet.

Cette section fournit des exemples de configuration des autorisations de liste de contrôle d'accès (ACL) sur les buckets et les objets.

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.

Java

Cette section fournit des exemples de configuration des autorisations de liste de contrôle d'accès (ACL) sur les buckets et les objets. Le premier exemple crée un bucket contenant une autorisation personnalisée ACL (voirEn conserve ACL), crée une liste d'autorisations personnalisées, puis remplace le bucket prédéfini par un ACL ACL contenant les autorisations personnalisées. Le deuxième exemple montre comment modifier un ACL en utilisant la AccessControlList.grantPermission() méthode.

Exemple Créez un compartiment et spécifiez un fichier numérisé ACL qui accorde l'autorisation au groupe de mise à disposition de journaux S3

Cet exemple crée un compartiment. Dans la demande, l'exemple indique une analyse ACL qui accorde au groupe Log Delivery l'autorisation d'écrire des journaux dans le compartiment.

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(); } } }
Exemple Mise à ACL jour d'un objet existant

Cet exemple met à jour le ACL sur un objet. L'exemple exécute les tâches suivantes :

  • Récupère le ACL

  • Efface le ACL en supprimant toutes les autorisations existantes

  • Ajoute deux autorisations : un accès complet au propriétaire et WRITE _ ACP (voirQuelles autorisations puis-je octroyer ?) à un utilisateur identifié par une adresse e-mail

  • Enregistre ACL le dans l'objet

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
Exemple Créez un compartiment et spécifiez un fichier numérisé ACL qui accorde l'autorisation au groupe de mise à disposition de journaux S3

Cet exemple C# crée un compartiment. Dans la demande, le code spécifie également un scan ACL qui accorde au groupe Log Delivery l'autorisation d'écrire les journaux dans le bucket.

Pour plus d'informations sur la configuration et l'exécution des exemples de code, voir Getting Started with AWS SDKpour. NETdans le AWS SDKpour. NETGuide du développeur.

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()); } } } }
Exemple Mise à ACL jour d'un objet existant

Cet exemple en C# met à jour le ACL sur un objet existant. L'exemple exécute les tâches suivantes :

  • Récupère celui d'un objet. ACL

  • Efface le ACL en supprimant toutes les autorisations existantes.

  • Ajoute deux autorisations : un accès complet au propriétaire et WRITE _ ACP à un utilisateur identifié par une adresse e-mail.

  • Les enregistre ACL en envoyant une PutAcl demande.

Pour plus d'informations sur la configuration et l'exécution des exemples de code, voir Getting Started with AWS SDKpour. NETdans le AWS SDKpour. NETGuide du développeur.

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 vous APIs permet de définir un ACL lorsque vous créez un compartiment ou un objet. Amazon S3 permet également API de définir un ACL objet ou un compartiment existant. Elles APIs fournissent les méthodes suivantes pour définir un ACL :

  • Définir ACL à l'aide des en-têtes de demande : lorsque vous envoyez une demande pour créer une ressource (compartiment ou objet), vous définissez un paramètre ACL utilisant les en-têtes de demande. À l'aide de ces en-têtes, vous pouvez soit spécifier une autorisation prédéfinie, ACL soit spécifier des subventions de manière explicite (en identifiant explicitement le bénéficiaire et les autorisations).

  • Définir ACL à l'aide du corps de la demande : lorsque vous envoyez une ACL demande pour définir une ressource existante, vous pouvez la ACL définir dans l'en-tête ou dans le corps de la demande.

Pour plus d'informations sur la REST API prise en charge de la gestionACLs, consultez les sections suivantes du manuel Amazon Simple Storage Service API Reference :

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.

En-têtes de demande spécifiques à la liste de contrôle d'accès (ACL)

Vous pouvez utiliser des en-têtes pour accorder des autorisations basées sur une liste de contrôle d'accès (ACL). Par défaut, tous les objets sont privés. Seul le propriétaire dispose d'un contrôle d'accès complet. Lorsque vous ajoutez un nouvel objet, vous pouvez accorder des autorisations à des personnes Comptes AWS ou à des groupes prédéfinis définis par Amazon S3. Ces autorisations sont ensuite ajoutées à la liste de contrôle d'accès (ACL) de l'objet. Pour de plus amples informations, veuillez consulter Vue d'ensemble de la liste de contrôle d'accès (ACL).

Avec cette opération, vous pouvez accorder des autorisations d'accès en utilisant l'une des deux méthodes suivantes :

  • Canned ACL (x-amz-acl) : Amazon S3 prend en charge un ensemble de paramètres prédéfinisACLs, appelés « scannés ACLs ». Chaque version ACL numérisée possède un ensemble prédéfini de bénéficiaires et d'autorisations. Pour de plus amples informations, veuillez consulter En conserve ACL.

  • Autorisations d'accès — Pour accorder explicitement des autorisations d'accès à des personnes spécifiques Comptes AWS pour les groupes, utilisez les en-têtes suivants. Chaque en-tête correspond à des autorisations spécifiques prises en charge par Amazon S3 dans unACL. Pour de plus amples informations, veuillez consulter Vue d'ensemble de la liste de contrôle d'accès (ACL). Dans l'en-tête, vous spécifiez une liste de bénéficiaires qui obtiennent l'autorisation spécifique.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-acp

    • x-amz-grant-write-acp

    • x-amz-grant-full-contrôle

Pour plus d'informations sur la gestion ACLs à l'aide du AWS CLI, voir put-bucket-acldans le AWS CLI Référence de commande.

Important

Si votre compartiment utilise le paramètre Propriétaire du compartiment appliqué pour la propriété des objets S3, vous devez utiliser des politiques pour accorder l’accès à votre compartiment et aux objets qu’il contient. Lorsque le paramètre Bucket owner forced est activé, les demandes de définition de listes de contrôle d'accès (ACLs) ou de mise à jour ACLs échouent et renvoient le code AccessControlListNotSupported d'erreur. Les demandes de lecture ACLs sont toujours prises en charge.