Direkt zum Inhalt

Warum erhalten kontoübergreifende Benutzer die Fehlermeldung „Access Denied“, wenn sie versuchen, auf meine Amazon-S3-Objekte zuzugreifen, die ich mit einem vom Kunden verwalteten AWS-KMS-Schlüssel verschlüsselt habe?

Lesedauer: 5 Minute
0

Ich möchte die Fehler „Access Denied“ beheben, den Benutzer erhalten, wenn sie von einem anderen AWS-Konto aus auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket zugreifen. Ich verschlüssele meinen Amazon-S3-Bucket mit einem vom Kunden verwalteten Schlüssel von AWS Key Management Service (AWS KMS).

Kurzbeschreibung

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.

Deine Benutzer erhalten die Fehlermeldung „Access Denied“ aus den folgenden Gründen:

  • Die AWS Identity and Access Management (IAM)-Benutzer oder -Rollen verfügen nicht über Berechtigungen für die API-Vorgänge s3:GetBucketPolicy und s3:PutBucketPolicy.
  • Die Bucket-Richtlinie verweigert der IAM-Identität die Berechtigung für s3:GetBucketPolicy und s3:PutBucketPolicy.
  • Du hast die Amazon S3 Block Public Access-Funktion für den Bucket aktiviert.
  • Die Service-Kontrollrichtlinien von AWS Organizations erlauben keinen Zugriff auf Amazon S3.

Führe die folgenden Schritte zur Problembehandlung durch, um die oben genannten Probleme zu beheben.

Lösung

Berechtigungen für s3:GetBucketPolicy und s3:PutBucketPolicy überprüfen

Gehe wie folgt vor:

  1. Öffne die IAM-Konsole.
  2. Wähle im Navigationsbereich die Identität aus, die für den Zugriff auf die Bucket-Richtlinie verwendet wird, z. B. Benutzer oder Rollen.
  3. Wähle den IAM-Identitätsnamen aus, den du für den Zugriff auf die Bucket-Richtlinie verwendest.
  4. Erweitere auf der Registerkarte Berechtigungen deiner IAM-Identität jede Richtlinie, um das zugehörige JSON-Richtliniendokument anzuzeigen.
  5. Suche in den JSON-Richtliniendokumenten nach Richtlinien, die sich auf den Zugriff auf Amazon S3 beziehen. Stelle anschließend sicher, dass du über die Berechtigungen für die Aktionen s3:GetBucketPolicy und s3:PutBucketPolicy für den Bucket verfügst.<br id=hardline_break/> Hinweis: Wenn es keine Richtlinie mit den Aktionen s:3GetBucketPolicy und s3:PutBucketPolicy gibt, füge diese Berechtigungen einer Richtlinie hinzu. Anweisungen zum Modifizieren der IAM-Berechtigungen findest du unter Ändern der Berechtigungen für eine(n) IAM-Benutzer:in.<br id=hardline_break/> Die folgende Beispiel-IAM-Richtlinie ermöglicht es der IAM-Identität, die Aktionen s3:GetBucketPolicy und s3:PutBucketPolicy für DOC-EXAMPLE-BUCKET auszuführen:
    {  "Version": "2012-10-17",  
      "Statement": [  
        {  
          "Sid": "ModifyBucketPolicy",  
          "Action": [  
            "s3:GetBucketPolicy",  
            "s3:PutBucketPolicy"  
          ],  
          "Effect": "Allow",  
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"  
        },  
        {  
          "Sid": "AccessS3Console",  
          "Action": [  
            "s3:GetBucketLocation",  
            "s3:ListAllMyBuckets"  
          ],  
          "Effect": "Allow",  
          "Resource": "arn:aws:s3:::*"  
        }  
      ]  
    }
    Hinweis: Die Anweisung Accesss3Console in der vorherigen IAM-Richtlinie gewährt Zugriff auf die Amazon-S3-Konsole. Sie bezieht sich nicht speziell auf Änderungen der Bucket-Richtlinie.
  6. Suche in den JSON-Richtliniendokumenten nach Anweisungen mit „Effekt“: „Verweigern“. Stelle anschließend sicher, dass diese Anweisungen deiner IAM-Identität nicht den Zugriff auf s3:GetBucketPolicy oder s3:PutBucketPolicy verweigern.
  7. Stelle sicher, dass du den Amazon-Ressourcennamen (ARN) des Buckets im Abschnitt Ressource der Richtlinie angibst. Im vorherigen Beispiel lautet der ARN aws:s3:::DOC-EXAMPLE-BUCKET.<br id=hardline_break/> Hinweis: s3:GetBucketPolicy und s3:PutBucketPolicy sind Aktionen auf Bucket-Ebene.
  8. Prüfe, ob du globale Bedingungen wie etwa aws:SourceIP in der IAM-Richtlinie angewendet hast, um die Aktionen s3:GetBucketPolicy und s3:PutBucketPolicy einzuschränken. Wenn die Bedingungen den Zugriff einschränken, entferne oder aktualisiere diese Bedingungen.

Bucket-Richtlinie hinzufügen, falls noch keine existiert

Wenn du keine Richtlinien findest, welche die Berechtigungen s3:GetBucketPolicy oder s3:PutBucketPolicy erteilen, füge eine Richtlinie hinzu, um deiner IAM-Identität diese Berechtigungen zu erteilen. Wenn du Richtlinien findest, die den Zugriff auf s3:GetBucketPolicy oder s3:PutBucketPolicy verweigern, entferne diese Richtlinien.

Andere IAM-Identität mit Bucket-Zugriff verwenden und Bucket-Richtlinie ändern

Gehe wie folgt vor:

  1. Öffne die Amazon-S3-Konsole.
  2. Wähle im linken Navigationsbereich Allzweck-Buckets oder Verzeichnis-Buckets aus.
  3. Öffne in der Liste der Buckets den Bucket mit der Bucket-Richtlinie, die du ändern möchtest.
  4. Wähle die Registerkarte Berechtigungen aus.
  5. Wähle Bucket-Richtlinie aus.
  6. Suche nach Anweisungen mit „Effekt“: „Verweigern“.
  7. Bearbeite die Bucket-Richtlinie, um alle Anweisungen mit „Effekt“: „Verweigern“, die der IAM-Identität den Zugriff auf s3:GetBucketPolicy oder s3:PutBucketPolicy verweigern, zu aktualisieren.
  8. Prüfe, ob die Bucket-Richtlinie Bedingungen wie aws:PrincipalArn enthält, die die Aktionen s3:GetBucketPolicy und s3:PutBucketPolicy für die IAM-Entität einschränken. Wenn diese Bedingungen den Zugriff einschränken, entferne oder aktualisiere diese Bedingungen.

Bucket-Richtlinie löschen und erneut erstellen, wenn sie allen Personen Zugriff verweigert

Wenn niemand Zugriff auf s3:GetBucketPolicy, s3:PutBucketPolicy oder alle Amazon-S3-Aktionen (s3:*) hat, verwende den AWS-CLI-Befehl delete-bucket-policy, um die Richtlinie zu löschen:

delete-bucket-policy   
-bucket example_bucket

Hinweis: Ersetze example_bucket durch den Namen deines Buckets.

Wenn du dich versehentlich aus dem Bucket aussperrst und die Bucket-Richtlinie nicht löschen kannst, erlange erneut Zugriff auf den Bucket. Nachdem du die Bucket-Richtlinie gelöscht hast, kannst du eine neue erstellen.

Amazon S3 Block Public Access deaktivieren

Wenn die Bucket-Richtlinie öffentlichen Zugriff gewährt, deaktiviere Amazon S3 Block Public Access für den Bucket. Weitere Informationen findest du unter Blockieren des öffentlichen Zugriffs auf den Amazon S3-Speicher und Die Bedeutung von „öffentlich“.

Hinweis: Um den öffentlichen Zugriff auf private Buckets zu verhindern, aktiviere Amazon S3 Block Public Access für den Bucket, bevor du ihn auf AWS-Kontoebene deaktivierst.

Für AWS Organizations die SCPs löschen, die keinen Zugriff auf Amazon S3 zulassen

Wenn du AWS Organizations verwendest, überprüfe die Service-Kontrollrichtlinien (SCPs). Suche nach Anweisungen, die die Aktion **s3:PutBucketPolicy oder andere**Amazon-S3-Richtlinienaktionen explizit ablehnen. Lösche die SCPs, die den Effekt Verweigern auf s3:*-Aktionen anwenden, wenn deine Organisation die Richtlinien nicht benötigt.

Die folgende Beispielrichtlinie verweigert den Zugriff auf alle Amazon-S3-Aktionen:

{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Effect": "Deny",  
      "Action": "s3:*",  
      "Resource": "*"  
    }  
  ]  
}
AWS OFFICIALAktualisiert vor 7 Monaten