Masquage et masquage des données

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur 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 les cartes de crédit ou les 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 des Sessions de 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 de trace et de débogage. Les configurations de masquage peuvent être définies de manière globale (au niveau de l'organisation) ou locale (au niveau de l'API). au niveau du proxy).

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 masque

Masque vous permettent d'identifier les données sensibles dans ces sources: <ph type="x-smartling-placeholder">
    </ph>
  • 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 un masque ressource de configuration

Définissez une configuration de masque à l'aide des éléments suivants.

Nom du champ Description Par défaut Obligatoire ?
XPathsRequest Une liste des expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le dans le chemin d'accès de la requête. Tout chemin XPath résolu correctement renvoie la valeur du code XML est masqué. N/A Non
XPathsResponse Une liste des expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le chemin de réponse. Tout chemin XPath résolu correctement renvoie la valeur du code XML est masqué. N/A Non
JSONPathsRequest Une liste des expressions JSONPath qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans dans le chemin de la requête. Tous les chemins JSONPath résolus renvoient la valeur du paramètre Propriété JSON masquée. N/A Non
JSONPathsResponse Une liste des expressions JSONPath qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans le chemin de réponse. Tous les chemins JSONPath résolus renvoient la valeur du paramètre Propriété JSON masquée. N/A Non
XPathsFault Une liste des expressions XPath qui seront évaluées par rapport aux charges utiles XML (le cas échéant) dans le flux d'erreur (qui s'exécute si une erreur est générée à n'importe quel point du flux). Tous les chemins XPath la résolution aboutit entraîne le masquage de la valeur de l'élément XML. N/A Non
JSONPathsFault Une liste des expressions JSON qui seront évaluées par rapport aux charges utiles JSON (le cas échéant) dans le paramètre flux d'erreur (qui s'exécute si une erreur est générée à n'importe quel point du flux). Tous les chemins JSONPath qui sont résolues correctement, la valeur de la propriété JSON sera masquée. N/A Non
Variables

Liste de variables (prédéfinies ou personnalisées) dont les valeurs seront masquées. Pour une des variables par défaut, consultez la documentation de référence sur les variables.

N/A Non

API de configuration des masques

Les configurations de masque 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 des données, consultez la section Masques de données.

Pour afficher les configurations de masque existantes, il vous suffit d'appeler la ressource 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 utiliser d'autres méthodes d'authentification, Oauth2 ou SAML :

Pour afficher les configurations de masque définies pour des proxys d'API spécifiques, vous pouvez appeler la méthode 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 afin d'envoyer une charge utile qui définit le masque. configuration:

$ 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 utiliser d'autres méthodes d'authentification, Oauth2 ou SAML :

La réponse à une opération DELETE est un code HTTP 204 sans message contenus.

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>