Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
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 données de santé personnelles, qui doivent être masquées.
Edge propose différentes manières de masquer ou de masquer les données sensibles de Trace et des sessions de débogage.
Ne pas afficher 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 de trace et de débogage. Les configurations de masquage peuvent être définies de manière globale (au niveau de l'organisation) ou localement (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 des configurations de masques
Les configurations de masques vous permettent d'identifier les 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 chemins XPath correctement résolus entraîneront 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 réponse. Tous les chemins XPath correctement résolus entraîneront 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 correctement résolus 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 réponse. Tous les JSONPaths correctement résolus entraînent le masquage de la valeur de la propriété JSON. | N/A | Non |
XPathsFault | Une 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 à n'importe quel point du flux). Tous les chemins XPath qui se résolvent avec succès entraînent le masquage de la valeur de l'élément XML. | N/A | Non |
JSONPathsFault | Une 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 à n'importe quel point du flux). Tous les JSONPaths correctement résolus entraîneront le masquage de la valeur de la propriété JSON. | N/A | Non |
Variables |
Une 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 Mask
Les configurations de masques sont définies sous la forme de 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 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 email
Cet exemple présente la syntaxe de base pour l'authentification. Vous pouvez peut-être utiliser d'autres types d'authentification, tels que Oauth2 ou SAML.
Pour afficher les configurations de masque définies pour des proxys d'API spécifiques, vous pouvez appeler l'API /maskconfigs
:
$ 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 du 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 emailPour créer une configuration de masque limitée à un proxy d'API spécifique :
$ 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 présente la syntaxe de base pour l'authentification. Vous pouvez peut-être utiliser d'autres types d'authentification, tels que 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>