Fehlerbehebung bei Laufzeitfehlern für AccessControl-Richtlinien
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid. Apigee Edge-Dokumentation aufrufen.
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.
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 beispielsweise 104.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 im faultstring angegeben sind (Schritt 1 oben).
Die folgende Richtlinie definiert beispielsweise die <SourceAddress>-IP-Adresse als 104.132.196.83,, was mit dem Inhalt in faultstring übereinstimmt:
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 im Bereich Phasendetails 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.
Proxy, Antwortstatuscode, Proxy-Client-IP und X-Forwarded-For-IP 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 Attribut action auf DENY 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:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[[["\u003cp\u003eThis documentation pertains to the \u003ccode\u003eaccesscontrol.IPDeniedAccess\u003c/code\u003e error in Apigee and Apigee hybrid, which occurs when a client IP is denied access by an Access Control Policy.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eaccesscontrol.IPDeniedAccess\u003c/code\u003e error is triggered when the client's IP address, or an IP passed in the request, matches an IP in the \u003ccode\u003e<SourceAddress>\u003c/code\u003e element within the \u003ccode\u003e<MatchRule>\u003c/code\u003e of an Access Control Policy with the \u003ccode\u003eaction\u003c/code\u003e attribute set to \u003ccode\u003eDENY\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo diagnose the issue, identify the denied IP address from the \u003ccode\u003efaultstring\u003c/code\u003e in the error response, and locate the corresponding Access Control Policy where the IP is listed in the \u003ccode\u003e<SourceAddress>\u003c/code\u003e element.\u003c/p\u003e\n"],["\u003cp\u003eThe source IP address can be determined by examining the \u003ccode\u003eproxy.client.ip\u003c/code\u003e variable in a UI Trace or by creating a custom report that includes Proxy, Response Status Code, Proxy Client IP, and X-Forwarded-For-IP as dimensions.\u003c/p\u003e\n"],["\u003cp\u003eResolving this error involves either confirming the intended denial of access or modifying the Access Control Policy to allow the specific IP address by changing the \u003ccode\u003eaction\u003c/code\u003e to \u003ccode\u003eALLOW\u003c/code\u003e or removing the Access Control Policy altogether.\u003c/p\u003e\n"]]],[],null,["# AccessControl policy runtime error troubleshooting\n\n*You're viewing **Apigee** and **Apigee hybrid** documentation.\nView [Apigee Edge](https://docs.apigee.com/api-platform/troubleshoot/policies/runtime/access-control-runtime-errors) documentation.*\n| **Note:** Was this troubleshooting playbook helpful? Please let us know by clicking [Send Feedback]().\n\nIPDeniedAccess\n--------------\n\n### Error code\n\n accesscontrol.IPDeniedAccess\n\n### Error response body\n\n```scdoc\n{\n \"fault\": {\n \"faultstring\": \"Access Denied for client ip : client_IP\",\n \"detail\": {\n \"errorcode\": \"accesscontrol.IPDeniedAccess\"\n }\n }\n}\n```\n\n### Example error message\n\n {\n \"fault\": {\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\",\n \"detail\": {\n \"errorcode\": \"accesscontrol.IPDeniedAccess\"\n }\n }\n }\n\n### Cause\n\nThis error occurs if the client IP address, or any IP address passed as part of the API request, matches any IP address(es) specified in the `\u003cSourceAddress\u003e` element within the `\u003cMatchRule\u003e` element of the Access Control Policy, and the `action` attribute of the `\u003cMatchRule\u003e` element is set to `DENY`.\n\nFor example, let's say the `\u003cSourceAddress\u003e` is defined as shown below: \n\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n\nIf the above IP address matches the IP address of the client system (indicated by the variable `proxy.client.ip`), or any of the IP addresses passed as part of the API request, the error will occur.\n\n### Diagnosis\n\n1. Identify the IP address(es) denied access for a specific API request. You can find this information in the `faultstring` element of the error response.\n\n For example, in the following `faultstring`, the IP address is `104.132.196.83:` \n\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\"\n\n2. Examine all the Access Control policies in the failed API Proxy and determine the specific policy where the IP address(es) specified in the `\u003cSourceAddress\u003e` element matches the IP address(es) identified in the `faultstring` (Step 1 above).\n\n For example, the following policy defines the `\u003cSourceAddress\u003e` IP as `104.132.196.83,` which matches what is in the `faultstring`: \n\n \u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?\u003e\n \u003cAccessControl async=\"false\" continueOnError=\"false\" enabled=\"true\" name=\"Access-Control\"\u003e\n \u003cDisplayName\u003eAccess-Control\u003c/DisplayName\u003e\n \u003cProperties/\u003e\n \u003cIPRules noRuleMatchAction=\"ALLOW\"\u003e\n \u003cMatchRule action=\"DENY\"\u003e\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n \u003c/MatchRule\u003e\n \u003c/IPRules\u003e\n \u003c/AccessControl\u003e\n\n3. Determine the IP address(es) from which the API request was made. This can be done in multiple ways:\n\n 1. Using UI Trace\n\n 1. Capture the trace for the failing API request.\n 2. Select the specific Access Control Policy that has failed from the right hand panel.\n 3. In the **Phase Details** pane, check the value of the variable `proxy.client.ip` as shown in the following screenshot of a sample trace.\n\n 4. If the `proxy.client.ip` is not listed, then check the value of the\n X-Forwarded-For or True-Client-IP message headers.\n\n 2. Using Custom Reports\n\n You can create Custom Reports to determine whether a 403 status code was thrown during the execution of the Access Control policy within the API proxy and also determine the client IP address. This is particularly useful if the issue has occurred in the past or if the issue is intermittent and you are unable to capture the trace in UI.\n\n Refer to [Creating and managing custom reports](/apigee/docs/api-platform/analytics/create-custom-reports) to understand how to create custom reports. In the custom report, choose:\n 1. **Sum of Traffic** as a Metric, and\n\n 2. **Proxy** , **Response Status Code** , **Proxy Client IP** , and **X-Forwarded-For-IP** as Dimensions.\n\n This should help you to determine the client IP or IP addresses passed that led to the error.\n4. If the client IP address (indicated by the variable `proxy.client.ip`), or any IP address passed as part of the API request, matches the IP address(es) specified in the `\u003cSourceAddress\u003e` element within the `\u003cMatchRule\u003e` element of Access Control Policy, where the `action` attribute is set to `DENY`, then that is the cause of the error.\n\n In the example shown above, the value set in the reference variable `proxy.client.ip` (as seen in the screenshot of the trace above) matches the IP address defined in the `\u003cSourceAddress\u003e` element of the Access Control policy, thus triggering the error response: \n\n \"faultstring\": \"Access Denied for client ip : 104.132.196.83\"\n\n### Resolution\n\nIf the Access Control policy is intended to deny access to API requests coming from the specific IP address(es) listed in the `faultstring`, then the error message is expected. In this case, there is no additional action is required.\n\nHowever, if you determine that the specific IP address(es) can be given access to the API requests for the specific API Proxy, then modify the Access Control Policy to allow access to those IP address(es). Alternatively, you can remove the Access Control Policy from the API Proxy if you don't want to deny access to any IP address(es).\n\nHere is an example that shows how to allow access to a specific IP Address `104.132.196.83` only and deny access for the rest: \n\n \u003cAccessControl name=\"ACL\"\u003e\n \u003cIPRules noRuleMatchAction = \"DENY\"\u003e\n \u003cMatchRule action = \"ALLOW\"\u003e\n \u003cSourceAddress mask=\"32\"\u003e104.132.196.83\u003c/SourceAddress\u003e\n \u003c/MatchRule\u003e\n \u003c/IPRules\u003e\n \u003c/AccessControl\u003e"]]