Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. info
IPDeniedAccess
Fehlercode
accesscontrol.IPDeniedAccess
Fehlerantworttext
{ "fault": { "faultstring": "Access Denied for client ip : client_IP", "detail": { "errorcode": "accesscontrol.IPDeniedAccess" } } }
Beispiel für Fehlermeldung
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Client-IP-Adresse oder eine im Rahmen der API-Anfrage übergebene IP-Adresse mit allen IP-Adressen übereinstimmt, die im Element <SourceAddress>
des Elements <MatchRule>
der Zugriffssteuerungsrichtlinie angegeben ist und das Attribut action
des Elements <MatchRule>
ist auf DENY
festgelegt.
Angenommen, <SourceAddress>
ist so definiert:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
Der Fehler tritt auf, wenn die oben angegebene IP-Adresse mit der IP-Adresse des Clientsystems (durch die Variable proxy.client.ip
angegeben) oder einer der IP-Adressen übereinstimmt, die als Teil der API-Anfrage übergeben wurden.
Diagnose
Identifizieren Sie die IP-Adressen, für die der Zugriff für eine bestimmte API-Anfrage verweigert wurde. Sie finden diese Informationen im Element
faultstring
der Fehlerantwort.Im folgenden
faultstring
ist die IP-Adresse beispielsweise104.132.196.83:
."faultstring": "Access Denied for client ip : 104.132.196.83"
Prüfen Sie alle Zugriffssteuerungsrichtlinien im fehlgeschlagenen API-Proxy und ermitteln Sie die spezifische Richtlinie, bei der die im
<SourceAddress>
-Element angegebenen IP-Adressen den IP-Adressen entsprechen, die imfaultstring
angegeben sind (Schritt 1 oben).Die folgende Richtlinie definiert beispielsweise die
<SourceAddress>
-IP-Adresse als104.132.196.83,
, was mit dem Inhalt infaultstring
übereinstimmt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control"> <DisplayName>Access-Control</DisplayName> <Properties/> <IPRules noRuleMatchAction="ALLOW"> <MatchRule action="DENY"> <SourceAddress mask="32">104.132.196.83</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Ermitteln Sie die IP-Adressen, von denen die API-Anfrage gesendet wurde. Dafür gibt es mehrere Möglichkeiten:
UI-Trace verwenden
- Erfassen Sie den Trace für die fehlgeschlagene API-Anfrage.
- Wählen Sie im rechten Bereich die gewünschte Zugriffssteuerungsrichtlinie aus.
Prüfen Sie den Wert der Variablen
proxy.client.ip
, wie im folgenden Screenshot eines Beispiel-Traces gezeigt.Wenn
proxy.client.ip
nicht aufgeführt ist, prüfen Sie den Wert des Nachrichtenheaders X-Forwarded-For oder True-Client-IP.
Benutzerdefinierte Berichte verwenden
Sie können benutzerdefinierte Berichte erstellen, um festzustellen, ob während der Ausführung der Zugriffssteuerungsrichtlinie innerhalb des API-Proxys ein 403-Statuscode ausgegeben wurde und wie die IP-Adresse des Clients lautet. Dies ist besonders hilfreich, wenn das Problem in der Vergangenheit aufgetreten ist oder wenn es sich um ein nur gelegentlich auftretendes Problem handelt und Sie den Trace nicht in der Benutzeroberfläche erfassen können.
Informationen zum Erstellen benutzerdefinierter Berichte finden Sie unter Benutzerdefinierte Berichte erstellen und verwalten. Wählen Sie im benutzerdefinierten Bericht Folgendes aus:
Summe der Zugriffe als Messwert und
Proxy, Antwortstatuscode, Proxy-Client-IP und X-Forwarded-For als Dimensionen.
So können Sie herausfinden, welche Client-IP- oder IP-Adressen weitergegeben wurden, die zum Fehler führten.
Wenn die Client-IP-Adresse (durch die Variable
proxy.client.ip
angegeben) oder eine beliebige IP-Adresse, die als Teil der API-Anfrage übergeben wird, mit den IP-Adressen übereinstimmt, die im Element<SourceAddress>
innerhalb des Elements<MatchRule>
der Zugriffssteuerungsrichtlinie angegeben sind, wobei das Attributaction
aufDENY
gesetzt ist, dann ist dies die Fehlerursache.Im obigen Beispiel entspricht der in der Referenzvariable
proxy.client.ip
festgelegte Wert (wie im Screenshot des obigen Trace dargestellt) der IP-Adresse, die im Element<SourceAddress>
der Zugriffssteuerungsrichtlinie definiert ist, wodurch die Fehlerantwort ausgegeben wird:"faultstring": "Access Denied for client ip : 104.132.196.83"
Lösung
Wenn die Zugriffssteuerungsrichtlinie den Zugriff auf API-Anfragen von den im faultstring
aufgeführten IP-Adressen ablehnen soll, wird die Fehlermeldung erwartet. In diesem Fall sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch zu dem Schluss kommen, dass die entsprechenden IP-Adressen Zugriff auf die API-Anfragen für den jeweiligen API-Proxy erhalten können, ändern Sie die Zugriffssteuerungsrichtlinie so, dass der Zugriff auf diese IP-Adressen ermöglicht wird. Alternativ können Sie die Zugriffssteuerungsrichtlinie aus dem API-Proxy entfernen, wenn Sie den Zugriff auf eine oder mehrere IP-Adressen nicht verweigern möchten.
Das folgende Beispiel zeigt, wie Sie nur den Zugriff auf eine bestimmte IP-Adresse 104.132.196.83
gewähren und auf den Rest verweigern:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>