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