Wie behebe ich AccessDenied-Fehler bei Amazon-SQS-API-Aufrufen?

Letzte Aktualisierung: 03.09.2021

Wenn ich einen API-Aufruf von Amazon Simple Queue Service (Amazon SQS) ausführe, erhalte ich einen AccessDenied-Fehler ähnlich einem der folgenden:

„Beim Aufruf des SendMessage-Vorgangs ist ein Fehler aufgetreten (AccessDenied): Der Zugriff auf die Ressource https://sqs.us-east-1.amazonaws.com/ wurde verweigert.“

„Beim Aufruf des SendMessage-Vorgangs ist ein Fehler aufgetreten (kms.AccessDeniedException): Benutzer: arn:aws:iam። xxxxx:user/xxxx ist nicht berechtigt,: KMS:GenerateDataKey auf Ressource: arn:aws:kms:us-east-1:xxxx:key/xxxx mit einer expliziten Zugriffsverweigerung“

Wie kann ich dieses Problem beheben?

Auflösung

Amazon-SQS-Zugriffsrichtlinie und IAM-Richtlinie

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

  • Entweder die SQS-Zugriffsrichtlinie oder die AWS Identity and Access Management (IAM)-Richtlinie müssen Berechtigungen enthalten, um den Zugriff für die Aktion explizit zuzulassen.
  • Wenn sich die SQS-Warteschlange in einem anderen Konto befindet, müssen sowohl die SQS-Zugriffsrichtlinie als auch die IAM-Richtlinie den Zugriff explizit zulassen.
    Wichtig
    : Eine explizite Verweigerung in beiden Richtlinien überschreibt eine explizite Genehmigung.
  • Wenn die Richtlinie ein Bedingungselement verwendet, überprüfen Sie, ob die Bedingung den Zugriff einschränkt.
  • Wenn sich der Benutzer oder die Rolle in einer Organisation von AWS Organizations befindet, die eine Service-Kontrollrichtlinie (SCP) verwendet, stellen Sie sicher, dass der SCP den Benutzer oder die Rolle nicht blockiert.

Um die IAM-Identität zu bestätigen, die für API-Aufrufe verwendet wird, führen Sie den folgenden AWS-CLI-Befehl get-caller-identity aus:

aws sts get-caller-identity

Weitere Informationen zu Amazon SQS-Zugriffsberechtigungen finden Sie unter Welche Berechtigungen benötige ich für den Zugriff auf eine Amazon-SQS-Warteschlange?

KMS-Berechtigungen

Wenn in Ihrer Amazon-SQS-Warteschlange die serverseitige Verschlüsselung (SSE) aktiviert ist, müssen Berechtigungen sowohl Herstellern als auch Verbrauchern erteilt werden. Die erforderlichen Berechtigungen können durch einen von AWS verwalteten AWS-KMS-Schlüssel oder durch einen vom Kunden verwalteten Schlüssel bereitgestellt werden. Eine vom Kunden verwaltete Schlüsselrichtlinie muss Zugriffsberechtigungen für jeden Warteschlangenhersteller und -Verbraucher enthalten. Oder Sie können die IAM-Richtlinie aktualisieren, um die erforderlichen KMS-Berechtigungen für den KMS-Schlüssel aufzunehmen.

  • Erforderliche Herstellerberechtigungen: kms:GenerateDataKey und kms:Decrypt
  • Erforderliche Verbraucherberechtigungen: KMS:Decrypt

Um von einem anderen Konto aus auf eine SSE-Amazon-SQS-Warteschlange zuzugreifen, muss die Warteschlange einen vom Kunden verwalteten Schlüssel verwenden. Sie können keinen verwalteten AWS-Schlüssel verwenden, da nur vom Kunden verwaltete Schlüsselrichtlinien geändert werden können. Die KMS-Schlüsselrichtlinie muss den kontoübergreifenden Zugriff auf den KMS-Schlüssel ermöglichen, und die IAM-Richtlinie muss Berechtigungen für den Zugriff auf den KMS-Schlüssel enthalten.

Weitere Informationen finden Sie unter Schlüsselverwaltung.

VPC-Endpunktrichtlinie

Wenn Sie über einen Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt auf SQS zugreifen, muss die SQS-VPC-Endpunktrichtlinie den Zugriff zulassen.

Das folgende Beispiel einer VPC-Endpunktrichtlinie legt fest, dass der IAM-Benutzer MyUser Nachrichten an die SQS-Warteschlange MyQueue senden darf. Anderen Aktionen, IAM-Benutzern und SQS-Ressourcen wird der Zugriff über den VPC-Endpunkt verweigert.

{
   "Statement": [{
      "Action": ["sqs:SendMessage"],
      "Effect": "Allow",
      "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue",
      "Principal": {
        "AWS": "arn:aws:iam:123456789012:user/MyUser"
      }
   }]
}

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?