Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
![]()
Nội dung
Chính sách Kiểm soát quyền truy cập cho phép bạn cấp hoặc từ chối quyền truy cập vào các API của mình theo địa chỉ IP cụ thể.
Video: Xem video ngắn này để tìm hiểu thêm về cách cho phép hoặc từ chối quyền truy cập vào API của bạn theo địa chỉ IP cụ thể.
Mặc dù có thể đính kèm chính sách này ở bất kỳ vị trí nào trong luồng proxy API, nhưng bạn nên kiểm tra địa chỉ IP ở đầu luồng ( Request / ProxyEndpoint / PreFlow), ngay cả trước khi xác thực hoặc kiểm tra hạn mức.
Mẫu
Các giá trị mặt nạ trong các mẫu IPv4 sau đây xác định quy tắc nào trong số 4 octet (8, 16, 24, 32 bit) mà quy tắc so khớp xem xét khi cho phép hoặc từ chối quyền truy cập. Giá trị mặc định là 32. Hãy xem thuộc tính mask trong Tài liệu tham khảo về phần tử để biết thêm thông tin.
Từ chối 198.51.100.1
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "ALLOW">
<MatchRule action = "DENY">
<SourceAddress mask="32">198.51.100.1</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>Từ chối tất cả yêu cầu từ địa chỉ máy khách: 198.51.100.1
Cho phép yêu cầu từ bất kỳ địa chỉ máy khách nào khác.
Từ chối sử dụng biến
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "ALLOW">
<MatchRule action = "DENY">
<SourceAddress mask="{kvm.mask.value}">{kvm.ip.value}</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>Giả sử bạn đang sử dụng một bản đồ khoá-giá trị (KVM) để lưu trữ các giá trị cho việc che giấu và IP.
Đây là một phương pháp hữu ích để thay đổi IP và che giấu trong thời gian chạy mà không cần phải cập nhật và triển khai lại proxy API. Bạn có thể sử dụng chính sách KeyValueMapOperations để truy xuất các biến chứa giá trị cho kvm.mask.value và kvm.ip.value (giả sử đó là tên bạn đặt cho các biến trong chính sách KVM chứa giá trị của mặt nạ và giá trị IP trong KVM).
Nếu các giá trị bạn truy xuất được là 24 cho mặt nạ và 198.51.100.1 cho địa chỉ IP, thì chính sách AccessControl sẽ từ chối tất cả các yêu cầu từ: 198.51.100.*
Tất cả các địa chỉ máy khách khác sẽ được cho phép.
Từ chối 198.51.100.*
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "ALLOW">
<MatchRule action = "DENY">
<SourceAddress mask="24">198.51.100.1</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>Từ chối tất cả yêu cầu từ địa chỉ máy khách: 198.51.100.*
Cho phép yêu cầu từ bất kỳ địa chỉ máy khách nào khác.
198.51.*.*
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "ALLOW">
<MatchRule action = "DENY">
<SourceAddress mask="16">198.51.100.1</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>Từ chối tất cả yêu cầu từ địa chỉ máy khách: 198.51.*.*
Cho phép yêu cầu từ bất kỳ địa chỉ máy khách nào khác.
Từ chối 198.51.100.*, cho phép 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>Từ chối tất cả yêu cầu từ địa chỉ máy khách: 198.51.100.*, nhưng cho phép 192.0.2.1.
Cho phép yêu cầu từ bất kỳ địa chỉ máy khách nào khác.
Cho phép 198.51.*.*
<AccessControl name="ACL">
<IPRules noRuleMatchAction = "DENY">
<MatchRule action = "ALLOW">
<SourceAddress mask="16">198.51.100.1</SourceAddress>
</MatchRule>
</IPRules>
</AccessControl>Cho phép tất cả các yêu cầu từ địa chỉ: 198.51.*.*
Từ chối yêu cầu từ mọi địa chỉ ứng dụng khách khác.
Cho phép nhiều địa chỉ 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>Cho phép các yêu cầu từ địa chỉ máy khách: 198.51.100.* 192.0.2.* 203.0.113.*
Từ chối tất cả các địa chỉ khác.
Từ chối nhiều 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>Từ chối yêu cầu từ địa chỉ máy khách: 198.51.100.* 192.0.2.* 203.0.113.*
Cho phép tất cả các địa chỉ khác.
Cho phép nhiều địa chỉ IP, từ chối nhiều địa chỉ 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>Cho phép: 198.51.*.* 192.0.*.* 203.0.*.*
Từ chối một phần của danh sách cho phép: 198.51.100.* 192.0.2.* 203.0.113.*
Lưu ý về cách sử dụng
Ngoài việc bảo vệ các API của bạn khỏi các địa chỉ IP độc hại, chính sách Kiểm soát quyền truy cập cũng giúp bạn kiểm soát quyền truy cập của các địa chỉ IP hợp lệ. Ví dụ: nếu chỉ muốn những máy tính thuộc quyền kiểm soát của doanh nghiệp truy cập vào các API được hiển thị trong môi trường thử nghiệm, bạn có thể cho phép dải địa chỉ IP cho mạng nội bộ. Nhà phát triển làm việc tại nhà có thể truy cập vào các API này bằng VPN.
Việc định cấu hình và thực thi chính sách Kiểm soát quyền truy cập bao gồm những bước sau:
- Xác định một nhóm quy tắc so khớp với một trong hai hành động (CHO PHÉP hoặc TỪ CHỐI) được liên kết với từng quy tắc.
- Đối với mỗi quy tắc so khớp, hãy chỉ định địa chỉ IP (phần tử SourceAddress).
- Hãy xem phần Cách chính sách chọn địa chỉ IP để đánh giá để xác định(các) địa chỉ IP trong thông báo mà bạn đang định cấu hình quy tắc để xử lý.
- Định cấu hình một mặt nạ cho từng địa chỉ IP. Bạn cho phép hoặc từ chối quyền truy cập dựa trên giá trị mặt nạ trên địa chỉ IP. Xem bài viết Giới thiệu về tính năng ẩn giấu IP bằng ký hiệu CIDR.
- Chỉ định thứ tự kiểm tra các quy tắc.
- Tất cả các quy tắc so khớp đều được thực thi theo thứ tự đã cho. Khi một quy tắc trùng khớp, hành động tương ứng sẽ được thực thi và các quy tắc trùng khớp sau đó sẽ bị bỏ qua.
- Nếu cùng một quy tắc được định cấu hình bằng cả hành động CHO PHÉP và TỪ CHỐI, thì quy tắc được xác định đầu tiên trong thứ tự sẽ được kích hoạt và quy tắc tiếp theo (với hành động khác) sẽ bị bỏ qua.
Cách chính sách chọn địa chỉ IP để đánh giá
Địa chỉ IP có thể đến từ nhiều nguồn trong một yêu cầu. Ví dụ: tiêu đề thư True-Client-IP có thể chứa một địa chỉ IP và tiêu đề X-Forwarded-For có thể chứa một hoặc nhiều địa chỉ IP. Phần này mô tả cách định cấu hình chính sách AccessControl để đánh giá(các) địa chỉ IP chính xác mà bạn muốn chính sách này đánh giá.
Sau đây là logic mà chính sách AccessControl sử dụng để quyết định đánh giá địa chỉ IP nào:
1. Tiêu đề True-Client-IP
Trước tiên, chính sách này sẽ kiểm tra địa chỉ IP trong tiêu đề True-Client-IP. Nếu tiêu đề chứa một địa chỉ IP hợp lệ, thì chính sách sẽ đánh giá địa chỉ đó.
2. Tiêu đề X-Forwarded-For
Nếu không có tiêu đề True-Client-IP hoặc nếu bạn đã đặt phần tử <IgnoreTrueClientIPHeader> thành true, thì chính sách sẽ đánh giá(các) địa chỉ IP trong tiêu đề X-Forwarded-For.
Edge sẽ tự động điền tiêu đề X-Forwarded-For bằng địa chỉ IP mà trình duyệt nhận được từ lần bắt tay TCP bên ngoài gần đây nhất (chẳng hạn như IP máy khách hoặc bộ định tuyến). Nếu có nhiều địa chỉ IP trong tiêu đề, thì những địa chỉ đó có thể là chuỗi máy chủ đã xử lý một yêu cầu. Tuy nhiên, danh sách địa chỉ này cũng có thể chứa một địa chỉ IP giả mạo. Vậy làm cách nào để chính sách biết địa chỉ nào cần đánh giá?
Cấu hình tổ chức và cấu hình chính sách của bạn sẽ xác định(các) địa chỉ X-Forwarded-For mà chính sách đánh giá.
Trước tiên, hãy kiểm tra xem thuộc tính feature.enableMultipleXForwardCheckForACL có được đặt cho tổ chức của bạn hay không. Bạn có thể dùng API
Lấy tổ chức để kiểm tra. Sau đó:
- Nếu bạn không thấy
feature.enableMultipleXForwardCheckForACLtrong danh sách tài sản của tổ chức, tức là tài sản đó được đặt thành false (mặc định). Khi bạn đặt thuộc tính này thành false, chính sách sẽ đánh giá địa chỉ cuối cùng trong tiêu đề (xuất hiện trong Công cụ theo dõi), đây là địa chỉ IP mà Edge nhận được từ lần bắt tay TCP bên ngoài gần đây nhất. - Nếu
feature.enableMultipleXForwardCheckForACLtrong tổ chức của bạn được đặt thành true, hãy định cấu hình phần tử <ValidateBasedOn> để xác định những địa chỉ IP mà chính sách đánh giá.
Thay đổi thuộc tính feature.enableMultipleXForwardCheckForACL
Quản trị viên tổ chức Edge có thể sử dụng API
Cập nhật thuộc tính tổ chức để đặt thuộc tính feature.enableMultipleXForwardCheckForACL.
Ví dụ sau đây về API sẽ đặt thuộc tính trong Edge cho Đám mây riêng tư. Nếu tổ chức của bạn có các tài sản khác, hãy nhớ thêm cả những tài sản đó. Nếu không, các tài khoản đó sẽ bị xoá.
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>"
Trong Edge for Private Cloud, sau khi thay đổi giá trị của thuộc tính feature.enableMultipleXForwardCheckForACL, bạn phải khởi động lại các trình xử lý thông báo, như mô tả trong phần
Khởi động/dừng/khởi động lại các thành phần riêng lẻ.
Phương diện X-Forwarded-For trong số liệu phân tích của Apigee
Edge Analytics ghi giá trị của tiêu đề X-Forwarded-For vào phương diện x_forwarded_for_ip. Để xác định IP của máy khách đã đưa ra yêu cầu đến Edge, hãy sử dụng các giá trị trong phương diện ax_true_client_ip hoặc ax_resolved_client_ip. Hãy xem Tài liệu tham khảo về chỉ số, phương diện và bộ lọc của Analytics để biết thêm thông tin.
Giới thiệu về tính năng ẩn giấu địa chỉ IP bằng ký hiệu CIDR
Ký hiệu CIDR (Định tuyến liên miền không phân lớp) là một cách chỉ ra dải địa chỉ IP thông qua việc che giấu. Điều này áp dụng cho cả IPv4 và IPv6. Sau đây là cách hoạt động của tính năng này. Chúng tôi sẽ sử dụng IPv4 trong các ví dụ để đơn giản hoá.
Địa chỉ IP là nhóm các số được phân tách bằng dấu chấm. Theo thuật ngữ nhị phân, mỗi nhóm là một số lượng bit cụ thể (8 cho IPv4 và 16 cho IPv6). Địa chỉ IPv4 198.51.100.1 có dạng như sau ở dạng nhị phân:
11000110.00110011.01100100.00000001
Đó là 4 nhóm 8 bit, tức là tổng cộng 32 bit. Với CIDR, bạn có thể chỉ định một dải bằng cách thêm /number (1-32) vào địa chỉ IP, như sau:
198.51.100.1/24
Trong trường hợp này, 24 là số bạn sẽ dùng cho giá trị thuộc tính mask trong chính sách này.
Ký hiệu này có nghĩa là "Giữ nguyên 24 bit đầu tiên, các bit còn lại có thể là bất kỳ giá trị nào từ 0 đến 255". Ví dụ:
| Giữ nguyên những nội dung này | Các giá trị có thể có cho nhóm cuối cùng |
|---|---|
| 198.51.100. | 0 – 255 |
Lưu ý rằng mặt nạ xuất hiện ở cuối nhóm 3. Điều này giúp mọi thứ trở nên gọn gàng và ngăn nắp, về cơ bản là tạo ra một mặt nạ như sau: 198.51.100.*. Trong hầu hết các trường hợp, việc sử dụng bội số của 8 (IPv4) và 16 (IPv6) sẽ cung cấp cho bạn mức độ che giấu mà bạn muốn:
IPv4: 8, 16, 24, 32
IPv6: 16, 32, 48, 64, 80, 96, 112, 128
Tuy nhiên, bạn có thể sử dụng các số khác để kiểm soát chi tiết hơn, điều này liên quan đến một chút phép tính nhị phân. Dưới đây là ví dụ sử dụng mặt nạ là 30, chẳng hạn như 198.51.100.1/30, trong đó 1 cuối cùng là 00000001 ở dạng nhị phân:
| Giữ nguyên những nội dung này | Giá trị được phép |
|---|---|
| 11000110.00110011.01100100.000000 (30 bit đầu tiên) | 00000000, 00000001, 00000010 hoặc 00000011 |
| 198.51.100. | 0, 1, 2 hoặc 3 |
Trong ví dụ này, khi bạn đặt cấu hình thành <SourceAddress
mask="30">198.51.100.1</SourceAddress>, các IP sau sẽ được phép (hoặc bị từ chối, tuỳ thuộc vào quy tắc của bạn):
- 198.51.100.0
- 198.51.100.1
- 198.51.100.2
- 198.51.100.3
Tài liệu tham khảo về phần tử
Tài liệu tham khảo về phần tử mô tả các phần tử và thuộc tính của chính sách Kiểm soát quyền truy cập.
<?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>Thuộc tính <AccessControl>
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:
| Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
|---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính (Không bắt buộc) Bạn có thể dùng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Hãy đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<DisplayName>Policy Display Name</DisplayName>
| Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
|---|---|
| Sự hiện diện | Không bắt buộc |
| Loại | Chuỗi |
Phần tử <IgnoreTrueClientIPHeader>
Khi bạn đặt chính sách này thành true, chính sách sẽ bỏ qua tiêu đề True-Client-IP và đánh giá địa chỉ IP trong tiêu đề X-Forwarded-For, theo hành vi đánh giá X-Forwarded-For mà bạn đã định cấu hình.
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
<DisplayName>Access Control-1</DisplayName>
<IgnoreTrueClientIPHeader>true</IgnoreTrueClientIPHeader>
...
</AccessControl>| Mặc định | false |
|---|---|
| Tỷ lệ hiển thị | Không bắt buộc |
| Loại | Boolean |
Phần tử <IPRules>
Phần tử mẹ chứa các quy tắc cho phép hoặc từ chối địa chỉ IP. Thuộc tính noRuleMatchAction cho phép bạn xác định cách xử lý mọi địa chỉ IP không thuộc phạm vi quy tắc so khớp.
<IPRules noRuleMatchAction = "ALLOW">
| Mặc định | Không áp dụng |
|---|---|
| Tỷ lệ hiển thị | Không bắt buộc |
| Loại | Không áp dụng |
Thuộc tính
| Thuộc tính | Mô tả | Loại | Mặc định | Tỷ lệ hiển thị |
|---|---|---|---|---|
| noRuleMatchAction |
Hành động cần thực hiện (cho phép hoặc từ chối quyền truy cập) nếu quy tắc so khớp đã chỉ định không được phân giải (không khớp).
Giá trị hợp lệ: ALLOW hoặc DENY
|
Chuỗi | CHO PHÉP | Bắt buộc |
Phần tử <IPRules>/<MatchRule>
Hành động cần thực hiện (cho phép hoặc từ chối quyền truy cập) nếu địa chỉ IP khớp với(các) SourceAddress mà bạn xác định.
<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>| Mặc định | Không áp dụng |
|---|---|
| Tỷ lệ hiển thị | Không bắt buộc |
| Loại | Không áp dụng |
Thuộc tính
| Thuộc tính | Mô tả | Loại | Mặc định | Tỷ lệ hiển thị |
|---|---|---|---|---|
| hành động |
Hành động cần thực hiện (cho phép hoặc từ chối quyền truy cập) nếu quy tắc so khớp đã chỉ định không được phân giải (không khớp). Giá trị hợp lệ: ALLOW hoặc DENY |
Chuỗi | CHO PHÉP | Bắt buộc |
Phần tử <IPRules>/<MatchRule>/<SourceAddress>
Dải địa chỉ IP của một ứng dụng khách.
Giá trị hợp lệ: Địa chỉ IP hợp lệ (ký hiệu thập phân có dấu chấm). Để có hành vi ký tự đại diện, hãy sử dụng thuộc tính 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>
Như trong ví dụ trước, phần tử SourceAddress cũng hỗ trợ Mẫu tin nhắn cho thuộc tính mask hoặc địa chỉ IP. Điều này có nghĩa là bạn có thể đặt các giá trị bằng cách sử dụng các biến hiện có trong quy trình proxy API.
Ví dụ: bạn có thể lưu trữ một địa chỉ IP trong bản đồ khoá-giá trị (KVM) và sử dụng chính sách KeyValueMapOperations để truy xuất địa chỉ IP và chỉ định địa chỉ đó cho một biến (chẳng hạn như kvm.ip.value). Sau đó, bạn có thể sử dụng biến đó cho địa chỉ IP:
<SourceAddress mask="24">{kvm.ip.value}</SourceAddress>
Việc đặt mặt nạ và/hoặc địa chỉ IP bằng một biến giúp bạn linh hoạt thay đổi các giá trị tại thời gian chạy mà không cần phải sửa đổi và triển khai lại proxy API.
| Mặc định | Không áp dụng |
|---|---|
| Tỷ lệ hiển thị | Không bắt buộc |
| Loại | Chuỗi (chỉ một địa chỉ IP) |
Thuộc tính
| Thuộc tính | Mô tả | Loại | Mặc định | Tỷ lệ hiển thị |
|---|---|---|---|---|
| đeo-khẩu-trang |
Thuộc tính
tương đương với ký hiệu CIDR sau: 198.51.100.1/24 Giá trị hợp lệ: IPv4: 1-32 IPv6: 1 – 128 Giá trị bằng 0 (0) chỉ hợp lệ cho IP 0.0.0.0, do đó không thực tế. Đặt mặt nạ bằng một biến Thuộc tính
|
Số nguyên | Không áp dụng | Bắt buộc |
Phần tử <ValidateBasedOn>
Khi tiêu đề HTTP X-Forwarded-For chứa nhiều địa chỉ IP, hãy dùng phần tử ValidateBasedOn này để kiểm soát những địa chỉ IP được đánh giá.
Chỉ sử dụng phương pháp này để đánh giá địa chỉ IP nếu bạn chắc chắn về tính hợp lệ của địa chỉ IP mà bạn muốn đánh giá. Ví dụ: nếu chọn đánh giá tất cả địa chỉ IP trong tiêu đề X-Forwarded-For, bạn phải có khả năng tin tưởng tính hợp lệ của những địa chỉ đó và/hoặc thiết lập các quy tắc DENY (TỪ CHỐI) hoặc ALLOW (CHO PHÉP) toàn diện để chỉ cho phép các IP đáng tin cậy gọi proxy API của bạn.
Địa chỉ IP ở ngoài cùng bên trái trong tiêu đề thuộc về máy khách và địa chỉ IP ở ngoài cùng bên phải là máy chủ đã chuyển tiếp yêu cầu đến dịch vụ hiện tại. Địa chỉ IP ở ngoài cùng bên phải hoặc địa chỉ IP cuối cùng là địa chỉ mà Edge nhận được từ lần bắt tay TCP bên ngoài gần đây nhất.
Giá trị mà bạn nhập trong phần tử này cho phép bạn xác định xem có nên kiểm tra tất cả địa chỉ IP trong tiêu đề (mặc định), chỉ địa chỉ IP đầu tiên hay chỉ địa chỉ IP cuối cùng hay không.
<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>| Mặc định | X_FORWARDED_FOR_ALL_IP |
|---|---|
| Tỷ lệ hiển thị | Không bắt buộc |
| Giá trị hợp lệ |
|
Giản đồ
Mỗi loại chính sách được xác định bằng một giản đồ XML (.xsd). Để tham khảo, bạn có thể xem sơ đồ chính sách trên GitHub.
Tham chiếu lỗi
Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách và Cách xử lý lỗi.
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi chính sách này thực thi.
| Mã lỗi | Trạng thái HTTP | Nguyên nhân | Khắc phục |
|---|---|---|---|
accesscontrol.IPDeniedAccess |
403 | Địa chỉ IP của ứng dụng khách hoặc địa chỉ IP được truyền
trong yêu cầu API, khớp với địa chỉ IP được chỉ định trong phần tử <SourceAddress> trong
phần tử <MatchRule> của Chính sách kiểm soát quyền truy cập và thuộc tính action của chính sách
Phần tử <MatchRule> được đặt thành DENY. |
build |
Biến lỗi
Các biến này được đặt khi xảy ra lỗi thời gian chạy. Để biết thêm thông tin, hãy xem bài viết Các biến dành riêng cho lỗi chính sách.
| Biến | Trong đó | Ví dụ: |
|---|---|---|
fault.name="fault_name" |
fault_name là tên của lỗi, như được liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. | fault.name Matches "IPDeniedAccess" |
acl.policy_name.failed |
policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. | acl.AC-AllowAccess.failed = true |
Ví dụ về phản hồi khi gặp lỗi
{
"fault":{
"faultstring":"Access Denied for client ip : 52.211.243.3"
"detail":{
"errorcode":"accesscontrol.IPDeniedAccess"
}
}
}Ví dụ về quy tắc lỗi
<FaultRule name="IPDeniedAccess">
<Step>
<Name>AM-IPDeniedAccess</Name>
<Condition>(fault.name Matches "IPDeniedAccess") </Condition>
</Step>
<Condition>(acl.failed = true) </Condition>
</FaultRule>