Comment puis-je changer la propriété des objets publics (anonymes) dans mon compartiment Amazon S3 ?

Lecture de 4 minute(s)
0

Mon compartiment Amazon Simple Storage Service (Amazon S3) contient un objet de propriété publique (anonyme). Je souhaite changer la propriété de l'objet afin que mon compte AWS en devienne le propriétaire.

Brève description

Par défaut, une identité qui charge un objet Amazon S3 devient propriétaire de cet objet. Cela signifie que si vous autorisez le public à accéder en écriture à votre compartiment, les objets que les utilisateurs publics (anonymes) chargent sont de propriété publique. Pour éviter les problèmes de sécurité, il est recommandé de bloquer l'accès public à votre compartiment.

Si un utilisateur anonyme a chargé un objet dans votre compartiment et que vous souhaitez en changer le propriétaire, modifiez la liste de contrôle d'accès (ACL) de l'objet. Modifiez l'ACL de l'objet de façon à accorder au propriétaire du compartiment (votre compte AWS) le contrôle total de l'objet.

Remarque : vous pouvez également utiliser l'option Amazon S3 Object Ownership pour contrôler la propriété des objets qu'un autre compte AWS charge.

Résolution

Pour remplacer la propriété d'un objet par le compte AWS propriétaire du compartiment, procédez comme suit :

  1. Pour ajouter une ACL d'objet, exécutez la commande put-object-acl dans l'interface de la ligne de commande AWS (AWS CLI). Incluez l'option --acl avec la valeur bucket-owner-full-control pour ajouter une ACL qui accorde au propriétaire du compartiment le contrôle de l'objet. Incluez ensuite l'option --no-sign-request pour utiliser des informations d'identification anonymes dans la demande. La commande put-object-acl complète avec les options dont vous avez besoin ressemble à l'exemple suivant :

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject --acl bucket-owner-full-control --no-sign-request

    Remarque : si des erreurs surviennent lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d'AWS CLI.

  2. Pour appliquer le changement de propriétaire, vous devez répliquer l'objet. Pour ce faire, exécutez la commande cp :

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/awsexampleobject s3://DOC-EXAMPLE-BUCKET/awsexampleobject --storage-class STANDARD

    Remarque : veillez à remplacer la valeur --storage-class dans l'exemple de commande par la classe de stockage applicable à votre cas d'utilisation. Assurez-vous également d'inclure les autres options de commande cp dont vous avez besoin pour votre objet.

  3. Pour vérifier que le changement de propriétaire a bien eu lieu, exécutez la commande get-object-acl :

    aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject

    Cette commande affiche le propriétaire de l'objet dans la sortie :

    {
      "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
      },
      "Grants": [
        {
          "Grantee": {
            "DisplayName": "jane",
            "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
            "Type": "CanonicalUser"
          },
          "Permission": "FULL_CONTROL"
        }
      ]
    }
  4. Si votre compartiment est soumis à la gestion des versions, vous devez également supprimer la version précédente de l'objet généré à l'aide de la commande cp à l'étape 2. La version précédente de l'objet est une propriété publique (anonyme). Pour supprimer cette version d'objet, exécutez d'abord la commande list-object-versions sur le compartiment. Incluez l'option --prefix de la commande pour filtrer les résultats en fonction de l'objet qui était auparavant de propriété publique :

    aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix example.txt

    Dans la sortie de commande, copiez l'ID de version de l'objet de propriété publique. Exécutez ensuite la commande delete-object pour l'ID de version que vous souhaitez supprimer :

    aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'

    Avertissement : vérifiez attentivement l'ID de version pour vous assurer qu'il s'agit bien de celui de l'objet de propriété publique. Si vous supprimez une version d'objet, vous ne pouvez pas la récupérer.

Informations connexes

Pourquoi ne puis-je pas accéder à un objet qui a été chargé dans mon compartiment Amazon S3 par un autre compte AWS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois