Wie kann ich Fehler aufgrund eines verweigerten Zugriffs beheben, wenn ich API Gateway-APIs mit einer ressourcenbasierten Richtlinie aufrufe?
Ich erhalte deine Fehlermeldung aufgrund eines verweigerten Zugriffs, wenn ich eine Amazon API Gateway-API-Operation mit einer Ressourcenrichtlinie aufrufe.
Lösung
Befolge diese Schritte zur Problembehandlung der öffentlichen oder privaten API-Gateway-API-Operation.
Öffentliche API-Operationen
1. Prüfe, ob die API-Operation über eine Ressourcenrichtlinie verfügt, die die Anforderung auf der Grundlage von IP-Adressen zulässt oder blockiert. Wenn du keine Zugriffsprotokollierung eingerichtet hast, richte die Zugriffsprotokollierung für API Gateway ein. Zugriffsprotokolle enthalten die Quell-IP-Adressen für deine API-Operationen. Vergewissere dich, dass die IP-Adresse nicht in der Verweigerungsliste enthalten ist. Die IP-Adresse oder der CIDR-Bereich müssen den Zugriff in der Ressourcenrichtlinie explizit zulassen.
Beispiel für eine Ressourcenrichtlinie, die nur drei IP-Adressen zulässt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*" }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "52.36.146.106", "34.216.36.206/32", "205.251.233.179/32" ] } } } ] }
Beispiel für eine Ressourcenrichtlinie, die zwei IP-Adressen blockiert:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:<region>:<account_number>:<api_id>/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:<region>:<account_number>:<api_id>/*" ], "Condition" : { "IpAddress": { "aws:SourceIp": ["52.36.146.106", "34.216.36.206/32" ] } } } ] }
2. Die HTTP-Methode (GET, POST) und die API-Gateway-Ressource (/,/foo,/foo/bar) für die API-Anforderung müssen den Zugriff explizit zulassen. Überprüfe das Ressourcenrichtlinienattribut ähnlich dem folgenden:
"Resource": [ "arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*" ],
3. Prüfe, ob die Ressourcenrichtlinie andere Arten von Authentifizierungsmethoden oder Genehmigern verwendet. Die API Gateway-Bewertung der Ressourcenrichtlinie wird vom Authentifizierungstyp beeinflusst. Zu den Authentifizierungstypen gehören beispielsweise ein AWS Lambda Authorizer oder eine Amazon Cognito-Authentifizierung. Stelle sicher, dass die Ressourcenrichtlinie für den für die API definierten Authentifizierungstyp korrekt konfiguriert ist.
4. Stelle sicher, dass du die API-Anforderung erneut bereitstellst, damit alle Änderungen wirksam werden. Um die API-Anforderung erneut bereitzustellen, wiederhole die Schritte zur Bereitstellung einer REST-API in einer Stufe.
5. Wenn du ein Beispiel für eine API Gateway-Ressourcenrichtlinie verwendest, stelle sicher, dass du alle Variablen für deine Umgebung konfiguriert hast.
6. Wenn die Ressourcenrichtlinie nur den Zugriff auf IP-Adressen innerhalb der Amazon Virtual Private Cloud (Amazon VPC) zulässt, gehe wie folgt vor:
Erlaube in der Ressourcenrichtlinie den Zugriff auf die Router-IP-Adresse und die NAT-Gateway-IP-Adresse (öffentliche IP-Adresse).
-oder-
Ändere den öffentlichen API-Endpunkt in einen privaten API-Endpunkt.
Private API-Operationen
1. Wenn die Ressourcenrichtlinie einen Amazon VPC-Endpunkt hat, überprüfe die Richtlinie für den Bedingungsschlüssel. Wenn die Ressourcenrichtlinie den Bedingungsschlüssel aws:SourceVpce verwendet, muss ihr Wert die Amazon VPC-Endpunkt-ID sein, nicht die VPC-ID. Wenn die Ressourcenrichtlinie den Bedingungsschlüssel aws:SourceVpc verwendet, muss ihr Wert die Amazon VPC-ID sein, nicht die VPC-Endpunkt-ID.
Um den Endpunkttyp zu überprüfen, öffne die Amazon VPC-Konsole, wähle Endpunkte und dann deinen Endpunkt aus.
2. Stelle sicher, dass du die API-Anforderung erneut bereitstellst, damit alle Änderungen wirksam werden. Um die API-Anforderung erneut bereitzustellen, wiederhole die Schritte zur Bereitstellung einer REST-API in einer Stufe.
3. Wenn du ein Beispiel für eine API Gateway-Ressourcenrichtlinie verwendest, stelle sicher, dass du alle Variablen für die Umgebung konfigurierst.
4. Die HTTP-Methode (GET, POST) und die API-Gateway-Ressource (/,/foo,/foo/bar) für die API-Anforderung müssen den Zugriff explizit zulassen. Überprüfe das Ressourcenrichtlinienattribut ähnlich dem folgenden:
"Resource": [ "arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*" ],
5. Prüfe, ob die Ressourcenrichtlinie andere Arten von Authentifizierungsmethoden oder Genehmigern verwendet. Die API Gateway-Bewertung der Ressourcenrichtlinie wird vom Authentifizierungstyp beeinflusst. Zu den Authentifizierungstypen gehören beispielsweise ein AWS Lambda Authorizer oder eine Amazon Cognito-Authentifizierung. Stelle sicher, dass die Ressourcenrichtlinie für den für die API definierten Authentifizierungstyp korrekt konfiguriert ist.
- Sprache
- Deutsch
