Wie kann ich die Eigentümerschaft von Objekten mit einem öffentlichen (anonymen) Eigentümer in meinem Amazon S3-Bucket ändern?

Lesedauer: 3 Minute
0

Mein Bucket im Amazon Simple Storage Service (Amazon S3) enthält ein Objekt mit einem öffentlichen (anonymen) Eigentümer. Ich möchte die Eigentümerschaft des Objekts ändern, sodass das Objekt Eigentum meines AWS-Kontos wird.

Kurzbeschreibung

Standardmäßig ist eine Identität, die ein Amazon S3-Objekt hochlädt, Eigentümer dieses Objekts. Das bedeutet, dass, wenn Sie öffentlichen Schreibzugriff auf Ihren Bucket gewähren, die von öffentlichen (anonymen) Benutzern hochgeladenen Objekte öffentliches Eigentum sind. Um Sicherheitsproblemen vorzubeugen, empfiehlt es sich, den öffentlichen Zugriff auf Ihren Bucket zu blockieren.

Wenn ein anonymer Benutzer ein Objekt in Ihren Bucket hochgeladen hat und Sie den Eigentümer des Objekts ändern möchten, müssen Sie die Zugriffssteuerungsliste (ACL) des Objekts verändern. Ändern Sie die ACL des Objekts, um dem Eigentümer des Buckets (Ihrem AWS-Konto) die volle Kontrolle über das Objekt zu gewähren.

Hinweis: Sie können auch Amazon S3-Objekteigentümerschaft verwenden, um die Eigentümerschaft von Objekten zu kontrollieren, die von einem anderen AWS-Konto hochgeladen wurden.

Lösung

Gehen Sie wie folgt vor, um die Eigentümerschaft des Objekts auf das AWS-Konto zu ändern, dem der Bucket angehört:

  1. Um eine Objekt-ACL hinzuzufügen, führen Sie den Befehl put-object-acl über das AWS Command Line Interface (AWS CLI) aus. Fügen Sie die Option --acl in den Wert bucket-owner-full-control ein, um eine ACL hinzuzufügen, die dem Eigentümer des Buckets die Kontrolle über das Objekt gewährt. Fügen Sie dann die Option --no-sign-request hinzu, um anonyme Anmeldeinformationen für die Anfrage zu verwenden. Der vollständige Befehl put-object-acl mit den Optionen, die Sie benötigen, ähnelt dem folgenden:

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

    Hinweis: Wenn Sie beim Ausführen von Befehlen im AWS-CLI Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

  2. Um die Änderung der Eigentümerschaft anzuwenden, müssen Sie das Objekt auf sich selbst kopieren. Führen Sie dazu den Befehl cp aus:

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

    Hinweis: Stellen Sie sicher, dass Sie den Wert --storage-class im Beispielbefehl in die Speicherklasse ändern, die für Ihren Anwendungsfall gilt. Stellen Sie darüber hinaus sicher, dass Sie andere cp-Befehlsoptionen integrieren, die Sie für Ihr Objekt benötigen.

  3. Führen Sie den Befehl get-object-acl aus, um die Änderung der Eigentümerschaft zu überprüfen:

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

    Dieser Befehl gibt eine Ausgabe zurück, die den Eigentümer des Objekts anzeigt:

    {
      "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
      },
      "Grants": [
        {
          "Grantee": {
            "DisplayName": "jane",
            "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
            "Type": "CanonicalUser"
          },
          "Permission": "FULL_CONTROL"
        }
      ]
    }
  4. Wenn Ihr Bucket über eine Versionsverwaltung verfügt, müssen Sie darüber hinaus die vorherige Version des Objekts löschen, das mit dem Befehl cp in Schritt 2 generiert wurde. Die vorherige Objektversion hat einen öffentlichen (anonymen) Eigentümer. Um diese Objektversion zu löschen, führen Sie zunächst den Befehl list-object-versions im Bucket aus. Fügen Sie die Option --prefix des Befehls hinzu, um die Ergebnisse nach dem Objekt zu filtern, welches öffentliches Eigentum war:

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

    Kopieren Sie aus der Befehlsausgabe die Versions-ID der Objektversion, die öffentliches Eigentum war. Führen Sie dann den Befehl delete-object für die Versions-ID aus, die Sie löschen möchten:

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

    Warnung: Überprüfen Sie die Versions-ID sorgfältig, um sicherzustellen, dass es sich um die Versions-ID der Objektversion handelt, die öffentliches Eigentum ist. Wenn Sie eine Objektversion löschen, können Sie diese nicht wiederherstellen.

Ähnliche Informationen

Warum kann ich nicht auf ein Objekt zugreifen, das von einem anderen AWS-Konto in meinen Amazon S3-Bucket hochgeladen wurde?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten