Masquage et masquage des données

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 ou message.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 email
Pour 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>