คุณกำลังดูเอกสารประกอบ 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 ในข้อความที่คุณจะกำหนดค่ากฎที่จะจัดการ
- กำหนดค่ามาสก์สำหรับที่อยู่ IP แต่ละรายการ คุณอนุญาตหรือปฏิเสธการเข้าถึงตามค่ามาสก์ใน ที่อยู่ IP โปรดดูเกี่ยวกับการมาสก์ IP ด้วยรูปแบบ CIDR
- ระบุลำดับการทดสอบกฎ
- กฎการจับคู่ทั้งหมดจะดำเนินการตามลำดับที่กำหนด เมื่อกฎตรงกัน พารามิเตอร์
ดำเนินการที่เกี่ยวข้องและข้ามกฎการจับคู่ต่อไปนี้
- หากมีการกำหนดค่ากฎเดียวกันโดยใช้ทั้งการดำเนินการ "อนุญาต" และ "ปฏิเสธ" กฎที่ ที่กำหนดในลำดับก่อนจะถูกเรียกใช้ และกฎที่ตามมา (ที่มีการกระทำอื่น) คือ ข้าม
วิธีที่นโยบายเลือกที่อยู่ 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
หรือหากได้ตั้งค่า
องค์ประกอบ <IgnoreTrueClientIPHeader> ไปยัง
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 กำหนดค่า <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 สำหรับ 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>
<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 ที่คุณ นิยาม
<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>