คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
IPDeniedAccess
รหัสข้อผิดพลาด
accesscontrol.IPDeniedAccess
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Access Denied for client ip : client_IP",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Access Denied for client ip : 104.132.196.83",
"detail": {
"errorcode": "accesscontrol.IPDeniedAccess"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากที่อยู่ IP ของไคลเอ็นต์หรือที่อยู่ IP ใดก็ตามที่ส่งเป็นส่วนหนึ่งของคำขอ API ตรงกับที่อยู่ IP ที่ระบุไว้ในองค์ประกอบ <SourceAddress> ภายในองค์ประกอบ <MatchRule> ของนโยบายควบคุมการเข้าถึง และแอตทริบิวต์ action ขององค์ประกอบ <MatchRule> ตั้งค่าเป็น DENY
เช่น สมมติว่ามีการกำหนด <SourceAddress> ดังที่แสดงด้านล่าง
<SourceAddress mask="32">104.132.196.83</SourceAddress>
หากที่อยู่ IP ด้านบนตรงกับที่อยู่ IP ของระบบไคลเอ็นต์ (ระบุโดยตัวแปร proxy.client.ip) หรือที่อยู่ IP ใดก็ตามที่ส่งเป็นส่วนหนึ่งของคำขอ API จะเกิดข้อผิดพลาด
การวินิจฉัย
ระบุที่อยู่ IP ที่ถูกปฏิเสธการเข้าถึงสำหรับคำขอ API ที่เฉพาะเจาะจง คุณดูข้อมูลนี้ได้ในองค์ประกอบ
faultstringของการตอบกลับข้อผิดพลาดตัวอย่างเช่น ใน
faultstringต่อไปนี้ ที่อยู่ IP คือ104.132.196.83:"faultstring": "Access Denied for client ip : 104.132.196.83"ตรวจสอบนโยบายควบคุมการเข้าถึงทั้งหมดใน API Proxy ที่ล้มเหลว และระบุนโยบายที่เฉพาะเจาะจงซึ่งที่อยู่ IP ที่ระบุไว้ในองค์ประกอบ
<SourceAddress>ตรงกับที่อยู่ IP ที่ระบุไว้ในfaultstring(ขั้นตอนที่ 1 ด้านบน)เช่น นโยบายต่อไปนี้กำหนด
<SourceAddress>IP เป็น104.132.196.83,ซึ่งตรงกับสิ่งที่อยู่ในfaultstring<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control"> <DisplayName>Access-Control</DisplayName> <Properties/> <IPRules noRuleMatchAction="ALLOW"> <MatchRule action="DENY"> <SourceAddress mask="32">104.132.196.83</SourceAddress> </MatchRule> </IPRules> </AccessControl>ระบุที่อยู่ IP ที่ใช้ส่งคำขอ API ซึ่งทำได้หลายวิธี ดังนี้
การใช้การติดตาม UI
- บันทึกการติดตามสำหรับคำขอ API ที่ล้มเหลว
- เลือกนโยบายควบคุมการเข้าถึงที่เฉพาะเจาะจงซึ่งล้มเหลวจากแผงด้านขวามือ
ตรวจสอบค่าของตัวแปร
proxy.client.ipตามที่แสดงในภาพหน้าจอต่อไปนี้ของตัวอย่างการติดตาม
หากไม่มี
proxy.client.ipให้ตรวจสอบค่าของส่วนหัวข้อความ X-Forwarded-For หรือ True-Client-IP
การใช้รายงานที่กำหนดเอง
คุณสามารถสร้างรายงานที่กำหนดเองเพื่อพิจารณาว่ามีการส่งรหัสสถานะ 403 ระหว่างการดำเนินการนโยบายควบคุมการเข้าถึงภายในพร็อกซี API หรือไม่ และยังกำหนดที่อยู่ IP ของไคลเอ็นต์ได้อีกด้วย ซึ่งจะมีประโยชน์อย่างยิ่งหากปัญหาเกิดขึ้นในอดีต หรือหากปัญหาเกิดขึ้นเป็นระยะๆ และคุณไม่สามารถบันทึกการติดตามใน UI ได้
ดูวิธีสร้างรายงานที่กําหนดเองได้ที่สร้างและจัดการรายงานที่กําหนดเอง ในรายงานที่กําหนดเอง ให้เลือก
ผลรวมของการเข้าชมเป็นเมตริก และ
พร็อกซี รหัสสถานะการตอบกลับ IP ของไคลเอ็นต์พร็อกซี และ X-Forwarded-For เป็นมิติข้อมูล
ซึ่งจะช่วยให้คุณระบุ IP ของไคลเอ็นต์หรือที่อยู่ IP ที่ส่งผ่านซึ่งทำให้เกิดข้อผิดพลาดได้
หากที่อยู่ IP ของไคลเอ็นต์ (ระบุโดยตัวแปร
proxy.client.ip) หรือที่อยู่ IP ใดก็ตามที่ส่งเป็นส่วนหนึ่งของคำขอ API ตรงกับที่อยู่ IP ที่ระบุไว้ในองค์ประกอบ<SourceAddress>ภายในองค์ประกอบ<MatchRule>ของนโยบายการควบคุมการเข้าถึง ซึ่งตั้งค่าแอตทริบิวต์actionเป็นDENYแสดงว่านั่นคือสาเหตุของข้อผิดพลาดในตัวอย่างที่แสดงด้านบน ค่าที่ตั้งไว้ในตัวแปรอ้างอิง
proxy.client.ip(ดังที่เห็นในภาพหน้าจอของการติดตามด้านบน) ตรงกับที่อยู่ IP ที่กำหนดไว้ในองค์ประกอบ<SourceAddress>ของนโยบายการควบคุมการเข้าถึง จึงทําให้เกิดการตอบกลับข้อผิดพลาด"faultstring": "Access Denied for client ip : 104.132.196.83"
ความละเอียด
หากนโยบายการควบคุมการเข้าถึงมีจุดประสงค์เพื่อปฏิเสธการเข้าถึงคำขอ API ที่มาจากที่อยู่ IP ที่เฉพาะเจาะจงซึ่งแสดงอยู่ใน faultstring คุณจะได้รับข้อความแสดงข้อผิดพลาด ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
อย่างไรก็ตาม หากพิจารณาแล้วว่าสามารถให้สิทธิ์เข้าถึงคำขอ API สำหรับพร็อกซี API ที่เฉพาะเจาะจงแก่ที่อยู่ IP ที่เฉพาะเจาะจงได้ ให้แก้ไขนโยบายการควบคุมการเข้าถึงเพื่ออนุญาตการเข้าถึงที่อยู่ IP เหล่านั้น หรือคุณจะนำนโยบายการควบคุมการเข้าถึงออกจากพร็อกซี API ก็ได้หากไม่ต้องการปฏิเสธการเข้าถึงที่อยู่ IP ใดๆ
ตัวอย่างต่อไปนี้แสดงวิธีอนุญาตการเข้าถึงเฉพาะที่อยู่ IP 104.132.196.83 และปฏิเสธการเข้าถึงสำหรับที่อยู่ IP อื่นๆ
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>