นโยบาย AccessControl

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

อะไร

นโยบายควบคุมการเข้าถึงช่วยให้คุณอนุญาตหรือปฏิเสธการเข้าถึง 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>

อนุญาต: 198.51*.* 192.0*.* 203.0*.*

ปฏิเสธชุดย่อยของรายการที่อนุญาต: 198.51.100* 192.0.2* 203.0.113*


หมายเหตุการใช้งาน

นอกจากการปกป้อง API จาก IP ที่เป็นอันตรายแล้ว นโยบายการควบคุมการเข้าถึงยัง ช่วยให้คุณควบคุมการเข้าถึง IP ที่ถูกต้องตามกฎหมายได้ ตัวอย่างเช่น ถ้าคุณต้องการให้คอมพิวเตอร์อยู่ภายใต้ ที่ควบคุมขององค์กรเพื่อเข้าถึง API ที่เปิดเผยในสภาพแวดล้อมการทดสอบของคุณ คุณสามารถอนุญาต ช่วงที่อยู่ IP สำหรับเครือข่ายภายใน นักพัฒนาซอฟต์แวร์ที่ทำงานจากที่บ้านสามารถ เข้าถึง API เหล่านี้โดยใช้ VPN

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

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

วิธีที่นโยบายเลือกที่อยู่ 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-ส่งต่อ-สำหรับส่วนหัว

หากไม่มีส่วนหัว True-Client-IP หรือหากได้ตั้งค่า องค์ประกอบ &lt;IgnoreTrueClientIPHeader&gt; ไปยัง true นโยบายจะประเมินที่อยู่ IP ในส่วนหัว X-Forwarded-For

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

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

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

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

สังเกตว่ามาสก์จะเกิดขึ้นในตอนท้ายของกลุ่มที่ 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>

&lt;AccessControl&gt; แอตทริบิวต์

<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 ของนโยบายจะเป็น

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

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

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

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

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

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

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

Attributes

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

&lt;IPRules&gt;/&lt;MatchRule&gt; องค์ประกอบ

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

<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

สตริง อนุญาต ต้องระบุ

&lt;IPRules&gt;/&lt;MatchRule&gt;/&lt;SourceAddress&gt; องค์ประกอบ

ช่วงที่อยู่ 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) เช่น

<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}"

จำนวนเต็ม ไม่มี ต้องระบุ

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

เมื่อส่วนหัว 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>