Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu
Apigee X. info
Bei der Fehlerbehebung von API-Aufrufen in Edge kann der Inhalt manchmal vertrauliche Daten wie Kreditkartendaten oder personenidentifizierbare Informationen enthalten, die maskiert werden müssen.
Edge bietet verschiedene Möglichkeiten zum Ausblenden oder Maskieren sensibler Daten von 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.
Sensible Daten maskieren
Mit Edge können Sie Maskenkonfigurationen definieren, um bestimmte Daten in Trace- und Debug-Sitzungen zu maskieren. Maskenkonfigurationen können global (auf Organisationsebene) oder lokal (auf API Proxy-Ebene) 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 den folgenden 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
request.content,response.content, odermessage.contentFlussvariablen angeben, wird der Anfrage-/Antworttext ebenfalls maskiert.
Die grundlegende Struktur einer Maskenkonfiguration wird durch die folgende XML-Darstellung gezeigt:
<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>
Masken Konfigurationsressource konfigurieren
Definieren Sie eine Maskenkonfiguration mit den folgenden Elementen.
| Feldname | Beschreibung | Standard | Erforderlich? |
|---|---|---|---|
| XPathsRequest | Eine Liste von XPath-Ausdrücken, die für 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 für 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 für 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 für 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 für XML-Nutzlasten (falls vorhanden) im Fehlerablauf ausgewertet werden (der ausgeführt wird, wenn an einer beliebigen Stelle im Ablauf ein Fehler ausgelöst wird). 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 für JSON-Nutzlasten (falls vorhanden) im Fehlerablauf ausgewertet werden (der ausgeführt wird, wenn an einer beliebigen Stelle 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 |
| Variables |
Eine Liste von Variablen (vordefiniert oder benutzerdefiniert), deren Werte maskiert werden. Eine Liste der Standardvariablen finden Sie unter Variablenreferenz. |
– | Nein |
Maskenkonfigurations-API
Maskenkonfigurationen werden als XML- oder JSON-formatierte Dateien definiert, die Sie mit der RESTful Management API hochladen und herunterladen. Eine vollständige Liste der APIs zur Datenmaskierung finden Sie unter Datenmasken.
Um vorhandene Maskenkonfigurationen aufzurufen, können Sie einfach die API-Ressource
/maskconfigs in Ihrer Organisation aufrufen:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u emailDieses 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.
Um Maskenkonfigurationen für bestimmte API-Proxys aufzurufen, können Sie die
/maskconfigs API aufrufen:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
Um eine bestimmte Maskenkonfiguration aufzurufen, 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 das POST-Verb, um eine Maskenkonfiguration zu erstellen und eine Nutzlast zu senden, die die Masken konfiguration 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
$ 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 Nachrichteninhalte.
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 <Namespace> Element enthalten:
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>