คุณกำลังดูเอกสารประกอบของ 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) สำหรับกฎการจับคู่แต่ละข้อ
- ดูวิธีที่นโยบายเลือกที่อยู่ IP ที่จะประเมิน เพื่อพิจารณาที่อยู่ IP ในข้อความที่คุณกําลังกําหนดค่ากฎเพื่อจัดการ
- กำหนดค่ามาสก์สำหรับที่อยู่ IP แต่ละรายการ คุณอนุญาตหรือปฏิเสธการเข้าถึงตามค่ามาสก์ใน ที่อยู่ IP ดูเกี่ยวกับการมาสก์ IP ด้วยรูปแบบ CIDR
- ระบุลำดับการทดสอบกฎ
- ระบบจะเรียกใช้กฎการจับคู่ทั้งหมดตามลำดับที่ระบุ เมื่อกฎตรงกัน ระบบจะดำเนินการที่เกี่ยวข้องและข้ามกฎที่ตรงกันถัดไป
- หากกำหนดค่ากฎเดียวกันทั้งการดำเนินการ 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 |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
| ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <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
| แอตทริบิวต์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|---|
| มาสก์ |
แอตทริบิวต์
เทียบเท่ากับรูปแบบ CIDR ต่อไปนี้ 198.51.100.1/24 ค่าที่ถูกต้อง: IPv4: 1-32 IPv6: 1-128 ค่า 0 ใช้ได้เฉพาะกับ IP 0.0.0.0 เท่านั้น จึงไม่สามารถใช้งานได้จริง ตั้งค่ามาสก์ด้วยตัวแปร แอตทริบิวต์
|
จำนวนเต็ม | ไม่มี | ต้องระบุ |
องค์ประกอบ <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 |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ค่าที่ใช้ได้ |
|
สคีมา
นโยบายแต่ละประเภทกำหนดโดยสคีมา XML (.xsd) โปรดดู สคีมานโยบายใน GitHub
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
|---|---|---|---|
accesscontrol.IPDeniedAccess |
403 | มีการส่งผ่านที่อยู่ IP ของไคลเอ็นต์หรือที่อยู่ IP
ในคำขอ API ตรงกับที่อยู่ IP ที่ระบุในองค์ประกอบ <SourceAddress> ภายใน
องค์ประกอบ <MatchRule> ของนโยบายควบคุมการเข้าถึง และแอตทริบิวต์ action ของ
องค์ประกอบ <MatchRule> ได้รับการตั้งค่าเป็น DENY |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ ดูข้อมูลเพิ่มเติมได้ที่ตัวแปรเฉพาะสําหรับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
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>