นโยบาย AccessControl

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

อะไร

นโยบายการควบคุมการเข้าถึงช่วยให้คุณอนุญาตหรือปฏิเสธการเข้าถึง API ตามที่อยู่ IP ที่เฉพาะเจาะจงได้

วิดีโอ: ดูวิดีโอสั้นๆ เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอนุญาตหรือปฏิเสธ การเข้าถึง API ของคุณตามที่อยู่ IP ที่เฉพาะเจาะจง

แม้ว่าคุณจะแนบนโยบายนี้ที่ใดก็ได้ในโฟลว์พร็อกซี API แต่คุณอาจต้องการ ตรวจสอบที่อยู่ IP ที่จุดเริ่มต้นของโฟลว์ ( Request / ProxyEndpoint / PreFlow) แม้กระทั่งก่อน การตรวจสอบสิทธิ์หรือการตรวจสอบโควต้า

ตัวอย่าง

ค่ามาสก์ในตัวอย่าง IPv4 ต่อไปนี้จะระบุว่ากฎการจับคู่จะพิจารณาอ็อกเทตใดใน 4 อ็อกเทต (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 และการมาสก์ระหว่างรันไทม์โดยไม่ต้องอัปเดต และติดตั้งใช้งานพร็อกซี 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

อนุญาตคำขอจากที่อยู่ไคลเอ็นต์อื่นๆ

อนุญาต 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

การกำหนดค่าและการดำเนินการตามนโยบายการควบคุมการเข้าถึงเกี่ยวข้องกับสิ่งต่อไปนี้

  • กำหนดชุดกฎการจับคู่โดยเชื่อมโยงการดำเนินการอย่างใดอย่างหนึ่ง (อนุญาตหรือปฏิเสธ) กับแต่ละกฎ
  • ระบุที่อยู่ IP (องค์ประกอบ SourceAddress) สำหรับกฎการจับคู่แต่ละข้อ
  • ระบุลำดับการทดสอบกฎ
  • ระบบจะเรียกใช้กฎการจับคู่ทั้งหมดตามลำดับที่ระบุ เมื่อกฎตรงกัน ระบบจะดำเนินการที่เกี่ยวข้องและข้ามกฎที่ตรงกันถัดไป
    • หากกำหนดค่ากฎเดียวกันทั้งการดำเนินการ ALLOW และ DENY ระบบจะทริกเกอร์กฎที่กำหนดไว้ก่อนในลำดับ และจะข้ามกฎถัดไป (ที่มีการดำเนินการอื่น)

นโยบายเลือกที่อยู่ IP ที่จะประเมินอย่างไร

ที่อยู่ IP อาจมาจากแหล่งที่มาต่างๆ ในคำขอ เช่น ส่วนหัวของข้อความ True-Client-IP อาจมีที่อยู่ IP และส่วนหัว X-Forwarded-For อาจมีที่อยู่ IP อย่างน้อย 1 รายการ ส่วนนี้จะอธิบายวิธีกำหนดค่านโยบาย AccessControl เพื่อประเมินที่อยู่ IP ที่แน่นอนที่คุณต้องการให้ประเมิน

ต่อไปนี้คือตรรกะที่นโยบาย AccessControl ใช้ในการตัดสินใจว่าจะประเมินที่อยู่ IP ใด

1. ส่วนหัว True-Client-IP

นโยบายจะตรวจสอบที่อยู่ IP ในส่วนหัว True-Client-IP ก่อน หาก ส่วนหัวมีที่อยู่ IP ที่ถูกต้อง นโยบายจะประเมินที่อยู่นั้น

2. ส่วนหัว X-Forwarded-For

หากไม่มีส่วนหัว True-Client-IP หรือหากคุณตั้งค่าองค์ประกอบ <IgnoreTrueClientIPHeader> เป็น จริง นโยบายจะประเมินที่อยู่ IP ในส่วนหัว X-Forwarded-For

Edge จะป้อนข้อมูลส่วนหัว X-Forwarded-For โดยอัตโนมัติ ด้วยที่อยู่ IP ที่ได้รับจากการแฮนด์เชค TCP ภายนอกครั้งล่าสุด (เช่น IP ของไคลเอ็นต์หรือ เราเตอร์) หากมีที่อยู่ IP หลายรายการในส่วนหัว ที่อยู่เหล่านั้น น่าจะเป็นห่วงโซ่ของเซิร์ฟเวอร์ที่ประมวลผลคำขอ อย่างไรก็ตาม รายการที่อยู่ อาจมีที่อยู่ IP ที่ถูกปลอมแปลงด้วย แล้วนโยบายจะทราบได้อย่างไรว่าควรประเมินที่อยู่ใด

การกำหนดค่าขององค์กรและการกำหนดค่านโยบายจะกำหนดว่านโยบายจะประเมินX-Forwarded-Forที่อยู่ใด

ก่อนอื่น ให้ตรวจสอบว่าได้ตั้งค่าfeature.enableMultipleXForwardCheckForACLพร็อพเพอร์ตี้ ในองค์กรแล้ว คุณใช้ Get organization API เพื่อตรวจสอบได้ จากนั้นให้ทำดังนี้

  • หากไม่เห็น feature.enableMultipleXForwardCheckForACL ในรายการพร็อพเพอร์ตี้ขององค์กร แสดงว่าพร็อพเพอร์ตี้ดังกล่าวตั้งค่าเป็น false (ค่าเริ่มต้น) เมื่อตั้งค่าพร็อพเพอร์ตี้นี้เป็น "เท็จ" นโยบายจะประเมินที่อยู่สุดท้ายในส่วนหัว (มองเห็นได้ในเครื่องมือติดตาม) ซึ่งเป็นที่อยู่ IP ที่ Edge ได้รับจากการแฮนด์เชค TCP ภายนอกครั้งสุดท้าย
  • หากตั้งค่า feature.enableMultipleXForwardCheckForACL ในองค์กรเป็น "จริง" ให้กำหนดค่าองค์ประกอบ <ValidateBasedOn> เพื่อระบุว่านโยบายจะประเมินที่อยู่ IP ใด

การเปลี่ยนพร็อพเพอร์ตี้ feature.enableMultipleXForwardCheckForACL

ผู้ดูแลระบบองค์กร Edge สามารถใช้ API อัปเดตพร็อพเพอร์ตี้ขององค์กรเพื่อตั้งค่าพร็อพเพอร์ตี้ feature.enableMultipleXForwardCheckForACL ได้

ตัวอย่าง API ต่อไปนี้จะตั้งค่าพร็อพเพอร์ตี้ใน Edge สำหรับ 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 แล้ว คุณต้องรีสตาร์ท Message Processor ตามที่อธิบายไว้ใน เริ่ม/หยุด/รีสตาร์ทคอมโพเนนต์แต่ละรายการ

มิติข้อมูล 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 คุณจะระบุช่วงได้โดยการเพิ่ม /หมายเลข (1-32) ลงในที่อยู่ IP ดังนี้

198.51.100.1/24

ในกรณีนี้ 24 คือจำนวนที่คุณจะใช้สำหรับค่าแอตทริบิวต์ mask ในนโยบายนี้

สัญกรณ์นี้หมายความว่า "เก็บ 24 บิตแรกไว้ตามเดิม ส่วนบิตที่เหลือจะใช้ค่าใดก็ได้ตั้งแต่ 0 ถึง 255" เช่น

โปรดคงข้อความเหล่านี้ไว้ตามเดิม ค่าที่เป็นไปได้สำหรับกลุ่มสุดท้าย
198.51.100. 0 - 255

โปรดสังเกตว่ามาสก์จะเกิดขึ้นที่ท้ายกลุ่มที่ 3 ซึ่งจะทำให้ทุกอย่างเป็นระเบียบเรียบร้อย โดย หลักๆ แล้วคือการสร้างมาสก์แบบนี้: 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> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

องค์ประกอบ <IgnoreTrueClientIPHeader>

เมื่อตั้งค่าเป็น "จริง" นโยบายจะละเว้นส่วนหัว 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>
ค่าเริ่มต้น เท็จ
การมีบุคคลอยู่ ไม่บังคับ
ประเภท บูลีน

องค์ประกอบ <IPRules>

องค์ประกอบระดับบนที่มีกฎที่อนุญาตหรือปฏิเสธที่อยู่ IP แอตทริบิวต์ noRuleMatchAction ช่วยให้คุณกำหนดวิธีจัดการที่อยู่ IP ที่กฎการจับคู่ของคุณไม่ครอบคลุมได้

<IPRules noRuleMatchAction = "ALLOW">
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ประเภท ค่าเริ่มต้น การมีบุคคลอยู่
noRuleMatchAction
การดำเนินการที่จะทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากกฎการจับคู่ที่ระบุไม่ได้รับการแก้ไข (ไม่ตรงกัน)
ค่าที่ใช้ได้: ALLOW หรือ DENY
สตริง อนุญาต ต้องระบุ

องค์ประกอบ <IPRules>/<MatchRule>

การดำเนินการที่จะทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากที่อยู่ IP ตรงกับ SourceAddress(es) ที่คุณ กำหนด

<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>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ประเภท ค่าเริ่มต้น การมีบุคคลอยู่
การดำเนินการ

การดำเนินการที่จะทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากกฎการจับคู่ที่ระบุไม่ได้รับการแก้ไข (ไม่ตรงกัน)

ค่าที่ใช้ได้: 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 ด้วย ซึ่งหมายความว่าคุณสามารถตั้งค่าโดยใช้ตัวแปรที่พร้อมใช้งานในโฟลว์พร็อกซี API ในขณะนี้

เช่น คุณสามารถจัดเก็บที่อยู่ IP ในแผนที่คีย์-ค่า (KVM) และใช้นโยบาย KeyValueMapOperations เพื่อดึงข้อมูลที่อยู่ IP และกำหนดให้กับตัวแปร (เช่น kvm.ip.value) จากนั้นคุณจะใช้ตัวแปรดังกล่าวสำหรับที่อยู่ IP ได้

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

การตั้งค่ามาสก์และ/หรือที่อยู่ IP ด้วยตัวแปรช่วยให้คุณเปลี่ยนค่าได้ที่ รันไทม์โดยไม่ต้องแก้ไขและติดตั้งใช้งานพร็อกซี API อีกครั้ง

ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง (ที่อยู่ IP เดียวเท่านั้น)

Attributes

แอตทริบิวต์ คำอธิบาย ประเภท ค่าเริ่มต้น การมีบุคคลอยู่
มาสก์

แอตทริบิวต์ 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 ยังรองรับ เทมเพลตข้อความด้วย ซึ่ง หมายความว่าคุณตั้งค่าด้วยตัวแปรที่พร้อมใช้งานใน โฟลว์พร็อกซี 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 ที่เชื่อถือได้เรียกใช้พร็อกซี API ของคุณ

ที่อยู่ IP ทางซ้ายสุดในส่วนหัวเป็นของไคลเอ็นต์ และที่อยู่ทางขวาสุดคือเซิร์ฟเวอร์ ซึ่งส่งต่อคำขอไปยังบริการปัจจุบัน ที่อยู่ 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>