Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Podczas debugowania wywołań interfejsów API w Edge zawartość może czasami zawierać dane wrażliwe, takie numery kart kredytowych lub informacje o stanie zdrowia umożliwiające identyfikację (PHI), które należy zamaskować.
Edge oferuje różne sposoby ukrywania lub maskowania danych wrażliwych w sesjach śledzenia i debugowania.
Ukrywanie danych wrażliwych
Możesz uniemożliwić wyświetlanie danych wrażliwych w narzędziu do śledzenia i sesjach debugowania, tworząc
zmienne niestandardowe z prefiksem "private.".
Jeśli na przykład używasz zasady Key Value Map Operations do pobierania wartości z zaszyfrowanej mapy wartości kluczy, sformatuj nazwy zmiennych w ten sposób, aby wartości nie były wyświetlane w sesjach śledzenia ani debugowania:
<Get assignTo="private.hiddenData">
Ukrywanie zmiennych wrażliwych jest alternatywą dla maskowania danych, które opisujemy poniżej. Różnica między ukrywaniem a maskowaniem polega na tym, że ukryte zmienne nie są w ogóle wyświetlane, a zamaskowane wartości są zastępowane gwiazdkami w sesjach śledzenia i debugowania.
Zmienne bez prefiksu „private.” są wyświetlane w sesjach śledzenia i debugowania w postaci tekstu nieszyfrowanego, nawet jeśli dane pochodzą z zaszyfrowanego magazynu danych, takiego jak zaszyfrowana mapa klucz-wartość. Jeśli chcesz zamaskować te wartości, użyj maskowania (poniżej).
Maskowanie danych wrażliwych
Edge umożliwia definiowanie „konfiguracji maskowania” w celu maskowania określonych danych w sesjach śledzenia i debugowania. Konfiguracje maskowania można ustawić globalnie (na poziomie organizacji) lub lokalnie (na poziomie serwera proxy interfejsu API ).
Gdy dane są maskowane, w danych wyjściowych śledzenia są zastępowane gwiazdkami. Na przykład:
<description>**********</description>
Korzystanie z konfiguracji maskowania
Konfiguracje maskowania umożliwiają identyfikowanie danych wrażliwych w tych źródłach:- Ładunki XML: za pomocą XPath identyfikujesz elementy XML, które mają być filtrowane z ładunków wiadomości żądania lub odpowiedzi.
- Ładunki JSON: za pomocą JSONPath identyfikujesz właściwości JSON, które mają być filtrowane z ładunków wiadomości żądania lub odpowiedzi.
- Zmienne przepływu: możesz określić listę zmiennych, które mają być maskowane w danych wyjściowych debugowania. Jeśli określisz zmienne przepływu
request.content,response.content, lubmessage.content, zamaskowane zostanie też ciało żądania lub odpowiedzi.
Podstawową strukturę konfiguracji maskowania przedstawia ten kod XML:
<MaskDataConfiguration name="default"> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:Greeting/myco:User</XPathRequest> </XPathsRequest> <XPathsResponse> <XPathResponse>/myco:Greeting/myco:User</XPathResponse> </XPathsResponse> <JSONPathsRequest> <JSONPathRequest>$.store.book[*].author</JSONPathRequest> </JSONPathsRequest> <JSONPathsResponse> <JSONPathResponse>$.store.book[*].author</JSONPathResponse> </JSONPathsResponse> <XPathsFault> <XPathFault>/myco:Greeting/myco:User</XPathFault> </XPathsFault> <JSONPathsFault> <JSONPathFault>$.store.book[*].author</JSONPathFault> </JSONPathsFault> <Variables> <Variable>request.header.user-agent</Variable> <Variable>request.formparam.password</Variable> </Variables> </MaskDataConfiguration>
Konfigurowanie zasobu konfiguracji maskowania
Zdefiniuj konfigurację maskowania za pomocą tych elementów.
| Nazwa pola | Opis | Domyślny | Wymagany? |
|---|---|---|---|
| XPathsRequest | Lista wyrażeń XPath, które będą oceniane w odniesieniu do ładunków XML (jeśli występują) w ścieżce żądania. Każdy XPath, który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości elementu XML elementu. | Nie dotyczy | Nie |
| XPathsResponse | Lista wyrażeń XPath, które będą oceniane w odniesieniu do ładunków XML (jeśli występują) w ścieżce odpowiedzi. Każdy XPath, który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości elementu XML elementu. | Nie dotyczy | Nie |
| JSONPathsRequest | Lista wyrażeń JSONPath, które będą oceniane w odniesieniu do ładunków JSON (jeśli występują) w ścieżce żądania. Każdy JSONPath, który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości właściwości JSON. | Nie dotyczy | Nie |
| JSONPathsResponse | Lista wyrażeń JSONPath, które będą oceniane w odniesieniu do ładunków JSON (jeśli występują) w ścieżce odpowiedzi. Każdy JSONPath, który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości właściwości JSON. | Nie dotyczy | Nie |
| XPathsFault | Lista wyrażeń XPath, które będą oceniane w odniesieniu do ładunków XML (jeśli występują) w przepływie błędów (który jest wykonywany, jeśli w dowolnym momencie przepływu wystąpi błąd). Każdy XPath, który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości elementu XML. | Nie dotyczy | Nie |
| JSONPathsFault | Lista wyrażeń JSON, które będą oceniane w odniesieniu do ładunków JSON (jeśli występują) w przepływie błędów (który jest wykonywany, jeśli w dowolnym momencie przepływu wystąpi błąd). Każdy JSONPath który zostanie prawidłowo rozwiązany, spowoduje zamaskowanie wartości właściwości JSON. | Nie dotyczy | Nie |
| Variables |
Lista zmiennych (wstępnie zdefiniowanych lub niestandardowych), których wartości będą maskowane. Listę zmiennych domyślnych znajdziesz w artykule Zmienne. |
Nie dotyczy | Nie |
Interfejs API konfiguracji maskowania
Konfiguracje maskowania są definiowane jako pliki w formacie XML lub JSON, które przesyłasz i pobierasz za pomocą interfejsu RESTful Management API. Pełną listę interfejsów API maskowania danych znajdziesz w artykule Maski danych.
Aby zobaczyć istniejące konfiguracje maskowania, możesz po prostu wywołać zasób interfejsu API
/maskconfigs w swojej organizacji:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u emailTen przykład pokazuje podstawową składnię uwierzytelniania. Możesz używać innych typów uwierzytelniania, takich jak Oauth2 lub SAML.
Aby zobaczyć konfiguracje maskowania zdefiniowane dla konkretnych serwerów proxy interfejsu API, możesz wywołać interfejs API
/maskconfigs:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
Aby zobaczyć konkretną konfigurację maskowania, podaj nazwę maski:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs/default \
-u email
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/default \
-u email
Aby utworzyć konfigurację maskowania, użyj czasownika POST, aby przesłać ładunek definiujący konfigurację maskowania:
$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
<Namespaces>
<Namespace prefix="myco">http://example.com</Namespace>
</Namespaces>
<XPathsRequest>
<XPathRequest>/myco:Greeting/myco:User</XPathRequest>
</XPathsRequest>
<XPathsResponse>
<XPathResponse>/myco:Greeting/myco:User</XPathResponse>
</XPathsResponse>
<JSONPathsRequest>
<JSONPathRequest>$.store.book[*].author</JSONPathRequest>
</JSONPathsRequest>
<JSONPathsResponse>
<JSONPathResponse>$.store.book[*].author</JSONPathResponse>
</JSONPathsResponse>
<XPathsFault>
<XPathFault>/myco:Greeting/myco:User</XPathFault>
</XPathsFault>
<JSONPathsFault>
<JSONPathFault>$.store.book[*].author</JSONPathFault>
</JSONPathsFault>
<Variables>
<Variable>request.header.user-agent</Variable>
<Variable>request.formparam.password</Variable>
</Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email
$ curl -H "Content-type:text/xml" -X POST -d \
'<MaskDataConfiguration name="default">
<Namespaces>
<Namespace prefix="myco">http://example.com</Namespace>
</Namespaces>
<XPathsRequest>
<XPathRequest>/myco:Greeting/myco:User</XPathRequest>
</XPathsRequest>
<XPathsResponse>
<XPathResponse>/myco:Greeting/myco:User</XPathResponse>
</XPathsResponse>
<JSONPathsRequest>
<JSONPathRequest>$.store.book[*].author</JSONPathRequest>
</JSONPathsRequest>
<JSONPathsResponse>
<JSONPathResponse>$.store.book[*].author</JSONPathResponse>
</JSONPathsResponse>
<XPathsFault>
<XPathFault>/myco:Greeting/myco:User</XPathFault>
</XPathsFault>
<JSONPathsFault>
<JSONPathFault>$.store.book[*].author</JSONPathFault>
</JSONPathsFault>
<Variables>
<Variable>request.header.user-agent</Variable>
<Variable>request.formparam.password</Variable>
</Variables>
</MaskDataConfiguration>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
Konfigurację maskowania możesz usunąć za pomocą czasownika DELETE:
$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email
Ten przykład pokazuje podstawową składnię uwierzytelniania. Możesz używać innych typów uwierzytelniania, takich jak Oauth2 lub SAML.
Odpowiedzią na operację DELETE jest kod HTTP 204 bez treści wiadomości.
Maskowanie przestrzeni nazw XML
Konfiguracja maskowania nie wymaga elementu <Namespace> w definicji XPATH
, chyba że przestrzeń nazw jest zdefiniowana w ładunku XML. Dotyczy to również sytuacji, gdy ładunek XML
używa domyślnej przestrzeni nazw.
Na przykład ładunek XML nie definiuje przestrzeni nazw:
<employee>
<name>abc</name>
<age>50</age>
</employee>Dlatego konfiguracja maskowania nie wymaga elementu <Namespace>:
<MaskDataConfiguration>
<XPathsRequest>
<XPathRequest>/employee/name</XPathRequest>
<XPathsRequest>
</MaskDataConfiguration>Jeśli ładunek XML zawiera przestrzeń nazw i prefiks:
<myco:employee xmlns:myco="http://example.com">
<myco:name>xyz</myco:name>
<myco:age>50</myco:age>
</myco:employee>Wtedy definicja konfiguracji maskowania powinna zawierać element <Namespace>:
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>
Jeśli ładunek XML ma przestrzeń nazw, ale nie ma prefiksu, co oznacza domyślną przestrzeń nazw:
<employee xmlns="http://example.com">
<name>xyz</name>
<age>50</age>
</employee>Wtedy konfiguracja maskowania powinna nadal zawierać element <Namespace>:
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>