Warum kann ich nicht auf einen bestimmten Ordner oder eine Datei in meinem Amazon S3-Bucket zugreifen?

Lesedauer: 5 Minute
0

Ich kann nicht auf ein bestimmtes Präfix oder Objekt zugreifen, das sich in meinem Amazon Simple Storage Service (Amazon S3)-Bucket befindet. Ich kann auf die restlichen Daten im Bucket zugreifen.

Kurzbeschreibung

Überprüfen Sie die folgenden Berechtigungen für alle Einstellungen, die Ihnen den Zugriff auf das Präfix oder Objekt verweigern:

  • Besitz des Präfixes oder Objekts
  • Einschränkungen in der Bucket-Richtlinie
  • Einschränkungen in Ihrer AWS Identity and Access Management (IAM)-Benutzerrichtlinie
  • Berechtigungen für Objekte, die mit AWS Key Management Service (AWS KMS) verschlüsselt wurden

Beachten Sie auch die folgenden Zugangsbedingungen:

  • Wenn Sie das Objekt mit einem AWS-KMS-Schlüssel verschlüsselt haben, kann es nur von dem AWS-Konto gelesen werden, das das Objekt verschlüsselt hat.
  • Wenn Sie Berechtigungsgrenzen und Sitzungsrichtlinien definiert haben, sind möglicherweise die maximalen Berechtigungen des Anforderers betroffen. Der Objektzugriff könnte ebenfalls beeinträchtigt werden.
  • Einschränkungen können in anderen Richtlinien wie den VPC-Endpunktrichtlinien und den Service Control-Richtlinien (SCPs) festgelegt werden. Überprüfen Sie daher diese Richtlinien und aktualisieren Sie sie entsprechend.
  • Sie können ebenfalls den Besitz des hochgeladenen Objekts mithilfe von Amazon S3 Object Ownership kontrollieren. Wenn Sie Object Ownership auf BucketOwnerPreferred setzen, können Konten mit der gespeicherten ACL bucket-owner-full-control Objekte schreiben, die an den Bucket-Besitzer übergehen.

Behebung

Besitz des Präfixes oder Objekts

Wenn ein AWS-Konto ein S3-Objekt hochlädt, ist das Konto standardmäßig Eigentümer dieses Objekts. Dies gilt auch dann, wenn ein anderes Konto den Bucket besitzt. Wenn andere Konten in Ihren Bucket hochladen können, gehen Sie wie folgt vor, um Berechtigungen für das Objekt oder Präfix zu erhalten, auf das Sie nicht zugreifen können:

  1. Führen Sie diesen Befehl der AWS Command Line Interface (AWS CLI) aus, um die kanonische Amazon S3-ID für Ihr Konto abzurufen:

    aws s3api list-buckets --query Owner.ID
  2. Führen Sie diesen Befehl aus, um die kanonische Amazon S3-ID des Kontos abzurufen, dem das Objekt gehört, auf das Sie nicht zugreifen können:

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. Wenn die kanonischen IDs nicht übereinstimmen, gehört das Objekt nicht Ihnen (dem Bucket-Besitzer). Für ein einzelnes Objekt kann Ihnen der Objekteigentümer die volle Kontrolle gewähren, indem er den Befehl put-object-acl ausführt:

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control

    Für Objekte innerhalb eines Präfixes muss der Objekteigentümer das Präfix erneut kopieren und Ihnen im Rahmen des Vorgangs die volle Kontrolle über die Objekte gewähren. Der Objekteigentümer kann beispielsweise diesen cp-Befehl mit dem Parameter --acl bucket-owner-full-control ausführen:

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/abc/ s3://DOC-EXAMPLE-BUCKET/abc/ --acl bucket-owner-full-control --recursive --storage-class STANDARD

    Tipp: Sie können eine Bucket-Richtlinie verwenden, um zu verlangen, dass andere Konten Ihnen den Besitz von Objekten gewähren, die sie in Ihren Bucket hochladen.

Einschränkungen in der Bucket-Richtlinie

  1. Öffnen Sie die Amazon S3-Konsole.

  2. Öffnen Sie in der Liste der Buckets den Bucket mit der Richtlinie, die Sie überprüfen möchten.

  3. Wählen Sie den Registerkarte Berechtigungen aus.

  4. Wählen Sie Bucket-Richtlinie aus.

  5. Suchen Sie nach Aussagen mit „Effekt“: „Ablehnen“. Überprüfen Sie dann diese Anweisungen auf Verweise auf das Präfix oder Objekt, auf das Sie nicht zugreifen können. Diese Bucket-Richtlinie verweigert beispielsweise allen Benutzern den Zugriff auf das Präfix abc/* in DOC-EXAMPLE-BUCKET:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
        }
      ]
    }
  6. Ändern Sie die Bucket-Richtlinie, um beliebige „Effekt“: „Ablehnen“-Anweisungen zu bearbeiten oder zu entfernen, die Ihnen fälschlicherweise den Zugriff auf das Präfix oder Objekt verweigern.

Einschränkungen in Ihrer IAM-Benutzerrichtlinie

  1. Öffnen Sie die IAM-Konsole.

  2. Öffnen Sie in der Konsole den IAM-Benutzer oder die IAM-Rolle, die Sie für den Zugriff auf das Präfix oder Objekt verwenden.

  3. Erweitern Sie auf der Registerkarte Berechtigungen Ihres IAM-Benutzers oder Ihrer IAM-Rolle jede Richtlinie, um das zugehörige JSON-Richtliniendokument anzuzeigen.

  4. Suchen Sie in den JSON-Richtliniendokumenten nach Richtlinien für den Zugriff auf Amazon S3. Suchen Sie dann in diesen Richtlinien nach beliebigen „Effekt“: „Ablehnen“-Anweisungen, die Ihren Zugriff auf das Präfix oder Objekt blockieren.

    Die folgende IAM-Richtlinie hat beispielsweise eine „Effekt“: „Ablehnen“-Anweisung, die den Zugriff der IAM-Identität auf das Präfix abc/* in DOC-EXAMPLE-BUCKET blockiert. Die Richtlinie hat zudem eine „Effekt“: „Erlauben“-Anweisung, die Zugriff auf DOC-EXAMPLE-BUCKET gewährt. Trotz der Erlauben-Anweisung für den gesamten Bucket verhindert die explizite Ablehnen-Anweisung, dass die IAM-Identität auf das Präfix abc/* zugreift:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
          ]
        },
        {
          "Sid": "StatementFullPermissionS3",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
  5. Ändern Sie die Richtlinie, um beliebige „Effekt“: „Ablehnen“-Anweisungen zu bearbeiten oder zu entfernen, die Ihnen fälschlicherweise den Zugriff auf das Präfix oder Objekt verweigern.

Berechtigungen für von AWS KMS verschlüsselte Objekte

Wenn ein Objekt mit einem AWS KMS-Schlüssel verschlüsselt ist, benötigen Sie Berechtigungen sowohl für das Objekt als auch für den Schlüssel. Überprüfen Sie, ob Sie nicht auf das Objekt zugreifen können, da Sie Berechtigungen für einen AWS-KMS-Schlüssel benötigen:

  1. Verwenden Sie die Amazon S3-Konsole, um die Eigenschaften eines der Objekte anzuzeigen, auf die Sie nicht zugreifen können. Überprüfen Sie die Verschlüsselungs-Eigenschaften des Objekts.

  2. Wenn das Objekt mit einem benutzerdefinierten AWS-KMS-Schlüssel (KMS-Schlüssel) verschlüsselt ist, überprüfen Sie die KMS-Schlüsselrichtlinie. Vergewissern Sie sich, dass die Schlüsselrichtlinie es Ihrer IAM-Identität ermöglicht, die folgenden KMS-Aktionen auszuführen:

    "Action": ["kms:Decrypt"]
  3. Wenn Ihrer IAM-Identität Berechtigungen für eine dieser Aktionen fehlen, ändern Sie die Schlüsselrichtlinie, um die fehlenden Berechtigungen zu gewähren.

Wichtig: Wenn Ihre IAM-Identität und Ihr AWS-KMS-Schlüssel zu verschiedenen Konten gehören, stellen Sie sicher, dass Sie über die richtigen Berechtigungen verfügen. Sowohl Ihr IAM als auch Ihre wichtigsten Richtlinien müssen Ihnen Berechtigungen für die erforderlichen KMS-Aktionen gewähren.

Ähnliche Informationen

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

Wie kann ich einem Benutzer Zugriff auf einen bestimmten Ordner in meinem Amazon S3-Bucket gewähren?

Muss ich den AWS-KMS-Schlüssel angeben, wenn ich ein KMS-verschlüsseltes Objekt von Amazon S3 herunterlade?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 8 Monaten