maskowanie i ukrywanie danych;

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Podczas debugowania wywołań interfejsów API w Edge mogą one czasami zawierać dane wrażliwe, takie jak dane kart kredytowych czy informacje zdrowotne umożliwiające identyfikację, które należy zamaskować.

Edge udostępnia różne sposoby ukrywania lub maskowania danych wrażliwych w sesjach śledzenia i debugowania.

Ukrywam dane wrażliwe

Możesz zapobiec wyświetlaniu danych wrażliwych w narzędziu do śledzenia i sesjach debugowania, tworząc zmienne niestandardowe poprzedzone znakiem „private.”.

Jeśli na przykład używasz zasady operacji mapowania par klucz-wartość do pobierania wartości z zaszyfrowanej mapy par klucz-wartość, sformatuj nazwy zmiennych w następujący sposób, aby nie pojawiały się one w sesjach śledzenia ani debugowania:

<Get assignTo="private.hiddenData">

Ukrywanie zmiennych wrażliwych to alternatywa dla stosowania maskowania danych, co opisano poniżej. Różnica między ukrywaniem a maskowaniem polega na tym, że ukryte zmienne w ogóle nie są wyświetlane, a wartości maskowane są zastępowane gwiazdkami w sesjach śledzenia i debugowania.

Zmienne bez prefiksu „private.” są wyświetlane w sesjach śledzenia i debugowania w postaci zwykłego tekstu, nawet jeśli dane pochodzą z zaszyfrowanego magazynu danych, np. zaszyfrowanej mapy wartości klucza. Jeśli chcesz zamaskować te wartości, użyj maskowania (poniżej).

Maskowanie danych wrażliwych

Edge umożliwia definiowanie „konfiguracji maski”, aby maskować określone dane 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 wynikach śledzenia są zastępowane gwiazdkami. Na przykład:

<description>**********</description>

Korzystanie z konfiguracji masek

Konfiguracje masek umożliwiają identyfikację danych wrażliwych w tych źródłach:
  • Ładunki XML: za pomocą XPath wskazujesz elementy XML, które mają zostać odfiltrowane z ładunków wiadomości w żądaniu lub odpowiedzi.
  • Ładunki JSON: korzystając z JSONPath, wskazujesz właściwości JSON, które mają zostać odfiltrowane z ładunków wiadomości żądań lub odpowiedzi.
  • Zmienne przepływu: możesz określić listę zmiennych, które powinny być maskowane w danych wyjściowych debugowania. Jeśli podasz zmienne przepływu request.content, response.content lub message.content, treść żądania/odpowiedzi też będzie maskowana.

Podstawowa struktura konfiguracji maski jest przedstawiona w ten sposób w formacie 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 maski

Zdefiniuj konfigurację maski, korzystając z podanych niżej elementów.

Nazwa pola Opis Domyślne Wymagana?
XPathsRequest Lista wyrażeń XPath, które będą oceniane pod kątem ładunków XML (jeśli istnieją) na ścieżce żądania. Wszystkie ścieżki XPath, które zostaną rozpoznane, spowodują maskowanie wartości elementu XML. Nie dotyczy Nie
XPathsResponse Lista wyrażeń XPath, które będą oceniane względem ładunków XML (jeśli istnieją) na ścieżce odpowiedzi. Wszystkie ścieżki XPath, które zostaną rozpoznane, spowodują maskowanie wartości elementu XML. Nie dotyczy Nie
JSONPathsRequest Lista wyrażeń JSONPath, które będą oceniane względem ładunków JSON (jeśli są dostępne) na ścieżce żądania. Wszystkie wartości JSONPath, które zostaną rozpoznane, spowodują maskowanie wartości właściwości JSON. Nie dotyczy Nie
JSONPathsResponse Lista wyrażeń JSONPath, które będą oceniane względem ładunków JSON (jeśli występują) w ścieżce odpowiedzi. Wszystkie wartości JSONPath, które zostaną rozpoznane, spowodują maskowanie wartości właściwości JSON. Nie dotyczy Nie
XPathsFault Lista wyrażeń XPath, które będą oceniane względem ładunków XML (jeśli występują) w procesie błędów (wykonywanym w przypadku wystąpienia błędu w dowolnym momencie przepływu). Wszystkie ścieżki XPath, które zostaną rozpoznane, będą powodować maskowanie wartości elementu XML. Nie dotyczy Nie
JSONPathsFault Lista wyrażeń JSON, które będą oceniane względem ładunków JSON (jeśli takie istnieją) w procesie wyświetlania błędów (wykonywanym w przypadku wystąpienia błędu w dowolnym momencie przepływu). Wszystkie wartości JSONPath, które zostaną rozpoznane, spowodują maskowanie wartości właściwości JSON. Nie dotyczy Nie
Zmienne

Lista zmiennych (zdefiniowanych wstępnie lub niestandardowych), których wartości będą maskowane. Listę zmiennych domyślnych znajdziesz w dokumentacji zmiennych.

Nie dotyczy Nie

Interfejs API konfiguracji maski

Konfiguracje masek są zdefiniowane jako pliki w formacie XML lub JSON, które przesyłasz i pobierasz za pomocą interfejsu API do zarządzania REST. Pełną listę interfejsów API maskowania danych znajdziesz w artykule Maski danych (w języku angielskim).

Aby zobaczyć istniejące konfiguracje maski, możesz po prostu wywołać zasób interfejsu API /maskconfigs w 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 maski zdefiniowane dla konkretnych serwerów proxy interfejsu API, możesz wywołać interfejs /maskconfigs API:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email

Aby zobaczyć konkretną konfigurację maski, podaj jej nazwę:

$ 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ę maski, użyj czasownika POST do przesłania ładunku definiującego konfigurację maski:

$ 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ę maski ograniczoną do określonego 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ę maski możesz usunąć przy użyciu 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.

Odpowiedź na operację DELETE to kod HTTP 204 bez treści komunikatu.

Maskowanie przestrzeni nazw XML

Konfiguracja maski nie wymaga elementu <Namespace> w definicji XPATH, chyba że w ładunku XML została zdefiniowana przestrzeń nazw. Dzieje się tak również wtedy, gdy ładunek XML korzysta z domyślnej przestrzeni nazw.

Na przykład ładunek XML nie definiuje przestrzeni nazw:

<employee>
    <name>abc</name>
    <age>50</age>
</employee>

Dlatego konfiguracja maski 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>

Definicja konfiguracji maski 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 zawiera przestrzeń nazw, ale nie ma prefiksu, czyli jest to domyślna przestrzeń nazw:

<employee xmlns="http://example.com">
    <name>xyz</name>
    <age>50</age>
</employee>

W takim przypadku konfiguracja maski nadal powinna zawierać element <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>