Chính sách AccessControl

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về 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 cho phép hoặc từ chối quyền truy cập vào các API của mình bằng các địa chỉ IP cụ thể.

Video: Xem video ngắn để tìm hiểu thêm về cách cho phép hoặc từ chối quyền truy cập vào các API của bạn bằng các địa chỉ IP cụ thể.

Mặc dù có thể đính kèm chính sách này ở bất cứ đâu trong quy trình proxy API, nhưng bạn nên kiểm tra địa chỉ IP ở đầu quy trình ( 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 xem trong 4 octet (8, 16, 24, 32 bit) mà quy tắc trùng khớp sẽ 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ả cá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ỉ ứng dụng nào khác.

Từ chối bằng cách 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 bản đồ khoá-giá trị (KVM) để lưu trữ các giá trị để ẩn giấu và IP. Đây là một phương pháp hữu ích để thay đổi IP và ẩn 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 của bạn. 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.valuekvm.ip.value (giả sử đó là những gì bạn đã đặt tên cho các biến trong chính sách KVM chứa giá trị của mặt nạ và giá trị IP từ KVM). Nếu giá trị bạn truy xuất 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ả địa chỉ máy khách khác sẽ được 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ả cá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ỉ ứng dụng 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ả cá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ỉ ứng dụng 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ỉ ứng dụng 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 mọi yêu cầu từ địa chỉ: 198.51.*.*

Từ chối yêu cầu từ bất kỳ địa chỉ ứng dụng nào khác.

Cho phép nhiều 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 yêu cầu từ các đị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 IP, từ chối nhiều 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 tập hợp con 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ệ API của bạn khỏi IP độc hại, chính sách Kiểm soát quyền truy cập còn cho phép bạn kiểm soát quyền truy cập IP hợp pháp. Ví dụ: nếu chỉ muốn các máy tính thuộc quyền kiểm soát của doanh nghiệp có thể truy cập vào các API 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ộ của mình. Nhà phát triển làm việc tại nhà có thể truy cập vào những API này bằng VPN.

Quá trình đị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:

  • Xác định một tập hợp quy tắc so khớp bằng một trong hai thao tác (ALLOW hoặc DENY) liên kết với mỗi thao tác.
  • Đối với mỗi quy tắc trùng khớp, hãy chỉ định địa chỉ IP (phần tử SourceAddress).
  • Chỉ định thứ tự thử nghiệm các quy tắc.
  • Tất cả quy tắc so khớp được thực thi theo thứ tự nhất định. 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 tuân theo sẽ bị bỏ qua.
    • Nếu bạn định cấu hình cùng một quy tắc bằng cả thao tác ALLOW và DENY, thì quy tắc được xác định đầu tiên theo thứ tự sẽ được kích hoạt và quy tắc tiếp theo (cùng với thao tác 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 đị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á chính xác(các) địa chỉ IP 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 địa chỉ IP nào cần đánh giá:

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 đị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 này sẽ đánh giá(các) địa chỉ IP trong tiêu đề X-Forwarded-For.

Edge sẽ tự động điền địa chỉ IP của tiêu đề X-Forwarded-For bằng địa chỉ IP 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 ứng dụng hoặc bộ định tuyến). Nếu có nhiều địa chỉ IP trong tiêu đề, thì các địa chỉ đó có thể là chuỗi máy chủ đã xử lý yêu cầu. Tuy nhiên, danh sách địa chỉ này cũng có thể chứa địa chỉ IP giả mạo. Vậy làm thế nào để chính sách này biết được cần đánh giá địa chỉ nào?

Cấu hình tổ chức và cấu hình chính sách của bạn sẽ xác định X-Forwarded-For địa chỉ mà chính sách đánh giá.

Trước tiên, hãy kiểm tra xem thuộc tính feature.enableMultipleXForwardCheckForACL đã được đặt trong tổ chức của bạn hay chưa. Bạn có thể dùng API Lấy thông tin tổ chức để kiểm tra. Sau đó:

  • Nếu bạn không thấy feature.enableMultipleXForwardCheckForACL trong danh sách thuộc tính của tổ chức, tức là thuộc tính đó được đặt thành false (mặc định). Khi bạn đặt thuộc tính này thành false (sai), chính sách này sẽ đánh giá địa chỉ cuối cùng trong tiêu đề (hiển thị trong Công cụ theo dõi). Đây là địa chỉ IP mà Edge nhận được từ giao thức bắt tay TCP bên ngoài gần đây nhất.
  • Nếu bạn đặt feature.enableMultipleXForwardCheckForACL trong tổ chức thành true, hãy định cấu hình phần tử <ValidateBasedOn> để xác định địa chỉ IP mà chính sách này đánh giá.

Thay đổi thuộc tính feature.enableMultipleXForwardCheckForACL

Quản trị viên tổ chức ở Edge có thể dùng API Cập nhật thuộc tính của tổ chức để đặt tài sản feature.enableMultipleXForwardCheckForACL.

Ví dụ về API sau đây đặt tài sản trong Edge cho Đám mây riêng tư. Nếu tổ chức của bạn có các thuộc tính khác, hãy nhớ thêm các thuộc tính đó. Nếu không, các miề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 dành cho đám mây riêng tư, sau khi thay đổi giá trị của thuộc tính feature.enableMultipleXForwardCheckForACL, bạn phải khởi động lại trình xử lý thông báo như mô tả trong phần Bắt đầu/dừng/khởi động lại từng thành phần.

Các phương diện X-Forwarded-For trong số liệu phân tích 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 ứng dụng đã gửi yêu cầu đến Edge, hãy sử dụng các giá trị trong kích thước 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 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 một dải địa chỉ IP thông qua tính năng ẩn giấu. Gói này áp dụng cho cả IPv4 và IPv6. Cách thức hoạt động sẽ như sau: Để đơn giản, chúng tôi sẽ sử dụng IPv4 trong các ví dụ.

Địa chỉ IP là các nhóm số được phân tách bằng dấu chấm. Trong 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 trong tệp nhị phân:

11000110.00110011.01100100.00000001

Đó là 4 nhóm 8 bit hoặc tổng cộng 32 bit. Với CIDR, bạn có thể chỉ ra 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à con số mà bạn sẽ 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 thông tin này Giá trị có thể 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 ba. Điều này làm cho mọi thứ trở nên gọn gàng và gọn gàng, về bản chất, việc tạo một chiếc 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 cấp mặt nạ 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ể dùng các số khác để kiểm soát chi tiết hơn, bao gồm một chút tính toán nhị phân. Dưới đây là ví dụ sử dụng mặt nạ của 30, như trong 198.51.100.1/30, trong đó số 1 cuối cùng là 00000001 ở dạng nhị phân:

Giữ nguyên những thông tin 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, với cấu hình được đặt thành <SourceAddress mask="30">198.51.100.1</SourceAddress>, các IP sau sẽ được cho 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

Tham chiếu phần tử

Tham chiếu 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ả các thuộc tính chung cho tất cả phần tử mẹ của chính sách:

Thuộc tính Nội dung 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 name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

Nếu muốn, bạn có thể sử dụng phần tử <DisplayName> để gắn nhãn cho chính sách này trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên ngôn ngữ tự nhiên khác.

Không áp dụng Bắt buộc
continueOnError

Đặt thành false để trả về lỗi khi một chính sách không hoạt động. Đây là hành vi dự kiến đối với hầu hết các chính sách.

Đặt thành true để quá trình thực thi luồng tiếp tục ngay cả khi chính sách không thành công.

false Không bắt buộc
enabled

Đặt thành true để thực thi chính sách.

Đặt thành false để tắt chính sách này. Chính sách này sẽ không được thực thi ngay cả khi chính sách vẫn được đính kèm vào một quy trì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

Phần tử <DisplayName>

Sử dụng cùng với thuộc tính name để gắn nhãn cho chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên khác theo ngôn ngữ tự nhiên.

<DisplayName>Policy Display Name</DisplayName>
Mặc định

Không áp dụng

Nếu bạn bỏ qua phần tử này, thì giá trị thuộc tính name của chính sách sẽ được sử dụng.

Sự hiện diện Không bắt buộc
Loại Chuỗi

Phần tử <IgnoreTrueClientIPHeader>

Khi bạn đặt giá trị này thành đúng (true), chính sách này sẽ bỏ qua tiêu đề True-Client-IP và đánh giá các đị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
Sự hiện diện 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 điều chỉnh của các quy tắc so khớp.

<IPRules noRuleMatchAction = "ALLOW">
Mặc định Không áp dụng
Sự hiện diện Không bắt buộc
Loại Không áp dụng

Thuộc tính

Thuộc tính Nội dung mô tả Loại Mặc định Sự hiện diện
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 trùng khớp đã chỉ định chưa được giải quyết (chưa được so 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 (các) 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
Sự hiện diện Không bắt buộc
Loại Không áp dụng

Thuộc tính

Thuộc tính Nội dung mô tả Loại Mặc định Sự hiện diện
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 trùng khớp đã chỉ định chưa được giải quyết (chưa được so 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 ứng dụng.

Giá trị hợp lệ: Địa chỉ IP hợp lệ (ký hiệu thập phân có dấu chấm). Đối với hành vi sử dụng 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 thông báo cho thuộc tính mask hoặc địa chỉ IP, 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ó sẵn trong luồng proxy API.

Ví dụ: bạn có thể lưu trữ địa chỉ IP trong bản đồ giá trị khoá (KVM) và sử dụng chính sách KeyValueMapOperations để truy xuất địa chỉ IP và gán đị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 sẽ giúp bạn linh hoạt thay đổi các giá trị trong thời gian chạy mà không phải sửa đổi và triển khai lại proxy API.

Mặc định Không áp dụng
Sự hiện diện Không bắt buộc
Loại Chuỗi (chỉ một địa chỉ IP)

Thuộc tính

Thuộc tính Nội dung mô tả Loại Mặc định Sự hiện diện
đeo-khẩu-trang

Thuộc tính mask là một cách cho biết dải địa chỉ IP cần cho phép hoặc từ chối. Mặt nạ tương đương với việc sử dụng ký hiệu CIDR (Định tuyến liên miền không phân lớp). Ví dụ:

<SourceAddress mask="24">198.51.100.1</SourceAddress>

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ị không (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 mask cũng hỗ trợ Mẫu thông báo, nghĩa là bạn có thể đặt giá trị bằng một biến hiện có sẵn trong quy trình proxy API. Ví dụ: bạn có thể lưu trữ giá trị mặt nạ trong KVM và sử dụng chính sách KeyValueMapOperations để truy xuất mặt nạ và gán mặt nạ đó cho một biến. Để đặt mặt nạ IP bằng biến này, hãy sử dụng định dạng sau, giả sử biến có tên là kvm.mask.value:

mask="{kvm.mask.value}"

Số nguyên Không áp dụng Bắt buộc

Phần tử <ValidationBasedOn>

Khi tiêu đề HTTP X-Forwarded-For chứa nhiều địa chỉ IP, hãy sử dụng phần tử ValidateBasedOn này để kiểm soát những địa chỉ IP nào được đánh giá.

Hãy 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 các đị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 tin tưởng vào tính hợp lệ của các địa chỉ đó và/hoặc thiết lập các quy tắc DENY hoặc ALLOW 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ề ứng dụng, và 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 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ị bạn nhập vào phần tử này cho phép bạn xác định xem 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.

<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
Sự hiện diện Không bắt buộc
Giá trị hợp lệ

X_FORWARDED_FOR_ALL_IP (mặc định)

X_FORWARDED_FOR_FIRST_IP

X_FORWARDED_FOR_LAST_IP

Giản đồ

Mỗi loại chính sách được xác định bằng một lược đồ XML (.cây). Để tham khảo, có lược đồ 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 đóng vai trò quan trọng trong việc phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem Những điều bạn cần biết về lỗi chính sáchXử lý lỗi.

Lỗi thời gian chạy

Những lỗi này có thể xảy ra khi thực thi chính sách.

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 hoặc địa chỉ IP được chuyển trong yêu cầu API khớp với địa chỉ IP được chỉ định cho phần tử <SourceAddress> trong phần tử <MatchRule> của Chính sách kiểm soát quyền truy cập, còn thuộc tính action của phần tử <MatchRule> được đặt thành DENY.

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 cụ thể 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ư 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 của chính sách báo lỗi do người dùng chỉ định. acl.AC-AllowAccess.failed = true

Ví dụ về phản hồi 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>