คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
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 ที่ล้มเหลว และกำหนดนโยบายเฉพาะซึ่งที่อยู่ IP ที่ระบุในองค์ประกอบ
<SourceAddress>
ตรงกับที่อยู่ IP ที่ระบุในfaultstring
(ขั้นตอนที่ 1 ด้านบน)ตัวอย่างเช่น นโยบายต่อไปนี้กำหนด IP ของ
<SourceAddress>
เป็น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
ก็น่าจะพบข้อความแสดงข้อผิดพลาดอยู่ ในกรณีนี้ คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
แต่หากคุณระบุว่าที่อยู่ IP หนึ่งๆ สามารถรับสิทธิ์เข้าถึงคำขอ API สำหรับพร็อกซี API ที่ระบุได้ ให้แก้ไขนโยบายการควบคุมการเข้าถึงเพื่ออนุญาตการเข้าถึงที่อยู่ IP เหล่านั้น หรืออีกทางหนึ่ง คุณสามารถลบนโยบายการควบคุมการเข้าถึงจากพร็อกซี API ได้หากไม่ต้องการปฏิเสธการเข้าถึงที่อยู่ IP ใดๆ
นี่คือตัวอย่างที่แสดงวิธีอนุญาตให้เข้าถึงที่อยู่ IP เฉพาะ 104.132.196.83
และปฏิเสธการเข้าถึงสำหรับส่วนที่เหลือ:
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="32">104.132.196.83</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>