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?