הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
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 שנכשלה.
- בחלונית השמאלית, בוחרים את מדיניות בקרת הגישה הספציפית שנכשלה.
בחלונית Phase Details (פרטי השלב), בודקים את הערך של המשתנה
proxy.client.ip, כמו שמוצג בצילום המסך הבא של דוגמה למעקב.
אם
proxy.client.ipלא מופיע ברשימה, צריך לבדוק את הערך של כותרות ההודעה X-Forwarded-For או True-Client-IP.
שימוש בדוחות בהתאמה אישית
אתם יכולים ליצור דוחות בהתאמה אישית כדי לבדוק אם קוד סטטוס 403 הוחזר במהלך ההרצה של מדיניות בקרת הגישה ב-proxy ל-API, וגם כדי לזהות את כתובת ה-IP של הלקוח. זה שימושי במיוחד אם הבעיה התרחשה בעבר או אם היא מתרחשת לסירוגין ואין לכם אפשרות לתעד את יומן המעקב בממשק המשתמש.
במאמר יצירה וניהול של דוחות בהתאמה אישית מוסבר איך ליצור דוחות בהתאמה אישית. בדוח בהתאמה אישית, בוחרים:
סכום התנועה כמדד, וגם
Proxy, Response Status Code, Proxy Client IP ו-X-Forwarded-For-IP כמאפיינים.
המידע הזה אמור לעזור לכם לקבוע את כתובת ה-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 Proxy הספציפי, אפשר לשנות את מדיניות בקרת הגישה כדי לאפשר גישה לכתובות ה-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>