maskowanie i ukrywanie danych;

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, lub message.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 email

Ten 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
Aby utworzyć konfigurację maskowania, która jest ograniczona do konkretnego serwera proxy interfejsu API:
$ 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>