Datenmaskierung und -ausblendung

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Wenn Sie Fehler in API-Aufrufen in Edge debuggen, können die Inhalte manchmal sensible Daten wie Kreditkarten oder personenidentifizierbare Informationen (Personal Identifiable Health Information, PHI) enthalten, die maskiert werden müssen.

Edge bietet verschiedene Möglichkeiten zum Ausblenden oder Maskieren sensibler Daten aus Trace und Debug-Sitzungen.

Sensible Daten ausblenden

Sie können verhindern, dass vertrauliche Daten im Trace-Tool und in Debug-Sitzungen angezeigt werden, indem Sie benutzerdefinierte Variablen mit dem Präfix private. erstellen.

Wenn Sie beispielsweise die Richtlinie für Schlüsselwertzuordnungsvorgänge zum Abrufen von Werten aus einer verschlüsselten Schlüsselwertzuordnung verwenden, formatieren Sie die Variablennamen so, um sicherzustellen, dass die Werte nicht in Trace- oder Debug-Sitzungen angezeigt werden:

<Get assignTo="private.hiddenData">

Das Ausblenden vertraulicher Variablen ist eine Alternative zur Datenmaskierung, die im Folgenden beschrieben wird. Der Unterschied zwischen Ausblenden und Maskieren besteht darin, dass ausgeblendete Variablen überhaupt nicht angezeigt werden und maskierte Werte in Trace- und Debug-Sitzungen durch Sternchen ersetzt werden.

Variablen ohne das Präfix "private." werden in Trace und in Debug-Sitzungen als Klartext angezeigt, auch wenn die Daten aus einem verschlüsselten Datenspeicher wie einer verschlüsselten Schlüssel/Wert-Zuordnung stammen. Verwenden Sie die Maskierung (siehe unten), wenn Sie diese Werte maskieren möchten.

Vertrauliche Daten maskieren

Mit Edge können Sie „Maskenkonfigurationen“ definieren, um bestimmte Daten in Trace- und Debug-Sitzungen zu maskieren. Maskierungskonfigurationen können global (auf Organisationsebene) oder lokal (auf API-Proxyebene) festgelegt werden.

Wenn Daten maskiert werden, werden sie in der Trace-Ausgabe durch Sternchen ersetzt. Beispiel:

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

Maskenkonfigurationen verwenden

Mit Maskenkonfigurationen können Sie sensible Daten in diesen Quellen identifizieren:
  • XML-Nutzlasten: Mit XPath identifizieren Sie XML-Elemente, die aus den Nutzlasten der Anfrage- oder Antwortnachricht gefiltert werden sollen.
  • JSON-Nutzlasten: Mit JSONPath identifizieren Sie JSON-Attribute, die aus der Nutzlast von Anfrage- oder Antwortnachrichten gefiltert werden sollen.
  • Flussvariablen: Sie können eine Liste von Variablen angeben, die in der Debug-Ausgabe maskiert werden sollen. Wenn Sie die Flussvariablen request.content, response.content oder message.content angeben, wird der Anfrage-/Antworttext ebenfalls maskiert.

Die Grundstruktur einer Maskenkonfiguration wird durch die folgende XML-Darstellung dargestellt:

<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>

Maskenkonfigurationsressource konfigurieren

Definieren Sie eine Maskenkonfiguration mit den folgenden Elementen.

Feldname Beschreibung Standard Erforderlich?
XPathsRequest Eine Liste von XPath-Ausdrücken, die anhand von XML-Nutzlasten (falls vorhanden) im Anfragepfad ausgewertet werden. Alle XPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des XML-Elements maskiert wird. Nein
XPathsResponse Eine Liste von XPath-Ausdrücken, die anhand von XML-Nutzlasten (falls vorhanden) im Antwortpfad ausgewertet werden. Alle XPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des XML-Elements maskiert wird. Nein
JSONPathsRequest Eine Liste von JSONPath-Ausdrücken, die anhand von JSON-Nutzlasten (falls vorhanden) im Anfragepfad ausgewertet werden. Alle JSONPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des JSON-Attributs maskiert wird. Nein
JSONPathsResponse Eine Liste von JSONPath-Ausdrücken, die anhand von JSON-Nutzlasten (falls vorhanden) im Antwortpfad ausgewertet werden. Alle JSONPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des JSON-Attributs maskiert wird. Nein
XPathsFault Eine Liste von XPath-Ausdrücken, die im Hinblick auf XML-Nutzlasten (falls vorhanden) im Fehlerfluss ausgewertet werden (der ausgeführt wird, wenn an einem beliebigen Punkt im Ablauf ein Fehler auftritt). Alle XPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des XML-Elements maskiert wird. Nein
JSONPathsFault Eine Liste von JSON-Ausdrücken, die anhand von JSON-Nutzlasten (falls vorhanden) im Fehlerfluss ausgewertet werden. Dieser wird ausgeführt, wenn an einem beliebigen Punkt im Ablauf ein Fehler ausgelöst wird. Alle JSONPaths, die erfolgreich aufgelöst werden, führen dazu, dass der Wert des JSON-Attributs maskiert wird. Nein
Variablen

Eine Liste von vordefinierten oder benutzerdefinierten Variablen, deren Werte maskiert werden. Eine Liste der Standardvariablen finden Sie unter Variablenreferenz.

Nein

Mask Configuration API

Maskenkonfigurationen sind als Dateien im XML- oder JSON-Format definiert, die Sie über die RESTful Management API hoch- und herunterladen. Eine vollständige Liste der Datenmaskierungs-APIs finden Sie unter Datenmasken.

Zum Ansehen vorhandener Maskenkonfigurationen können Sie einfach die API-Ressource /maskconfigs in Ihrer Organisation aufrufen:

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

Dieses Beispiel zeigt die grundlegende Syntax für die Authentifizierung. Möglicherweise können Sie auch andere Arten der Authentifizierung verwenden, z. B. Oauth2 oder SAML.

Zum Ansehen von Maskenkonfigurationen, die für bestimmte API-Proxys definiert sind, können Sie die /maskconfigs API aufrufen:

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

Wenn Sie eine bestimmte Maskenkonfiguration aufrufen möchten, geben Sie den Namen der Maske an:

$ 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

Verwenden Sie zum Erstellen einer Maskenkonfiguration das POST-Verb, um eine Nutzlast zu senden, die die Maskenkonfiguration definiert:

$ 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
So erstellen Sie eine Maskenkonfiguration, die auf einen bestimmten API-Proxy beschränkt ist:
$ 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

Sie können eine Maskenkonfiguration mit dem DELETE-Verb löschen:

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

Dieses Beispiel zeigt die grundlegende Syntax für die Authentifizierung. Möglicherweise können Sie auch andere Arten der Authentifizierung verwenden, z. B. Oauth2 oder SAML.

Die Antwort auf einen DELETE-Vorgang ist ein HTTP-Code 204 ohne Nachrichteninhalt.

Maskierung für XML-Namespaces

Eine Maskenkonfiguration erfordert das Element <Namespace> in einer XPATH-Definition nur, wenn in der XML-Nutzlast ein Namespace definiert ist. Dies gilt auch, wenn für die XML-Nutzlast ein Standard-Namespace verwendet wird.

Die XML-Nutzlast definiert beispielsweise keinen Namespace:

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

Daher erfordert die Maskenkonfiguration das Element <Namespace> nicht:

<MaskDataConfiguration>
    <XPathsRequest>
        <XPathRequest>/employee/name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Wenn die XML-Nutzlast einen Namespace und ein Präfix enthält:

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

Dann sollte die Definition der Maskenkonfiguration das Element <Namespace> enthalten:

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

Hat die XML-Nutzlast einen Namespace, aber kein Präfix, gilt der Standard-Namespace:

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

Dann sollte die Maskenkonfiguration noch das Element <Namespace> enthalten:

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