Warum erhalten IAM-Benutzer eines anderen AWS-Kontos die Fehlermeldung verweigertes Zugriff, obwohl meine Bucket-Richtlinie vollen Zugriff auf dieses Konto gewährt?

Lesedauer: 8 Minute
0

Die Richtlinie meines Amazon Simple Storage Service (Amazon S3) -Buckets gewährt vollen Zugriff auf ein anderes AWS-Konto. Wenn jedoch AWS Identity and Access Management (IAM) -Benutzer von diesem Konto aus versuchen, auf meinen Bucket zuzugreifen, erhalten sie die Fehlermeldung Zugriff verweigert.

Kurze Beschreibung

Wenn Ihre Bucket-Richtlinie bereits Zugriff auf das andere Konto gewährt, können kontoübergreifende Benutzer aus den folgenden Gründen Zugriffsverweigerungsfehler erhalten:

  • Die IAM-Richtlinie des Benutzers gewährt keinen Zugriff auf den Bucket.
  • Das Objekt wird vom AWS Key Management Service (AWS KMS) verschlüsselt, und der Benutzer hat keinen Zugriff auf den AWS KMS-Schlüssel.
  • Eine Deny-Anweisung in der Bucket-Richtlinie oder IAM-Richtlinie blockiert den Zugriff des Benutzers.
  • Die Endpunktrichtlinie von Amazon Virtual Private Cloud (Amazon VPC) blockiert den Zugriff auf den Bucket.
  • Die Servicekontrollrichtlinie von AWS Organizations blockiert den Zugriff auf den Bucket.
  • Das Objekt gehört nicht zu dem AWS-Konto, dem der Bucket gehört.
  • Sie haben Requester Pays für den Bucket aktiviert.
  • Sie haben eine Sitzungsrichtlinie verabschiedet, die den Zugriff auf den Bucket blockiert.

Auflösung

**Hinweis:**Wenn Sie beim Ausführen von Befehlen der AWS-Befehlszeilenschnittstelle (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version verwenden.

Die IAM-Richtlinie des Benutzers gewährt keinen Zugriff auf den Bucket

Stellen Sie für den kontenübergreifenden Zugriff sicher, dass Sie in der IAM-Richtlinie in Konto A und in der Bucket-Richtlinie in Konto B den Bucket-Zugriff gewähren.

Gehen Sie wie folgt vor, um die IAM-Richtlinie des Benutzers in Konto A zu überprüfen:

1.Öffnen Sie die IAM-Konsole.

2.Öffnen Sie in der Konsole den IAM-Benutzer oder die IAM-Rolle, der oder die nicht auf den Bucket zugreifen kann.

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

4.Suchen Sie in den JSON-Richtliniendokumenten nach Richtlinien mit dem Namen des Buckets. Vergewissern Sie sich dann, dass diese Richtlinien die richtigen S3-Aktionen für den Bucket zulassen.

5.Wenn der IAM-Benutzer oder die IAM-Rolle keinen Zugriff auf den Bucket gewährt, fügen Sie eine Richtlinie hinzu, die die richtigen Berechtigungen gewährt. Die folgende IAM-Richtlinie gewährt einem Benutzer beispielsweise Zugriff auf das Herunterladen von Objekten (s3:getObject) aus DOC-EXAMPLE-BUCKET:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": "s3:GetObject",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

Das Objekt wird von AWS KMS verschlüsselt, und der Benutzer hat keinen Zugriff auf den AWS KMS-Schlüssel

Wenn sowohl die IAM-Richtlinie (Konto A) als auch die Bucket-Richtlinie (Konto B) kontoübergreifenden Zugriff gewähren, überprüfen Sie den Bucket auf Standardverschlüsselung mit AWS KMS. Oder überprüfen Sie die Eigenschaften des Objekts auf die AWS-KMS-Verschlüsselung. Wenn ein Objekt mit einem AWS KMS-Schlüssel verschlüsselt ist, muss der Benutzer auch über die erforderlichen Berechtigungen verfügen, um den Schlüssel zu verwenden.

Gehen Sie wie folgt vor, um einem IAM-Benutzer die Berechtigungen zum Herunterladen und Hochladen in einen Bucket zu gewähren, wenn er einen KMS-Schlüssel für die Verschlüsselung verwendet:

1.Bearbeiten Sie die KMS-Schlüsselrichtlinie, um eine Anweisung hinzuzufügen, die der folgenden ähnelt:

**Hinweis:**Geben Sie den Amazon Resource Name (ARN) des IAM-Benutzers als Principal ein.

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

2.Wenn der KMS-Schlüssel zu demselben Konto gehört wie der IAM-Benutzer, müssen Sie die Schlüsselrichtlinie nicht aktualisieren. Wenn der KMS-Schlüssel zu einem anderen Konto gehört als der IAM-Benutzer, müssen Sie auch die Berechtigungen des IAM-Benutzers aktualisieren. Fügen Sie eine IAM-Richtlinienerklärung hinzu, die der folgenden ähnelt:

Hinweis: Geben Sie den ARN des KMS-Schlüssels als Ressource ein.

{
  "Sid": "KMSAccess",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}

Eine Deny-Anweisung in der Bucket-Richtlinie oder der IAM-Richtlinie blockiert den Zugriff des Benutzers

Überprüfen Sie die Bucket-Richtlinie und die IAM-Richtlinien des Benutzers auf Anweisungen, die dem Benutzer ausdrücklich den Zugriff auf den Bucket verweigern.

Gehen Sie wie folgt vor, um die Bucket-Richtlinie zu überprüfen:

1.Öffnen Sie die Amazon S3-Konsole.

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

3.Wählen Sie den Registerkarte Berechtigungen.

4.Wählen Sie Bucket-Richtlinie.

5.Suchen Sie nach Aussagen mit „Wirkung“: „Ablehnen“.

6.Ändern Sie die Bucket-Richtlinie, um einen beliebigen „Effekt“ zu bearbeiten oder zu entfernen: „Deny“-Anweisungen, die dem Benutzer den Zugriff auf den Bucket verweigern.

Gehen Sie wie folgt vor, um die IAM-Richtlinien des Benutzers zu überprüfen:

1.Öffnen Sie die IAM-Konsole.

2.Öffnen Sie in der Konsole den IAM-Benutzer oder die IAM-Rolle, der oder die nicht auf den Bucket zugreifen kann.

3.Erweitern Sie auf der Registerkarte Berechtigungen des IAM-Benutzers oder der IAM-Rolle jede Richtlinie, um die JSON-Richtliniendokumente anzuzeigen.

4.Suchen Sie in den JSON-Richtliniendokumenten nach Richtlinien, die sich auf den S3-Bucket beziehen und Anweisungen enthalten, die „Effect“ enthalten: „Ablehnen“.

5.Ändern Sie die IAM-Berechtigungsrichtlinien des Benutzers, um „Effect“ zu bearbeiten oder zu entfernen: „Deny“-Anweisungen, die fälschlicherweise dem Benutzer den Zugriff auf den Bucket verweigern.

Die VPC-Endpunktrichtlinie blockiert den Zugriff auf den Bucket

Wenn Benutzer mit einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance, die über einen VPC-Endpunkt geleitet wird, auf den Bucket zugreifen, überprüfen Sie die VPC-Endpunktrichtlinie. Vergewissern Sie sich, dass die VPC-Endpunktrichtlinie die richtigen Berechtigungen für den Zugriff auf den S3-Bucket enthält.

Die folgende VPC-Endpunktrichtlinie ermöglicht beispielsweise den Zugriff auf DOC-EXAMPLE-BUCKET:

{
  "Id": "Policy1234567890123",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1234567890123",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": "*"
    }
  ]
}

**Warnung:*Das Element ** „Principal“: „\ gewährt jedem, der den VPC-Endpunkt verwendet, Zugriff auf den Bucket. Stellen Sie sicher, dass Sie den Umfang des Principal-Werts entsprechend Ihrem Anwendungsfall einschränken.

Die Service Control-Richtlinie von AWS Organizations blockiert den Zugriff auf den Bucket

Wenn das Konto des Benutzers AWS Organizations aktiviert hat, überprüfen Sie die Richtlinien zur Servicesteuerung, um sicherzustellen, dass der Zugriff auf Amazon S3 zulässig ist. Die folgende Richtlinie verweigert beispielsweise ausdrücklich den Zugriff auf Amazon S3 und führt zu einem Fehler „Zugriff verweigert“:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

Weitere Informationen zu den Funktionen von AWS Organizations finden Sie unter Alle Funktionen in Ihrer Organisation aktivieren.

Das Objekt gehört nicht zu dem AWS-Konto, dem der Bucket gehört

Standardmäßig gehört ein S3-Objekt dem AWS-Konto, das es hochgeladen hat. Dies gilt auch dann, wenn der Bucket einem anderen Konto gehört. Die Berechtigungen des Buckets gelten nicht automatisch für ein Objekt, wenn das Objekt einem anderen Konto gehört.

Versuchen Sie die folgenden Lösungen, um die Fehler „Zugriff verweigert“ aufgrund des Objektbesitzes zu beheben:

$ aws s3api put-object-acl --bucket examplebucket --key keyname --acl bucket-owner-full-control

**Hinweis:**Um auf das Objekt zuzugreifen, muss der Objekteigentümer dem Bucket-Besitzer explizit Zugriff gewähren. Verwenden Sie daher das Objekteigentümerkonto, um diese Befehle auszuführen.

Sie haben Requester Pays for the Bucket aktiviert

Wenn Sie Requester Pays für Ihren Bucket aktiviert haben, müssen Benutzer anderer Konten den Parameter request-Payer angeben, wenn sie Anfragen an Ihren Bucket senden. Andernfalls erhalten diese Benutzer die Fehlermeldung Zugriff verweigert.

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

  • Fügen Sie für DELETE-, GET-, HEAD-, POST- und PUT-Anfragen x-amz-request-payer: requester in den Header ein.
  • Fügen Sie für signierte URLs x-amz-request-payer=requester in die Anfrage ein.
  • Geben Sie für AWS-CLI-Befehle den Parameter**--request-payer** an. Beispiel:
$ aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester

Sie haben eine Sitzungsrichtlinie verabschiedet, die den Zugriff auf den Bucket blockiert

Eine Sitzungsrichtlinie ist eine Inline-Richtlinie, die Sie schnell erstellen und in der Sitzung weitergeben können, während Sie die Rolle übernehmen. Sie können die Sitzungsrichtlinie weitergeben, um die Berechtigungen der Rollensitzung weiter zu erweitern. Sitzungsrichtlinien sind erweiterte Richtlinien, die Sie als Parameter übergeben, wenn Sie programmgesteuert eine temporäre Sitzung für eine Rolle oder einen Verbundbenutzer erstellen. Die effektiven Sitzungsberechtigungen sind der Schnittpunkt der identitätsbasierten Richtlinien der Rolle und der Sitzungsrichtlinie. Stellen Sie daher sicher, dass die von Ihnen übergebene Sitzungsrichtlinie den Zugriff auf den S3-Bucket nicht blockiert.

Verwandte Informationen

Wie behebe ich Fehler 403 Access Denied von Amazon S3?

Warum erhalten kontoübergreifende Benutzer die Fehlermeldung „Zugriff verweigert“, wenn sie versuchen, auf meinen Bucket zuzugreifen, der mit einem benutzerdefinierten AWS KMS-Schlüssel verschlüsselt ist?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr