Direkt zum Inhalt

Wie aktiviere ich das Löschen mit MFA für meinen Amazon S3-Bucket?

Lesedauer: 5 Minute
0

Ich möchte das Löschen mit Multi-Faktor Authentifizierung (MFA) für meinen Amazon Simple Storage Service (Amazon S3)-Bucket aktivieren, um meine Objekte vor unbeabsichtigten Löschungen zu schützen.

Kurzbeschreibung

Wenn du das Löschen mit MFA nicht konfigurierst, kann jeder mit einer der folgenden Berechtigungen ein Amazon S3-Objekt dauerhaft löschen:

  • Passwort des Root-Benutzers
  • Anmeldeinformationen für AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Benutzer- oder -Rollen mit Löschberechtigung

Wenn du das Löschen mit MFA konfigurierst, kann nur der Root-Benutzer Objektversionen dauerhaft löschen oder die Versionierungskonfiguration im S3-Bucket ändern. Du musst ein MFA-Gerät verwenden, um den Root-Benutzer zu authentifizieren, um die Löschaktion durchzuführen.

Gehe wie folgt vor, um das Löschen mit MFA für den Bucket zu konfigurieren:

  1. Generiere einen Zugriffsschlüssel und einen geheimen Schlüssel für den Root-Benutzer.
  2. Aktiviere ein MFA-Gerät für den Root-Benutzer.
  3. Konfiguriere die AWS CLI mit den Anmeldeinformationen des Root-Benutzers.
  4. Konfiguriere das Löschen mit MFA.
  5. Vergewissere dich, dass das Löschen mit MFA funktioniert, und lösche deine Root-Zugriffsschlüssel.

Du kannst das Löschen mit MFA nur für Buckets verwenden, für die du die S3-Versionsverwaltung aktiviert hast. Der Bucket-Eigentümer, das AWS-Konto, das den Bucket erstellt hat, und alle autorisierten IAM-Benutzer können die Versionsverwaltung aktivieren. Allerdings kann nur das Root-Benutzerkonto das Löschen mit MFA aktivieren. Um das Löschen mit MFAzu aktivieren, musst du die AWS CLI oder die Amazon S3-REST-API verwenden.

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Lösung

Generieren eines Zugriffsschlüssels und eines geheimen Schlüssels für den Root-Benutzer

Erstelle zunächst Zugriffsschlüssel für den Root-Benutzer. Nachdem du diese Schlüssel erstellt hast, musst du die Schlüssel sofort herunterladen und speichern. Du kannst diese Schlüssel später nicht abrufen. 

Aktivieren des MFA-Geräts für den Root-Benutzer

Wenn du kein MFA-Gerät für den Root-Benutzer aktiviert hast, findest du weitere Informationen unter Aktivieren eines virtuellen MFA-Geräts für den Root-Benutzer (Konsole). Wenn du bereits ein MFA-Gerät für den Root-Benutzer aktiviert hast, notiere dir den ARN.

Konfigurieren der AWS CLI mit den Anmeldeinformationen des Root-Benutzers

Gehe wie folgt vor:

  1. Führe den AWS-CLI-Befehl configure aus.
  2. Gib für die AWS-Zugriffsschlüssel-ID, zum Beispiel AKIAEXAMPLEABCQWE, die Zugriffsschlüssel-ID des Root-Benutzers ein.
  3. Gib für den geheimen AWS-Zugriffsschlüssel des Root-Benutzers die ID des geheimen Zugriffsschlüssels ein. Den geheimen Zugriffsschlüssel findest du in der Datei, die die Anmeldeinformationen des Root-Benutzers enthält.
  4. (Optional) Für den Default region name (Namen der Standardregion) kannst du die standardmäßige AWS-Region eingeben.
  5. (Optional) Für das Default output format (Standardausgabeformat) kannst du das Ausgabeformat eingeben.

Wichtig: Wenn du benannte Profile in der AWS CLI konfiguriert hast, musst du ein weiteres Profil für die Anmeldeinformationen des Root-Benutzers erstellen. Führe den folgenden Befehl configure aus, um ein benanntes Profil zu konfigurieren:

aws configure --profile root_user

Löschen mit S3 MFA aktivieren

Führe den Befehl put-bucket-versioning aus, um das Löschen mit MFA zu aktivieren:

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789"

Hinweis: Ersetze im vorherigen Befehl 1XXXXXXX6789 durch die ID deines Kontos und 123789 durch die Seriennummer, die das MFA-Gerät generiert.

Wenn du ein benanntes Profil für den Root-Benutzer verwendest, führe den folgenden Befehl put-bucket-versioning aus:

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789" --profile root_user

Wenn der Befehl erfolgreich ist, erhältst du keine Ausgabe. Wenn du eine Ausgabe mit einem Fehler erhältst, vergewissere dich, dass du den Root-Benutzer verwendest und der ARN und die MFA-Seriennummer gültig sind.

Du kannst auch die PutBucketVersioning-API aufrufen, um das Löschen mit MFA-zu aktivieren.

Hinweis: Du kannst das Löschen mit MFA nicht mit Lebenszykluskonfigurationen verwenden. Wenn der Bucket eine Lebenszykluskonfiguration enthält und du den vorherigen Befehl put-bucket-versioning ausführst, wird die folgende Fehlermeldung angezeigt:

„An error occurred (InvalidBucketState) when calling the PutBucketVersioning operation: Mfa Authentication is not supported on a bucket with lifecycle configuration. Delete lifecycle configuration before enabling Mfa Authentication.“

Sich vergewissern, dass das Löschen mit MFA funktioniert

Stelle zunächst sicher, dass du die S3-Versionsverwaltung aktiviert hast. Du kannst entweder die Amazon S3-Konsole oder die folgende GetBucketVersioning-API verwenden:

aws s3api get-bucket-versioning --bucket mybucketname

Beispielausgabe:

{    
    "Status": "Enabled",    
    "MFADelete": "Enabled"    
}

Um eine Objektversion dauerhaft zu löschen, musst du den x-amz-mfa-Anforderungsheader einschließen. Du kannst die Option --mfa im Befehl delete-object verwenden, um den Header-Wert einzuschließen. Der Wert des Headers ist die Kette aus der Seriennummer des Authentifizierungsgeräts, einem Leerzeichen und dem Authentifizierungscode. Weitere Informationen findest du unter Löschen eines Objekts aus einem Bucket mit aktiviertem Löschen mit MFA.

Wenn du das Löschen mit MFA nicht aktivierst und versuchst, eine Objektversion zu löschen, wird die folgende Fehlermeldung angezeigt. Du erhältst außerdem die folgende Fehlermeldung, wenn du einen IAM-Benutzer verwendest, um zu versuchen, die Objektversion zu löschen:

„aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HL4kqCxf3vjVBH40Nrjkd An error occurred (AccessDenied) when calling the DeleteObject operation: Mfa Authentication must be used for this request“

Um den Root-Benutzer zum Löschen einer Objektversion in einem Bucket zu verwenden, bei dem das Löschen mit MFA aktiviert ist, führe den folgenden Befehl delete-object aus:

aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HLkqCxf3vjVBH40Nrjkd --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)" {    
    "VersionId": "3HLkqCxf3vjVBH40Nrjkd"    
}

Hinweis: Damit IAM-Benutzer oder -Rollen in deinem Konto die Anforderung delete-object ohne Versions-ID verwenden können, gewähre ihnen die s3:DeleteObject-Berechtigung. Bei Versionsverwaltungs-fähigen Buckets erstellt die delete-object-Anforderung nur eine Löschmarkierung. Die Objektversion wird nicht dauerhaft gelöscht. Um ein Objekt dauerhaft zu löschen, musst du die Versions-ID des Objekts angeben.

Nachdem du das Löschen mit MFA aktiviert hast, solltest du aufgrund bewährter Sicherheitsmethoden die folgenden Maßnahmen ergreifen:

AWS OFFICIALAktualisiert vor einem Jahr