Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Zasada kontroli dostępu pozwala przyznawać i odbierać dostęp do interfejsów API według określonego adresu IP. adresów.
Film: obejrzyj krótki film, aby dowiedzieć się więcej o tym, jak akceptować i odrzucać treści. dostęp do interfejsów API za pomocą określonych adresów IP.
Można ją dołączyć w dowolnym miejscu procesu serwera proxy interfejsu API, jednak zalecane jest sprawdź adresy IP na początku procesu ( Request / ProxyEndpoint / PreFlow), nawet przed uwierzytelnianie czy sprawdzanie limitu.
Przykłady
Wartości masek w poniższych przykładach IPv4 wskazują, który z 4 oktetów (8, 16, 24, 32)
(bity) brane pod uwagę przez regułę dopasowania, gdy zezwalasz na dostęp lub go blokujesz. Wartością domyślną jest 32. Zobacz
mask
w dokumentacji elementu.
i informacjami o nich.
Odmowa 198.51.100.1
<AccessControl name="ACL"> <IPRules noRuleMatchAction = "ALLOW"> <MatchRule action = "DENY"> <SourceAddress mask="32">198.51.100.1</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Odrzucaj wszystkie żądania z adresu klienta: 198.51.100.1
Zezwalaj na żądania z dowolnego innego adresu klienta.
Odrzucaj przy użyciu zmiennych
<AccessControl name="ACL"> <IPRules noRuleMatchAction = "ALLOW"> <MatchRule action = "DENY"> <SourceAddress mask="{kvm.mask.value}">{kvm.ip.value}</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Załóżmy, że używasz mapy wartości klucza (KVM) do przechowywania wartości na potrzeby maskowania i adresów IP.
To wygodne podejście do zmiany adresów IP i maskowania w czasie działania bez konieczności aktualizowania
i ponownie wdróż serwer proxy interfejsu API. Możesz użyć zasady KeyValueMapOperations, aby pobrać
zmienne zawierające wartości kvm.mask.value
i
kvm.ip.value
(zakładając, że zmienne zostały przez Ciebie określone w zasadzie KVM
które zawierają wartości maski i adresu IP z Twojej maszyny wirtualnej).
Jeśli pobrane wartości to 24
dla maski i 198.51.100.1
w przypadku adresu IP zasada AccessControl odrzuca wszystkie żądania z adresu 198.51.100*.
Wszystkie inne adresy klientów będą dozwolone.
Odmowa 198.51.100.*
<AccessControl name="ACL"> <IPRules noRuleMatchAction = "ALLOW"> <MatchRule action = "DENY"> <SourceAddress mask="24">198.51.100.1</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Odrzucaj wszystkie żądania z adresu klienta: 198.51.100*.
Zezwalaj na żądania z dowolnego innego adresu klienta.
198,51*.
<AccessControl name="ACL"> <IPRules noRuleMatchAction = "ALLOW"> <MatchRule action = "DENY"> <SourceAddress mask="16">198.51.100.1</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Odrzucaj wszystkie żądania z adresu klienta: 198.51.*.*
Zezwalaj na żądania z dowolnego innego adresu klienta.
Odmowa 198.51.100.*, zezwalaj na 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>
Odrzuć wszystkie żądania z adresu klienta: 198.51.100.*, ale zezwalaj na wersję 192.0.2.1.
Zezwalaj na żądania z dowolnego innego adresu klienta.
Zezwalaj na kod 198.51*.*
<AccessControl name="ACL"> <IPRules noRuleMatchAction = "DENY"> <MatchRule action = "ALLOW"> <SourceAddress mask="16">198.51.100.1</SourceAddress> </MatchRule> </IPRules> </AccessControl>
Zezwalaj na wszystkie żądania z adresu: 198.51.*.*
Odrzucaj żądania z innych adresów klienta.
Zezwalaj na wiele adresów 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>
Zezwalaj na żądania z adresów klientów: 198.51.100*. 192.0.2*. 203.0.113*.
Odrzucaj pozostałe adresy.
Odrzucaj wiele adresów 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>
Odrzucaj żądania z adresów klientów: 198.51.100.* 192.0.2*. 203.0.113*.
Zezwalaj na wszystkie inne adresy.
Zezwalaj na wiele adresów IP, odrzucaj wiele adresów 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>
Zezwalaj: 198.51*.* 192,0*.* 203,0*.*
Odrzucanie podzbioru listy dozwolonych: 198.51.100*. 192.0.2*. 203.0.113*.
Zastosowanie
Oprócz ochrony interfejsów API przed złośliwymi adresami IP zasada kontroli dostępu obejmuje również daje kontrolę nad prawidłowym dostępem IP. Jeśli na przykład chcesz mieć do czynienia tylko z komputerami kontroli nad przedsiębiorstwem w celu dostępu do interfejsów API udostępnianych w środowisku testowym, możesz zezwolić zakres adresów IP sieci wewnętrznej. Deweloperzy pracujący z domu mogą uzyskać dostęp do tych interfejsów API przez VPN.
Konfiguracja i wykonanie zasady kontroli dostępu obejmuje:
- zdefiniować zestaw reguł dopasowania z jednym z 2 powiązanych działań (ZEZWÓL lub ODRZUĆ). z każdą z nich.
- Dla każdej reguły dopasowania określ adres IP (element SourceAddress).
- Zobacz Jak zasada wybiera adresy IP do oceny w celu określenia adresów IP w wiadomości, którą konfigurujesz reguły.
- Skonfiguruj maskę dla każdego adresu IP. Zezwalasz na dostęp lub go odrzucasz na podstawie wartości maski w adres IP. Zapoznaj się z artykułem Maskowanie adresów IP w notacji CIDR.
- Określ kolejność testowania reguł.
- Wszystkie reguły dopasowania są stosowane w podanej kolejności. W przypadku dopasowania reguły
odpowiednie działanie jest wykonywane, a kolejne reguły dopasowania są pomijane.
- Jeśli ta sama reguła jest skonfigurowana z działaniami ZEZWALAJ i ODRZUĆ, reguła, która ma wartość zdefiniowane jako pierwsze w kolejności, a następnie uruchamiana jest następna reguła (z drugim działaniem) pominięto.
Jak zasada wybiera adres IP do oceny
W żądaniu adresy IP mogą pochodzić z różnych źródeł. Na przykład parametr
Nagłówek wiadomości True-Client-IP
może zawierać adres IP,
Nagłówek X-Forwarded-For
może zawierać co najmniej 1 adres IP. Ta sekcja
opisuje, jak skonfigurować zasadę AccessControl, aby ocenić precyzyjne adresy IP,
i analizy.
Oto logika, za pomocą której zasada AccessControl decyduje, który adres IP oceń:
1. Nagłówek True-Client-IP
Zasada najpierw sprawdza adres IP w nagłówku True-Client-IP
. Jeśli
jeśli nagłówek zawiera prawidłowy adres IP, zasada określa ten adres.
2. Nagłówek X-Forwarded-For
Jeśli nie ma nagłówka True-Client-IP
lub masz ustawione
Element <IgnoreTrueClientIPHeader> w
true(prawda), zasada ocenia adresy IP w nagłówku X-Forwarded-For
.
Edge automatycznie wypełnia nagłówek X-Forwarded-For
adresem IP otrzymanym podczas ostatniego zewnętrznego uzgadniania połączenia TCP (takim jak adres IP klienta lub
routera). Jeśli nagłówek zawiera kilka adresów IP,
to prawdopodobnie łańcuch serwerów, które przetworzyły żądanie. Lista adresów
może również zawierać sfałszowany adres IP. Skąd więc zasady wiemy, które adresy
ocenić?
Konfiguracja i zasady organizacji określają,
X-Forwarded-For
adresów(y) ocenianych przez zasadę.
Najpierw sprawdź, czy właściwość feature.enableMultipleXForwardCheckForACL
jest skonfigurowany w organizacji. Za pomocą
Pobierz interfejs API organizacji do sprawdzenia. Następnie:
- Jeśli nie widzisz aplikacji
feature.enableMultipleXForwardCheckForACL
na swoim na liście właściwości organizacji, oznacza to, że właściwość ma wartość false (fałsz). (domyślnie). Gdy ta właściwość ma wartość Fałsz, zasada ocenia last (ostatni) w nagłówku (widoczny w narzędzia śledzenia), czyli adresem IP, Krawędź odebrana z ostatniego zewnętrznego uzgadniania połączenia TCP. - Jeśli
feature.enableMultipleXForwardCheckForACL
w Twojej organizacji ma wartość Prawda, skonfiguruj <ValidateBasedOn> w celu określenia adresów IP, które są oceniane przez zasadę.
Zmiana właściwości feature.enableMultipleXForwardCheckForACL
Administratorzy organizacji brzegowych mogą używać
Zaktualizuj interfejs API organizacji, aby ustawić
Usługa feature.enableMultipleXForwardCheckForACL
.
Poniższy przykładowy interfejs API ustawia właściwość w Edge dla chmury prywatnej. Jeśli w organizacji są ustawione inne właściwości, pamiętaj, aby je także uwzględnić. W przeciwnym razie zostaną usunięte.
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>"
W Edge dla chmury prywatnej, po zmianie wartości
usługę feature.enableMultipleXForwardCheckForACL
,
musisz ponownie uruchomić procesory wiadomości, jak opisano w
Uruchom/zatrzymaj/uruchom ponownie poszczególne komponenty.
Wymiary X-Forwarded-For w statystykach Apigee
Edge Analytics zapisuje wartość nagłówka X-Forwarded-For
w
x_forwarded_for_ip
. Aby określić adres IP klienta, który
żądania do Edge, użyj wartości z pliku ax_true_client_ip
lub
ax_resolved_client_ip
wymiarów. Zobacz
Dane i wymiary Analytics
i filtrów.
Maskowanie adresów IP w notacji CIDR
Notacja CIDR (Classless Inter-Domain Routing) to sposób wskazywania zakresu adresów IP przez maskowanie. Dotyczy zarówno IPv4, jak i IPv6. Działa to w następujący sposób. W naszej witrynie użyjemy protokołu IPv4 dla uproszczenia.
Adresy IP to grupy numerów oddzielonych kropkami. W ujęciu binarnym każda grupa jest określona liczba bitów (8 w przypadku IPv4 i 16 w przypadku IPv6). Adres IPv4 198.51.100.1 wygląda tak w pliku binarnym:
11000110.00110011.01100100.00000001
Są to 4 grupy po 8 bitów, czyli łącznie 32 bity. W CIDR możesz wskazać zakres, dodając /number (1-32) do adresu IP w następujący sposób:
198.51.100.1/24
W tym przypadku liczba 24 to liczba, której należy użyć w atrybucie mask
.
w tej zasadzie.
Ten zapis oznacza, że pierwsze 24 bity zachowaj dokładnie w takiej postaci, w jakiej jest. Pozostałe bity o dowolnej wartości od 0 do 255”. Na przykład:
Zachowaj je bez zmian | Możliwe wartości w przypadku ostatniej grupy |
---|---|
198.51.100. | 0–255 |
Zwróć uwagę, że maska występuje na końcu grupy 3. Dzięki temu wszystko będzie ładnie aby utworzyć maskę w ten sposób: 198.51.100.*. W większości przypadków przy użyciu wielokrotności 8 (IPv4) i 16 (IPv6) zapewni Ci odpowiedni poziom maskowania:
IPv4: 8, 16, 24, 32
IPv6: 16, 32, 48, 64, 80, 96, 112, 128
Aby uzyskać bardziej precyzyjną kontrolę, możesz użyć innych liczb, co wymaga użycia drobnego kodu binarnego obliczeń. Oto przykład z maską 30, np. 198.51.100.1/30, gdzie ostatni 1 to 00000001 w formacie binarnym:
Zachowaj je bez zmian | Dozwolone wartości |
---|---|
11000110.00110011.01100100.000000 (pierwsze 30 bitów) | 00000000, 00000001, 00000010 lub 00000011 |
198.51.100. | 0, 1, 2 lub 3 |
W tym przykładzie, gdy konfiguracja jest ustawiona na <SourceAddress
mask="30">198.51.100.1</SourceAddress>
, dozwolone są poniższe adresy IP (lub
odrzucona (w zależności od reguł):
- 198.51.100.0
- 198.51.100.1
- 198.51.100.2
- 198.51.100.3
Odwołanie do elementu
Dokumentacja elementu opisuje elementy i atrybuty zasad kontroli dostępu.
<?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> atrybuty
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<IgnoreTrueClientIPHeader> element
Jeśli zasada ma wartość Prawda, zasada ignoruje nagłówek True-Client-IP
i sprawdza adresy IP w nagłówku X-Forwarded-For
, po
Skonfigurowany przez Ciebie X-Forwarded-For ocena.
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1"> <DisplayName>Access Control-1</DisplayName> <IgnoreTrueClientIPHeader>true</IgnoreTrueClientIPHeader> ... </AccessControl>
Domyślny | fałsz |
---|---|
Obecność | Opcjonalnie |
Typ | Wartość logiczna |
<IPRules> element
Element nadrzędny zawierający reguły, które zezwalają na adresy IP lub je odrzucają.
Atrybut noRuleMatchAction
pozwala określić sposób obsługi adresów IP,
nie są uwzględnione w regułach dopasowania.
<IPRules noRuleMatchAction = "ALLOW">
Domyślny | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Nie dotyczy |
Atrybuty
Atrybut | Opis | Typ | Domyślny | Obecność |
---|---|---|---|---|
noRuleMatchAction |
Działanie, które należy wykonać (zezwalając na dostęp lub odmów dostępu), jeśli określona reguła dopasowania nie została zakończona.
(niedopasowane).
Prawidłowa wartość: ALLOW lub DENY
|
Ciąg znaków | ZEZWÓL | Wymagane |
<IPRules>/<MatchRule> element
Działanie, jakie należy podjąć (zezwalając na dostęp lub odmów go), jeśli adres IP pasuje do adresów źródłowych. określić definicję.
<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>
Domyślny | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Nie dotyczy |
Atrybuty
Atrybut | Opis | Typ | Domyślny | Obecność |
---|---|---|---|---|
działanie |
Działanie, które należy wykonać (zezwalając na dostęp lub odmów dostępu), jeśli określona reguła dopasowania nie została zakończona. (niedopasowane). Prawidłowa wartość: ALLOW lub DENY |
Ciąg znaków | ZEZWÓL | Wymagane |
<IPRules>/<MatchRule>/<SourceAddress> element
Zakres adresów IP klienta.
Prawidłowa wartość: prawidłowy adres IP (w notacji dziesiętnej z kropkami). Aby działać prawidłowo, użyj operatora
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>
Jak widać w poprzednim przykładzie, element SourceAddress
obsługuje też
Szablony wiadomości dla
mask
lub adres IP, który
oznacza, że możesz ustawić wartości za pomocą zmiennych, które są obecnie dostępne
Przepływ serwera proxy interfejsu API.
Na przykład możesz zapisać adres IP w mapie wartości klucza (KVM) i użyć funkcji
zasadę KeyValueMapOperations, aby pobrać adres IP i przypisać go do zmiennej (np.
kvm.ip.value
). Następnie możesz użyć tej zmiennej jako adresu IP:
<SourceAddress mask="24">{kvm.ip.value}</SourceAddress>
Ustawienie maski i/lub adresu IP za pomocą zmiennej umożliwia swobodną zmianę wartości środowiska wykonawczego bez konieczności modyfikowania i ponownego wdrażania serwera proxy interfejsu API.
Domyślny | Nie dotyczy |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków (tylko pojedynczy adres IP) |
Atrybuty
Atrybut | Opis | Typ | Domyślny | Obecność |
---|---|---|---|---|
maska |
Atrybut
jest odpowiednikiem tej notacji CIDR: 198.51.100.1/24 Prawidłowe wartości: IPv4: 1–32 IPv6: 1–128 Wartość zerowa (0) jest prawidłowa tylko dla adresu IP 0.0.0.0, a więc jest niepraktyczna. Ustawianie maski za pomocą zmiennej Atrybut
|
Liczba całkowita | Nie dotyczy | Wymagane |
<ValidateBasedOn> element
Gdy nagłówek HTTP X-Forwarded-For
zawiera kilka adresów IP
adresów IP, użyj tego elementu ValidateBasedOn
, aby określić, które adresy
oceniono.
Użyj tej metody do oceny adresów IP tylko wtedy, gdy masz pewność co do ich poprawności
adresów IP, które chcesz ocenić. Na przykład: jeśli chcesz ocenić wszystkie
adresów IP w nagłówku X-Forwarded-For
, musisz uznać,
adresy i/lub skonfigurować kompleksowe reguły ODRZUĆ albo ZEZWALAJ, aby tylko zaufane
Adresy IP wywołują serwer proxy interfejsu API.
Adres IP w nagłówku po lewej stronie należy do klienta, a po prawej znajduje się serwer który przekierował żądanie do bieżącej usługi. Adres IP lub adres skrajny z prawej strony to adres odebrany przez Edge podczas ostatniego zewnętrznego uzgadniania połączenia TCP.
Wartość wpisana w tym elemencie pozwala określić, czy wszystkie adresy IP mają być sprawdzane nagłówek (domyślnie), tylko pierwszy adres IP lub tylko ostatni adres 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>
Domyślny | X_FORWARDED_FOR_ALL_IP |
---|---|
Obecność | Opcjonalnie |
Prawidłowe wartości |
|
Schematy
Każdy typ zasad jest definiowany przez schemat XML (.xsd). Dla porównania: schematy zasad są dostępne na GitHubie.
Informacje o błędzie
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
accesscontrol.IPDeniedAccess |
403 | Adres IP klienta lub adres IP przekazany
w żądaniu do interfejsu API odpowiada adresowi IP określonemu w elemencie <SourceAddress> w obrębie
element <MatchRule> zasad kontroli dostępu oraz atrybut action klasy
Element <MatchRule> jest ustawiony na DENY . |
build |
Zmienne błędów
Te zmienne są ustawiane po wystąpieniu błędu działania. Więcej informacji znajdziesz w artykule Zmienne związane z błędami związanymi z zasadami.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name Matches "IPDeniedAccess" |
acl.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | acl.AC-AllowAccess.failed = true |
Przykładowa odpowiedź na błąd
{ "fault":{ "faultstring":"Access Denied for client ip : 52.211.243.3" "detail":{ "errorcode":"accesscontrol.IPDeniedAccess" } } }
Przykładowa reguła błędu
<FaultRule name="IPDeniedAccess"> <Step> <Name>AM-IPDeniedAccess</Name> <Condition>(fault.name Matches "IPDeniedAccess") </Condition> </Step> <Condition>(acl.failed = true) </Condition> </FaultRule>