אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
IPDeniedAccess
קוד שגיאה
accesscontrol.IPDeniedAccess
גוף תגובת השגיאה
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
סיבה
השגיאה הזו מתרחשת אם כתובת ה-IP של הלקוח, או כל כתובת IP שמועברת כחלק מבקשת ה-API, תואמת לכתובות ה-IP שצוינו ברכיב <SourceAddress> בתוך הרכיב <MatchRule> של מדיניות בקרת הגישה, והמאפיין action של הרכיב <MatchRule> מוגדר לערך DENY.
לדוגמה, נניח שהמאפיין <SourceAddress> מוגדר כמו שמוצג בהמשך:
<SourceAddress mask="32">104.132.196.83</SourceAddress>
השגיאה תתרחש אם כתובת ה-IP שלמעלה תהיה זהה לכתובת ה-IP של מערכת הלקוח (שמצוינת על ידי המשתנה proxy.client.ip) או לכל אחת מכתובות ה-IP שמועברות כחלק מבקשת ה-API.
אבחון
מזהים את כתובות ה-IP שהגישה אליהן נדחתה עבור בקשת API ספציפית. אפשר למצוא את המידע הזה ברכיב
faultstringשל תגובת השגיאה.לדוגמה, בכתובת
faultstring, כתובת ה-IP היא104.132.196.83:"faultstring": "Access Denied for client ip : 104.132.196.83"בודקים את כל כללי בקרת הגישה ב-API Proxy שנכשל וקובעים את המדיניות הספציפית שבה כתובות ה-IP שצוינו ברכיב
<SourceAddress>תואמות לכתובות ה-IP שזוהו ברכיבfaultstring(שלב 1 למעלה).לדוגמה, במדיניות הבאה מוגדרת כתובת ה-IP
<SourceAddress>כ-104.132.196.83,, שמתאימה למה שמופיע ב-faultstring:<?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>קובעים את כתובות ה-IP שממנה נשלחה בקשת ה-API. אפשר לעשות זאת בכמה דרכים:
שימוש ב-UI Trace
- משיגים את נתוני המעקב של בקשת ה-API שנכשלה.
- בחלונית השמאלית, בוחרים את מדיניות בקרת הגישה הספציפית שנכשלה.
בודקים את הערך של המשתנה
proxy.client.ipכמו שמוצג בצילום המסך הבא של דוגמה למעקב.
אם
proxy.client.ipלא מופיע ברשימה, צריך לבדוק את הערך של כותרות ההודעה X-Forwarded-For או True-Client-IP.
שימוש בדוחות בהתאמה אישית
אתם יכולים ליצור דוחות בהתאמה אישית כדי לבדוק אם קוד הסטטוס 403 הוחזר במהלך ההרצה של מדיניות בקרת הגישה ב-proxy ל-API, וגם כדי לזהות את כתובת ה-IP של הלקוח. האפשרות הזו שימושית במיוחד אם הבעיה התרחשה בעבר או אם הבעיה מתרחשת לסירוגין ואין אפשרות לצלם את הנתונים בממשק המשתמש.
במאמר יצירה וניהול של דוחות בהתאמה אישית מוסבר איך ליצור דוחות בהתאמה אישית. בדוח בהתאמה אישית, בוחרים:
Sum of Traffic כמדד, וגם
Proxy, Response Status Code, Proxy Client IP ו-X-Forwarded-For כמאפיינים.
המידע הזה אמור לעזור לכם לקבוע את כתובת ה-IP של הלקוח או את כתובות ה-IP שהועברו והובילו לשגיאה.
אם כתובת ה-IP של הלקוח (שמצוינת על ידי המשתנה
proxy.client.ip) או כל כתובת IP שמועברת כחלק מבקשת ה-API תואמת לכתובות ה-IP שצוינו ברכיב<SourceAddress>בתוך הרכיב<MatchRule>של מדיניות בקרת הגישה, כאשר המאפייןactionמוגדר לערךDENY, אז זה הגורם לשגיאה.בדוגמה שלמעלה, הערך שמוגדר במשתנה ההפניה
proxy.client.ip(כפי שרואים בצילום המסך של המעקב למעלה) תואם לכתובת ה-IP שמוגדרת ברכיב<SourceAddress>של מדיניות בקרת הגישה, ולכן מופעלת תגובת השגיאה:"faultstring": "Access Denied for client ip : 104.132.196.83"
רזולוציה
אם מדיניות בקרת הגישה נועדה לדחות בקשות ל-API שמגיעות מכתובות ה-IP הספציפיות שמפורטות ב-faultstring, הודעת השגיאה צפויה. במקרה כזה, לא נדרשת פעולה נוספת.
עם זאת, אם קובעים שכתובות ה-IP הספציפיות יכולות לקבל גישה לבקשות ה-API של שרת ה-API הספציפי, צריך לשנות את מדיניות בקרת הגישה כדי לאפשר גישה לכתובות ה-IP האלה. לחלופין, אפשר להסיר את מדיניות בקרת הגישה מ-API Proxy אם לא רוצים לחסום גישה לכתובות IP כלשהן.
הנה דוגמה שמראה איך לאפשר גישה רק לכתובת IP ספציפית 104.132.196.83 ולמנוע גישה לכל השאר:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>