Comment puis-je accorder l’accès public en lecture à certains objets de mon compartiment Amazon S3 ?

Lecture de 6 minute(s)
0

Je souhaite que certains objets de mon compartiment Amazon Simple Storage Service (Amazon S3) soient accessibles au public. Cependant, je ne souhaite pas modifier les autorisations sur les autres objets qui se trouvent dans le même compartiment.

Brève description

Accordez l’accès public en lecture de l’une des manières suivantes :

  • Mettre à jour la liste de contrôle d’accès (ACL) de l’objet à l’aide de la console Amazon S3
  • Mettre à jour l’objet de l’ACL à l’aide de l’interface de la ligne de commande AWS (AWS CLI)
  • Utiliser une politique de compartiment qui accorde un accès public en lecture à une étiquette d’objet spécifique
  • Utiliser une politique de compartiment qui accorde un accès public en lecture à un préfixe spécifique

Important : l’octroi d’un accès public via des ACL de compartiment et d’objet ne fonctionne pas pour les compartiment pour lesquels la propriété de l’objet S3 est définie sur Propriétaire du compartiment appliqué. Dans la plupart des cas, les ACL ne sont pas nécessaires pour accorder des autorisations aux objets et aux compartiments. Utilisez plutôt les politiques AWS Identity Access and Management (IAM) et les politiques de compartiment S3 pour accorder des autorisations aux objets et aux compartiments.

Par défaut, les nouveaux compartiments, points d’accès et objets n’autorisent pas l’accès public. Si Bloquer l’accès public est activé pour tous les compartiments du compte, le message « Compartiment et objets non publics » s’affiche. Pour en savoir plus, consultez Configuration des paramètres de blocage de l’accès public pour votre compte.

Résolution

Important : avant de commencer, vérifiez que vous ne disposez d’aucun paramètre de blocage de l’accès public au niveau du compte ou au niveau du compartiment. Vos paramètres ne doivent pas vous empêcher de rendre les objets publics. Par défaut, les paramètres de blocage de l’accès public sont définis sur Vrai sur les nouveaux compartiments S3.

Mettre à jour l’ACL de l’objet à l’aide de la console Amazon S3

Pour rendre plusieurs objets publics à la fois, procédez comme suit :

Avertissement : une fois que vous avez rendu publics plusieurs objets, il n’est pas possible d’annuler cette action pour plusieurs objets à la fois. Pour supprimer l’accès public, vous devez accéder à chaque objet de la console Amazon S3. Ensuite, depuis l’onglet Autorisations de l’objet, modifiez Accès public. Vous devez effectuer cette opération pour chaque objet pour lequel vous souhaitez annuler l’accès public que vous avez accordé. Assurez-vous de lire attentivement la liste des objets avant de les rendre publics.

1.    Ouvrez la console Amazon S3.

2.    Dans la liste des compartiments, sélectionnez le compartiment avec les objets que vous souhaitez mettre à jour.

3.    Accédez au dossier contenant les objets.

4.    Dans la liste des objets, sélectionnez tous les objets que vous souhaitez rendre publics.

5.    Choisissez Actions, puis Rendre public.

6.    Dans la boîte de dialogue Rendre public, vérifiez que la liste des objets est correcte.

7.    Choisissez Rendre public.

Pour rendre un objet public, vous pouvez répéter le processus précédent ou procéder comme suit :

1.    Dans la console Amazon S3, sélectionnez le compartiment avec l’objet que vous souhaitez mettre à jour.

2.    Accédez au dossier contenant l’objet.

3.    Ouvrez l’objet en cliquant sur le lien figurant sur le nom de l’objet.

4.    Choisissez l’onglet Autorisations.

5.    Choisissez Modifier.

6.    Dans la section Tout le monde, sélectionnez Objets lus.

7.    Sélectionnez Je comprends les effets de ces modifications sur cet objet.

8.    Choisissez Enregistrer les modifications.

Mettre à jour l’ACL de l’objet à l’aide de l’AWS CLI

Pour un objet que vous avez déjà stocké dans Amazon S3, vous pouvez exécuter cette commande pour mettre à jour son ACL pour l’accès public en lecture :

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --acl public-read

Remarque : si vous recevez des messages d’erreur lors de l’exécution des commandes de l’AWS CLI, vérifiez que vous utilisez bien la version la plus récente de l’AWS CLI.

Vous pouvez également exécuter cette commande pour accorder le contrôle total de l’objet au propriétaire du compte AWS et l’accès en lecture à tous les autres :

Remarque : pour la valeur de --grant-full-control, entrez l’identifiant utilisateur canonique du compte.

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

Utiliser une politique de compartiment qui accorde un accès public en lecture à une étiquette d’objet spécifique

Important : avant de commencer, assurez-vous de consulter la tarification de l’étiquetage d’objets S3.

Tout d’abord, ajoutez une politique de compartiment qui autorise l’accès public en lecture à tous les objets dotés d’une étiquette spécifique. Par exemple, cette politique autorise l’accès public en lecture pour tout objet étiqueté avec la paire clé-valeur public=yes :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/public": "yes"
        }
      }
    }
  ]
}

Ajoutez ensuite la balise aux objets que vous souhaitez rendre accessibles au public. Vous pouvez ajouter ou gérer des étiquettes d’objets à l’aide de la console Amazon S3. Vous pouvez également utiliser l’interface de la ligne de commande AWS.

Pour vérifier si un objet possède des étiquettes existantes, exécutez cette commande AWS CLI :

aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject

Pour ajouter une étiquette à un objet qui ne possède aucune étiquette existante, exécutez cette commande :

Avertissement : cette commande remplace toutes les étiquettes d’objet existantes.

aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'

Pour ajouter une étiquette à un objet qui en possède déjà, exécutez la commande suivante. Assurez-vous d’inclure la nouvelle étiquette d’objet, ainsi que les étiquettes existantes que vous souhaitez conserver.

aws s3api put-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'

Après avoir ajouté l’étiquette d’objet, exécutez cette commande pour passer en revue les étiquettes de tous les objets :

aws s3api get-object-tagging --bucket DOC-EXAMPLE-BUCKET --key exampleobject

Utiliser une politique de compartiment qui accorde un accès public en lecture à un préfixe spécifique

Avertissement : la politique de compartiment suivante accorde un accès public en lecture à tous les objets sous un préfixe spécifique. Avant d’utiliser cette politique de compartiment, confirmez que votre cas d’utilisation prend en charge tous les objets lisibles par le public dans le préfixe. Cette politique n’autorise pas l’accès à la liste pour le préfixe. L’utilisateur ne peut accéder à l’objet que si le chemin de l’objet est connu. Lors de l’accès à un objet qui n’existe pas dans le préfixe, l’utilisateur reçoit une erreur 403.

Pour accorder un accès public en lecture à un préfixe d’objet spécifique, ajoutez une politique de compartiment similaire à la suivante :

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/publicprefix/*"]
      }
  ]
}

Copiez ensuite les objets dans le préfixe avec accès public en lecture. Vous pouvez copier un objet dans le préfixe en exécutant une commande similaire à la suivante :

aws s3 cp s3://DOC-EXAMPLE-BUCKET/exampleobject s3://DOC-EXAMPLE-BUCKET/publicprefix/exampleobject

Remarque : selon le préfixe de l’objet, il n’est pas nécessaire de copier l’objet pour accorder un accès public en lecture.

Informations connexes

Configuration des ACL

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans