Vous consultez la documentation Apigee Edge.
Accédez à la
documentation**Apigee X**. info
Lorsque vous déboguez des appels d'API dans Edge, le contenu peut parfois contenir des données sensibles, telles que des cartes de crédit ou des informations médicales personnellement identifiables (PHI) qui doivent être masquées.
Edge propose différentes méthodes permettant de masquer ou de ne pas afficher les données sensibles des sessions Trace et de débogage.
Masquer les données sensibles
Vous pouvez empêcher l'affichage des données sensibles dans l'outil Trace et déboguer les sessions en créant des variables personnalisées avec le préfixe "private.".
Par exemple, lorsque vous utilisez la règle "Opérations de mappage de clés-valeurs" pour extraire les valeurs d'un mappage de clés-valeurs chiffrées, mettez en forme les noms de variables comme suit pour vous assurer qu'elles n'apparaissent pas dans les sessions Trace ou de débogage :
<Get assignTo="private.hiddenData">
Le masquage des variables sensibles constitue une alternative à l'utilisation du masquage de données, comme indiqué ci-après. La différence entre masquer et ne pas afficher est que les variables non affichées n'apparaissent pas du tout, tandis que les valeurs masquées sont remplacées par des astérisques dans les sessions Trace et de débogage.
Les variables sans le préfixe "private." s'affichent en clair dans les sessions Trace et de débogage, même si les données proviennent d'un datastore chiffré tel qu'un mappage de valeurs-clés chiffrées. Utilisez le masquage (ci-dessous) si vous souhaitez masquer ces valeurs.
Masquer les données sensibles
Edge vous permet de définir des "configurations de masque" pour masquer des données spécifiques dans les sessions Trace et de débogage. Les configurations de masque peuvent être définies de manière globale (au niveau de l'organisation) ou locale (au niveau du proxy d'API ).
Lorsque les données sont masquées, elles sont remplacées par des astérisques dans le résultat de la trace. Exemple :
<description>**********</description>
Utiliser les configurations de masque
Les configurations de masque vous permettent d'identifier des données sensibles dans les sources suivantes :- Charges utiles XML : à l'aide de XPath, vous identifiez les éléments XML à filtrer à partir des charges utiles de requête ou de message de réponse.
- Charges utiles JSON : à l'aide de JSONPath, vous identifiez les propriétés JSON à filtrer à partir des charges utiles de requête ou de message de réponse.
- Variables de flux : vous pouvez spécifier une liste de variables qui doivent être masquées dans la sortie de débogage. Lorsque vous spécifiez les variables de flux
request.content,response.content, oumessage.content, le corps de la requête/réponse est également masqué.
La structure de base d'une configuration de masque est illustrée par la représentation XML suivante :
<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>
Configurer une ressource de configuration de masque
Définissez une configuration de masque à l'aide des éléments suivants.
| Nom du champ | Description | Par défaut | Obligatoire ? |
|---|---|---|---|
| XPathsRequest | Liste d'expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le chemin de la requête. Tous les XPaths qui sont résolus avec succès entraînent le masquage de la valeur de l'élément XML. | N/A | Non |
| XPathsResponse | Liste d'expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le chemin de la réponse. Tous les XPaths qui sont résolus avec succès entraînent le masquage de la valeur de l'élément XML. | N/A | Non |
| JSONPathsRequest | Liste d'expressions JSONPath qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans le chemin de la requête. Tous les JSONPaths qui sont résolus avec succès entraînent le masquage de la valeur de la propriété JSON. | N/A | Non |
| JSONPathsResponse | Liste d'expressions JSONPath qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans le chemin de la réponse. Tous les JSONPaths qui sont résolus avec succès entraînent le masquage de la valeur de la propriété JSON. | N/A | Non |
| XPathsFault | Liste d'expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le flux d'erreurs (qui s'exécute si une erreur est générée à un moment donné du flux). Tous les XPaths qui sont résolus avec succès entraînent le masquage de la valeur de l'élément XML. | N/A | Non |
| JSONPathsFault | Liste d'expressions JSON qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans le flux d'erreurs (qui s'exécute si une erreur est générée à un moment donné du flux). Tous les JSONPaths qui sont résolus avec succès entraînent le masquage de la valeur de la propriété JSON. | N/A | Non |
| Variables |
Liste de variables (prédéfinies ou personnalisées) dont les valeurs seront masquées. Pour obtenir la liste des variables par défaut, consultez la documentation de référence sur les variables. |
N/A | Non |
API de configuration de masque
Les configurations de masque sont définies comme des fichiers au format XML ou JSON que vous importez et téléchargez à l'aide de l'API de gestion RESTful. Pour obtenir la liste complète des API de masquage de données, consultez la section Masques de données.
Pour afficher les configurations de masque existantes, il vous suffit d'appeler la ressource d'API
/maskconfigs dans votre organisation :
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u emailCet exemple montre la syntaxe de base pour l'authentification. Vous pouvez peut-être utiliser d'autres types d'authentification, tels qu' Oauth2 ou SAML.
Pour afficher les configurations de masque définies pour des proxys d'API spécifiques, vous pouvez appeler l'
/maskconfigs API :
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email
Pour afficher une configuration de masque spécifique, spécifiez le nom du masque :
$ 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
Pour créer une configuration de masque, utilisez le verbe POST pour envoyer une charge utile qui définit la configuration de masque :
$ 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
Vous pouvez supprimer une configuration de masque à l'aide du verbe DELETE :
$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email
Cet exemple montre la syntaxe de base pour l'authentification. Vous pouvez peut-être utiliser d'autres types d'authentification, tels qu' Oauth2 ou SAML.
La réponse à une opération DELETE est un code HTTP 204 sans contenu de message.
Masquage des espaces de noms XML
Une configuration de masque ne nécessite pas l'élément <Namespace> dans une définition XPATH, sauf si un espace de noms est défini dans la charge utile XML. C'est également le cas si la charge utile XML utilise un espace de noms par défaut.
Par exemple, la charge utile XML ne définit pas d'espace de noms :
<employee>
<name>abc</name>
<age>50</age>
</employee>Par conséquent, la configuration du masque ne nécessite pas l'élément <Namespace> :
<MaskDataConfiguration>
<XPathsRequest>
<XPathRequest>/employee/name</XPathRequest>
<XPathsRequest>
</MaskDataConfiguration>Si la charge utile XML contient un espace de noms et un préfixe :
<myco:employee xmlns:myco="http://example.com">
<myco:name>xyz</myco:name>
<myco:age>50</myco:age>
</myco:employee>La définition de la configuration de masque doit alors contenir l'élément <Namespace> :
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>
Si la charge XML possède un espace de noms, mais aucun préfixe, ce qui signifie que l'espace de noms par défaut est utilisé :
<employee xmlns="http://example.com">
<name>xyz</name>
<age>50</age>
</employee>La configuration du masque doit toujours contenir l'élément <Namespace> :
<MaskDataConfiguration> <Namespaces> <Namespace prefix="myco">http://example.com</Namespace> </Namespaces> <XPathsRequest> <XPathRequest>/myco:employee/myco:name</XPathRequest> <XPathsRequest> </MaskDataConfiguration>