מדיניות AccessControl

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מה

מדיניות בקרת הגישה מאפשרת לכם לאשר או לדחות גישה לממשקי ה-API שלכם לפי כתובות IP ספציפיות.

סרטון: בסרטון הקצר הזה מוסבר איך לאשר או לדחות גישה לממשקי ה-API שלכם לפי כתובות IP ספציפיות.

אפשר לצרף את המדיניות הזו לכל מקום בתהליך של proxy ל-API, אבל כדאי לבדוק את כתובות ה-IP בתחילת התהליך ( Request / ProxyEndpoint / PreFlow), עוד לפני אימות או בדיקת מכסת השימוש.

דוגמאות

ערכי המסכה בדוגמאות הבאות של IPv4 מזהים את אחד מארבעת האוקטטים (8, 16, 24, 32 ביטים) שכלל ההתאמה מתייחס אליהם כשמאשרים או דוחים גישה. ערך ברירת המחדל הוא 32. מידע נוסף מופיע במאמר בנושא המאפיין mask בהפניה לרכיב.

דחייה של 198.51.100.1

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="32">198.51.100.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

דחיית כל הבקשות מכתובת הלקוח: 198.51.100.1

אישור בקשות מכל כתובת של לקוח אחר.

דחיית השימוש במשתנים

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="{kvm.mask.value}">{kvm.ip.value}</SourceAddress>
    </MatchRule>
    </IPRules>
</AccessControl>

נניח שאתם משתמשים במיפוי של זוגות מפתח/ערך (KVM) כדי לאחסן ערכים להסתרת מידע וכתובות IP. זו גישה נוחה לשינוי כתובות IP ולהסתרתן במהלך זמן הריצה, בלי שתצטרכו לעדכן ולפרוס מחדש את שרת ה-proxy של ה-API. אפשר להשתמש במדיניות KeyValueMapOperations כדי לאחזר את המשתנים שמכילים את הערכים של kvm.mask.value ושל kvm.ip.value (בהנחה שזה השם שנתתם למשתנים במדיניות KVM שמכילה את הערכים של המסכה ושל כתובות ה-IP מ-KVM). אם הערכים שאחזרתם היו 24 למסכה ו-198.51.100.1 לכתובת ה-IP, מדיניות AccessControl תדחה את כל הבקשות מ: 198.51.100.*

כל שאר כתובות הלקוחות יורשו.

דחייה של 198.51.100.*

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
    </MatchRule>
    </IPRules>
</AccessControl>

דחיית כל הבקשות מכתובת הלקוח: ‎198.51.100.*‎

אישור בקשות מכל כתובת של לקוח אחר.

‪198.51.*.*

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
       <SourceAddress mask="16">198.51.100.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

דחיית כל הבקשות מכתובת הלקוח: 198.51.*.*

אישור בקשות מכל כתובת של לקוח אחר.

דחייה של 198.51.100.*, הרשאה של 192.0.2.1

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="32">192.0.2.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

דחיית כל הבקשות מכתובת הלקוח: 198.51.100.*, אבל התרת הבקשה מ-192.0.2.1.

אישור בקשות מכל כתובת של לקוח אחר.

Allow 198.51.*.*

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="16">198.51.100.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

התרת כל הבקשות מהכתובת: 198.51.*.*

לדחות בקשות מכל כתובת לקוח אחרת.

הרשאת שימוש בכמה כתובות IP

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
     </MatchRule>
  </IPRules>
</AccessControl>

התרת בקשות מכתובות לקוח: 198.51.100.* ‪192.0.2.* 203.0.113.*

דחיית כל הכתובות האחרות.

דחייה של כמה כתובות IP

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

דחיית בקשות מכתובות לקוח: 198.51.100.* ‪192.0.2.* 203.0.113.*

לאפשר גישה לכל הכתובות האחרות.

אפשר להשתמש בכמה כתובות IP, אי אפשר להשתמש בכמה כתובות IP

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "ALLOW">
      <SourceAddress mask="16">198.51.100.1</SourceAddress>
      <SourceAddress mask="16">192.0.2.1</SourceAddress>
      <SourceAddress mask="16">203.0.113.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

Allow: 198.51.*.* ‫192.0.*.* 203.0.*.*

דחיית קבוצת משנה של הרשימה: 198.51.100.* ‪192.0.2.* 203.0.113.*


הערות שימוש

בנוסף להגנה על ממשקי ה-API מפני כתובות IP זדוניות, מדיניות בקרת הגישה מאפשרת לכם גם לשלוט בגישה של כתובות IP לגיטימיות. לדוגמה, אם רוצים שמחשבים שנמצאים בשליטת הארגון בלבד יוכלו לגשת לממשקי ה-API שמוצגים בסביבת הבדיקה, אפשר לאפשר את טווח כתובות ה-IP של הרשת הפנימית. מפתחים שעובדים מהבית יכולים לגשת לממשקי ה-API האלה באמצעות VPN.

ההגדרה וההפעלה של מדיניות בקרת גישה כוללות את הפעולות הבאות:

  • מגדירים קבוצה של כללי התאמה עם אחת משתי פעולות (ALLOW או DENY) שמשויכות לכל אחד מהם.
  • לכל כלל התאמה, מציינים את כתובת ה-IP (רכיב SourceAddress).
  • מציינים את הסדר שבו הכללים נבדקים.
  • כל כללי ההתאמה מופעלים לפי הסדר שמופיע. כשכלל מתאים, הפעולה המתאימה מבוצעת וכללים נוספים שמתאימים להודעה נדלגים.
    • אם אותו כלל מוגדר עם הפעולות ALLOW ו-DENY, הכלל שמוגדר ראשון בסדר מופעל והכלל הבא (עם הפעולה האחרת) מדלג.

איך המדיניות בוחרת איזו כתובת IP להעריך

כתובות IP יכולות להגיע ממקורות שונים בבקשה. לדוגמה, הכותרת של ההודעה True-Client-IP עשויה להכיל כתובת IP, והכותרת X-Forwarded-For עשויה להכיל כתובת IP אחת או יותר. בקטע הזה מוסבר איך להגדיר את מדיניות AccessControl כדי להעריך את כתובות ה-IP המדויקות שרוצים שהיא תעריך.

הלוגיקה שבה מדיניות AccessControl משתמשת כדי להחליט איזו כתובת IP להעריך:

1. כותרת True-Client-IP

המדיניות בודקת קודם אם יש כתובת IP בכותרת True-Client-IP. אם הכותרת מכילה כתובת IP תקינה, המדיניות מעריכה את הכתובת הזו.

2. כותרת X-Forwarded-For

אם אין כותרת True-Client-IP, או אם הגדרתם את הרכיב <IgnoreTrueClientIPHeader> כ-true, המדיניות בודקת את כתובות ה-IP בכותרת X-Forwarded-For.

‫Edge מאכלס אוטומטית את הכותרת X-Forwarded-For בכתובת ה-IP שהוא קיבל מהלחיצת היד האחרונה של TCP חיצונית (כמו כתובת ה-IP של הלקוח או הנתב). אם יש כמה כתובות IP בכותרת, סביר להניח שהכתובות האלה הן שרשרת השרתים שעיבדו את הבקשה. עם זאת, רשימת הכתובות יכולה להכיל גם כתובת IP מזויפת. אז איך המדיניות יודעת אילו כתובות להעריך?

ההגדרות של הארגון וההגדרות של המדיניות קובעות את הכתובות X-Forwarded-For שהמדיניות חלה עליהן.

קודם כול, בודקים אם המאפיין feature.enableMultipleXForwardCheckForACL מוגדר בארגון. אפשר להשתמש ב-API‏ Get organization כדי לבדוק. לאחר מכן:

  • אם לא רואים את feature.enableMultipleXForwardCheckForACL ברשימת הנכסים של הארגון, המשמעות היא שהנכס מוגדר כ-false (ברירת המחדל). אם המאפיין הזה מוגדר כ-False, המדיניות מעריכה את כתובת ה-last בכותרת (מופיעה בכלי המעקב), שהיא כתובת ה-IP ש-Edge קיבל מהלחיצת היד האחרונה של TCP חיצוני.
  • אם הערך של feature.enableMultipleXForwardCheckForACL בארגון שלכם מוגדר כ-true, צריך להגדיר את הרכיב <ValidateBasedOn> כדי לקבוע את כתובות ה-IP שהמדיניות תבדוק.

שינוי הנכס feature.enableMultipleXForwardCheckForACL

אדמינים בארגון Edge יכולים להשתמש ב-API‏ Update organization properties כדי להגדיר את המאפיין feature.enableMultipleXForwardCheckForACL.

בדוגמה הבאה של API מוגדר הנכס ב-Edge for Private Cloud. אם יש נכסים אחרים שמוגדרים בארגון שלכם, הקפידו לכלול גם אותם. אחרת, הם יוסרו.

curl -u email:password -X POST -H "Content-type:application/xml" http://host:8080/v1/o/myorg -d \
"<Organization type="trial" name="MyOrganization">
    <DisplayName>MyOrganization</DisplayName>
    <Properties>
        <Property name="feature.enableMultipleXForwardCheckForACL">true</Property>
        <!-- Include other existing properties as well. -->
    </Properties>
</Organization>"

ב-Edge for Private Cloud, אחרי שמשנים את הערך של המאפיין feature.enableMultipleXForwardCheckForACL, צריך להפעיל מחדש את מעבדי ההודעות, כמו שמתואר במאמר הפעלה, עצירה והפעלה מחדש של רכיבים בודדים.

מאפייני X-Forwarded-For בניתוח הנתונים של Apigee

‫Edge Analytics כותב את הערך של הכותרת X-Forwarded-For למאפיין x_forwarded_for_ip. כדי לקבוע את כתובת ה-IP של הלקוח ששלח את הבקשה ל-Edge, משתמשים בערכים במימדים ax_true_client_ip או ax_resolved_client_ip. מידע נוסף זמין במאמר בנושא מדדים, מאפיינים ומסננים ב-Analytics.

מידע על אנונימיזציה של כתובות IP באמצעות סימון CIDR

סימון CIDR‏ (Classless Inter-Domain Routing) הוא דרך לציין טווח של כתובות IP באמצעות מיסוך. ההגדרה הזו רלוונטית גם ל-IPv4 וגם ל-IPv6. ככה זה עובד: בדוגמאות שלנו נשתמש ב-IPv4 כדי לפשט את הדברים.

כתובות IP הן קבוצות של מספרים שמופרדים בנקודות. במונחים בינאריים, כל קבוצה היא מספר מסוים של ביטים (8 ל-IPv4 ו-16 ל-IPv6). כתובת ה-IPv4‏ 198.51.100.1 נראית כך בפורמט בינארי:

11000110.00110011.01100100.00000001

כלומר 4 קבוצות של 8 ביט, או 32 ביט בסך הכול. ב-CIDR, אפשר לציין טווח על ידי הוספת ‎/number (1-32) לכתובת ה-IP, כך:

198.51.100.1/24

במקרה הזה, המספר 24 הוא הערך שבו תשתמשו במאפיין mask במדיניות הזו.

הסימון הזה אומר: 'שומרים את 24 הביטים הראשונים בדיוק כמו שהם, והביטים הנותרים יכולים להיות כל ערך מ-0 עד 255'. לדוגמה:

לא לשנות את ההגדרות האלה ערכים אפשריים לקבוצה האחרונה
198.51.100. 0 - 255

שימו לב שהמסכה מופיעה בסוף קבוצה שלוש. כך הכל מסודר וברור, ובעצם נוצרת מסכה כזו: 198.51.100.*. ברוב המקרים, שימוש בכפולות של 8 (IPv4) ו-16 (IPv6) ייתן לכם את רמת המיסוך הרצויה:

IPv4: ‏ 8, ‏ 16, ‏ 24, ‏ 32

IPv6: ‏ ‎16, 32, 48, 64, 80, 96, 112, 128

עם זאת, אפשר להשתמש במספרים אחרים כדי לקבל שליטה מדויקת יותר, שכוללת חישוב בינארי. דוגמה לשימוש במסכה של 30, כמו ב-198.51.100.1/30, שבה הספרה האחרונה 1 היא 00000001 בפורמט בינארי:

לא לשנות את ההגדרות האלה ערכים אפשריים
11000110.00110011.01100100.000000 (ה-30 ביטים הראשונים) ‫00000000,‏ 00000001,‏ 00000010 או 00000011
198.51.100. ‫0, 1, 2 או 3

בדוגמה הזו, כשההגדרה היא <SourceAddress mask="30">198.51.100.1</SourceAddress>, כתובות ה-IP הבאות יקבלו הרשאה (או יידחו, בהתאם לכללים):

  • 198.51.100.0
  • 198.51.100.1
  • 198.51.100.2
  • 198.51.100.3

הפניה לרכיב

הפניה לרכיב מתארת את הרכיבים והמאפיינים של מדיניות בקרת הגישה.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control 1</DisplayName>
    <IPRules noRuleMatchAction = "ALLOW">
        <MatchRule action = "ALLOW">
            <SourceAddress mask="32">198.51.100.1</SourceAddress>
        </MatchRule>
        <MatchRule action = "DENY">
            <SourceAddress mask="24">198.51.100.1</SourceAddress>
        </MatchRule>
    </IPRules>
    <ValidateBasedOn>X_FORWARDED_FOR_ALL_IP</ValidateBasedOn>
</AccessControl>

מאפיינים של <AccessControl>

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1"> 

בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין תיאור ברירת מחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול לכלול אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול ארוך מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי להוסיף תווית למדיניות עורך ה-Proxy של ממשק המשתמש לניהול בעל שם אחר בשפה טבעית.

לא רלוונטי חובה
continueOnError

צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי של רוב כללי המדיניות.

יש להגדיר ל-true כדי שביצוע התהליך יימשך גם לאחר המדיניות נכשל.

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תהיה אכיפה גם אם היא ממשיכה להיות מחוברת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

&lt;DisplayName&gt; רכיב

צריך להשתמש בנוסף למאפיין name כדי להוסיף תווית למדיניות עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, הערך של המאפיין name של המדיניות הוא בשימוש.

נוכחות אופציונלי
סוג מחרוזת

אלמנט <IgnoreTrueClientIPHeader>

אם מגדירים את המדיניות הזו כ-True, המדיניות מתעלמת מהכותרת True-Client-IP ומעריכה את כתובות ה-IP בכותרת X-Forwarded-For, בהתאם להתנהגות ההערכה של X-Forwarded-For שהגדרתם.

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control-1</DisplayName>
    <IgnoreTrueClientIPHeader>true</IgnoreTrueClientIPHeader>
    ...
</AccessControl>
ברירת מחדל false
נוכחות אופציונלי
סוג בוליאני

אלמנט <IPRules>

רכיב האב שמכיל את הכללים שמאפשרים או דוחים כתובות IP. המאפיין noRuleMatchAction מאפשר לכם להגדיר איך לטפל בכתובות IP שלא נכללות בכללי ההתאמה שלכם.

<IPRules noRuleMatchAction = "ALLOW">
ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג לא רלוונטי

מאפיינים

מאפיין תיאור סוג ברירת מחדל נוכחות
noRuleMatchAction
הפעולה שיש לבצע (לאפשר או לדחות גישה) אם כלל ההתאמה שצוין לא נפתר (לא נמצאה התאמה).
ערך תקין: ALLOW או DENY
מחרוזת כן, זה בסדר חובה

אלמנט <IPRules>/<MatchRule>

הפעולה שיש לבצע (לאפשר או לדחות גישה) אם כתובת ה-IP תואמת לכתובות המקור שהגדרתם.

<IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "ALLOW">
        <SourceAddress mask="32">198.51.100.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "DENY">
        <SourceAddress mask="24">198.51.100.1</SourceAddress>
    </MatchRule>
</IPRules>
ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג לא רלוונטי

מאפיינים

מאפיין תיאור סוג ברירת מחדל נוכחות
פעולה

הפעולה שיש לבצע (לאפשר או לדחות גישה) אם כלל ההתאמה שצוין לא נפתר (לא נמצאה התאמה).

ערך תקין: ALLOW או DENY

מחרוזת כן, זה בסדר חובה

אלמנט <IPRules>/<MatchRule>/<SourceAddress>

טווח כתובות ה-IP של לקוח.

ערך תקין: כתובת IP תקינה (סימון עשרוני בנקודה). כדי להשתמש בתו כללי, צריך להשתמש במאפיין mask.

<IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "ALLOW">
        <SourceAddress mask="{variable}">198.51.100.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "DENY">
        <SourceAddress mask="24">{variable}</SourceAddress>
    </MatchRule>
</IPRules>

כפי שמוצג בדוגמה הקודמת, רכיב SourceAddress תומך גם בתבניות הודעות עבור מאפיין mask או כתובת IP, מה שאומר שאפשר להגדיר את הערכים באמצעות משתנים שזמינים כרגע בתהליך של proxy ל-API.

לדוגמה, אפשר לאחסן כתובת IP במפת ערכי מפתח (KVM) ולהשתמש במדיניות KeyValueMapOperations כדי לאחזר את כתובת ה-IP ולהקצות אותה למשתנה (למשל, kvm.ip.value). לאחר מכן אפשר להשתמש במשתנה הזה לכתובת ה-IP:

<SourceAddress mask="24">{kvm.ip.value}</SourceAddress>

הגדרת מסכה ו/או כתובת IP באמצעות משתנה מאפשרת לכם לשנות ערכים בזמן ריצה בלי שתצטרכו לשנות ולפרוס מחדש את proxy ל-API שלכם.

ברירת מחדל לא רלוונטי
נוכחות אופציונלי
סוג מחרוזת (כתובת IP יחידה בלבד)

מאפיינים

מאפיין תיאור סוג ברירת מחדל נוכחות
מסכה

המאפיין mask מציין את טווח כתובות ה-IP שרוצים לאשר או לדחות. המסכה שקולה לשימוש בסימון CIDR (Classless Inter-Domain Routing). לדוגמה:

<SourceAddress mask="24">198.51.100.1</SourceAddress>

שווה לסימון ה-CIDR הבא:

198.51.100.1/24

הערכים האפשריים:

‫IPv4: ‏ 1-32

‫IPv6: 1-128

הערך אפס (0) תקף רק לכתובת ה-IP‏ 0.0.0.0, ולכן הוא לא מעשי.

הגדרת המסכה באמצעות משתנה

המאפיין mask תומך גם בתבניות של הודעות, כלומר אפשר להגדיר את הערך באמצעות משתנה שזמין כרגע בתהליך של proxy ל-API. לדוגמה, אפשר לאחסן ערך של מסכה ב-KVM ולהשתמש במדיניות KeyValueMapOperations כדי לאחזר את המסכה ולהקצות אותה למשתנה. כדי להגדיר את מסכת ה-IP באמצעות המשתנה, משתמשים בפורמט הבא, בהנחה שהמשתנה נקרא kvm.mask.value:

mask="{kvm.mask.value}"

מספר שלם לא רלוונטי חובה

אלמנט <ValidateBasedOn>

כשכותרת ה-HTTP‏ X-Forwarded-For מכילה כמה כתובות IP, משתמשים ברכיב ValidateBasedOn הזה כדי לקבוע אילו כתובות IP ייבדקו.

כדאי להשתמש בגישה הזו להערכת כתובות IP רק אם אתם בטוחים בתוקף של כתובות ה-IP שאתם רוצים להעריך. לדוגמה, אם בוחרים להעריך את כל כתובות ה-IP בכותרת X-Forwarded-For, צריך להיות בטוחים בתוקף של הכתובות האלה, או להגדיר כללי DENY או ALLOW מקיפים כדי לאפשר רק לכתובות IP מהימנות לקרוא ל-proxy ל-API.

כתובת ה-IP הכי שמאלית בכותרת שייכת ללקוח, והכי ימנית היא של השרת שהעביר את הבקשה לשירות הנוכחי. כתובת ה-IP הכי שמאלית, או האחרונה, היא הכתובת ש-Edge קיבל מהלחיצת יד החיצונית האחרונה של TCP.

הערך שמזינים ברכיב הזה מאפשר לקבוע אם לבדוק את כל כתובות ה-IP בכותרת (ברירת מחדל), רק את כתובת ה-IP הראשונה או רק את כתובת ה-IP האחרונה.

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control 1</DisplayName>
    <IPRules noRuleMatchAction = "ALLOW">
        <MatchRule action = "DENY">
            <SourceAddress mask="32">198.51.100.1</SourceAddress>
        </MatchRule>
    </IPRules>
    <ValidateBasedOn>X_FORWARDED_FOR_ALL_IP</ValidateBasedOn>
</AccessControl>
ברירת מחדל X_FORWARDED_FOR_ALL_IP
נוכחות אופציונלי
ערכים אפשריים

X_FORWARDED_FOR_ALL_IP (ברירת מחדל)

X_FORWARDED_FOR_FIRST_IP

X_FORWARDED_FOR_LAST_IP

סכימות

כל סוג מדיניות מוגדר על ידי סכימת XML ‏ (.xsd). לעיון, סכימות המדיניות זמינות ב-GitHub.

הפניה לשגיאה

בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.

שגיאות זמן ריצה

השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת.

קוד תקלה סטטוס HTTP סיבה תיקון
accesscontrol.IPDeniedAccess 403 כתובת ה-IP או כתובת ה-IP של הלקוח שהועברו בבקשת ה-API, תואם לכתובת IP שצוינה ברכיב <SourceAddress> בתוך את הרכיב <MatchRule> של מדיניות בקרת הגישה, ואת המאפיין action של הרכיב <MatchRule> מוגדר ל-DENY.

משתני כשל

המשתנים האלה מוגדרים כשמתרחשת שגיאה בסביבת זמן הריצה. מידע נוסף זמין במאמר משתנים שספציפיים לשגיאות מדיניות.

משתנים איפה דוגמה
fault.name="fault_name" fault_name הוא שם השגיאה, כפי שמצוין בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. fault.name Matches "IPDeniedAccess"
acl.policy_name.failed policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. acl.AC-AllowAccess.failed = true

דוגמה לתגובה שגויה

{
   "fault":{
     "faultstring":"Access Denied for client ip : 52.211.243.3"
      "detail":{
         "errorcode":"accesscontrol.IPDeniedAccess"
      }
   }
}

דוגמה לכלל שגוי

<FaultRule name="IPDeniedAccess">
    <Step>
        <Name>AM-IPDeniedAccess</Name>
        <Condition>(fault.name Matches "IPDeniedAccess") </Condition>
    </Step>
    <Condition>(acl.failed = true) </Condition>
</FaultRule>