Enmascaramiento y ocultamiento de datos

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Cuando depuras las llamadas a las APIs en Edge, el contenido a veces puede contener datos sensibles, como tarjetas de crédito o información de salud de identificación personal (PHI) que se debe enmascarar.

Edge proporciona diferentes formas de ocultar o enmascarar datos sensibles de las sesiones de Trace y de depuración.

Oculta datos sensibles

Para evitar que los datos sensibles aparezcan en la herramienta de seguimiento y en las sesiones de depuración, crea variables personalizadas con el prefijo “private.”.

Por ejemplo, cuando uses la política de operaciones de mapa de valor clave para recuperar valores de un mapa de clave-valor encriptado, formatea los nombres de las variables de la siguiente manera a fin de garantizar que los valores no aparezcan en las sesiones de Trace o de depuración:

<Get assignTo="private.hiddenData">

Ocultar variables sensibles es una alternativa al uso del enmascaramiento de datos, que se describe a continuación. La diferencia entre ocultar y enmascarar es que las variables ocultas no aparecen en absoluto y los valores enmascarados se reemplazan por asteriscos en sesiones de seguimiento y depuración.

Las variables sin el prefijo “private.” se muestran en texto claro en las sesiones de Trace y Debug, incluso si los datos provienen de un almacén de datos encriptado, como un mapa de clave-valor encriptado. Usa el enmascaramiento (a continuación) si deseas enmascarar estos valores.

Enmascara datos sensibles

Edge te permite definir “configuraciones de máscara” para enmascarar datos específicos en sesiones de seguimiento y depuración. La configuración de enmascaramiento se puede establecer de forma global (a nivel de la organización) o local (a nivel del proxy de la API).

Cuando se enmascaran los datos, se reemplazan por asteriscos en el seguimiento de resultados. Por ejemplo:

<description>**********</description>

Usar configuraciones de máscara

Los parámetros de configuración de las máscaras te permiten identificar los datos sensibles en estas fuentes:
  • Cargas útiles XML: con XPath, puedes identificar elementos XML para filtrar de cargas útiles de solicitud o respuesta.
  • Cargas útiles JSON: con JSONPath, puedes identificar las propiedades JSON que se filtrarán de las cargas útiles de mensajes de respuesta o solicitud.
  • Variables de flujo: Puedes especificar una lista de variables que se deben enmascarar en el resultado de la depuración. Cuando especificas las variables de flujo request.content, response.content o message.content, el cuerpo de la solicitud o respuesta también se enmascara.

La estructura básica de la configuración de una máscara se muestra con la siguiente representación XML:

<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>

Configura un recurso de configuración de máscaras

Define una configuración de máscara con los siguientes elementos.

Nombre del campo Descripción Predeterminada ¿Obligatorio?
XPathsRequest Lista de expresiones de XPath que se evaluarán respecto de las cargas útiles XML (si existen) en la ruta de la solicitud. Cualquier XPath que se resuelva correctamente hará que se enmascara el valor del elemento XML. No disponible No
XPathsResponse Lista de expresiones de XPath que se evaluarán respecto de las cargas útiles XML (si existen) en la ruta de respuesta. Cualquier XPath que se resuelva correctamente hará que se enmascara el valor del elemento XML. No disponible No
JSONPathsRequest Una lista de expresiones JSONPath que se evaluarán respecto de las cargas útiles JSON (si las hay) en la ruta de la solicitud. Cualquier JSONPath que se resuelva de forma correcta dará como resultado el valor de la propiedad JSON que se enmascara. No disponible No
JSONPathsResponse Una lista de expresiones JSONPath que se evaluarán respecto de las cargas útiles JSON (si existen) en la ruta de respuesta. Cualquier JSONPath que se resuelva de forma correcta dará como resultado el valor de la propiedad JSON que se enmascara. No disponible No
XPathsFault Una lista de expresiones de XPath que se evaluarán con respecto a las cargas útiles XML (si existen) en el flujo de errores (que se ejecuta si se produce una falla en algún punto del flujo). Cualquier XPath que se resuelva correctamente hará que se enmascara el valor del elemento XML. No disponible No
JSONPathsFault Una lista de expresiones JSON que se evaluarán frente a las cargas útiles JSON (si las hubiera) en el flujo de errores (que se ejecuta si se produce una falla en algún punto del flujo) Cualquier JSONPath que se resuelva correctamente hará que se enmascara el valor de la propiedad JSON. No disponible No
Variables

Una lista de variables (predefinidas o personalizadas) cuyos valores se enmascararán. Para obtener una lista de variables predeterminadas, consulta Referencia de variables.

No disponible No

API de configuración de enmascaramiento

La configuración de las máscaras se define como archivos con formato XML o JSON que puedes subir y descargar mediante la API de administración de RESTful. Para obtener una lista completa de las APIs de enmascaramiento de datos, consulta Máscaras de datos.

Para ver las configuraciones de máscaras existentes, simplemente puedes llamar al recurso de API /maskconfigs en tu organización:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/maskconfigs \
-u email

En este ejemplo, se muestra la sintaxis Basic para la autenticación. Es posible que puedas usar otros tipos de autenticación, como Oauth2 o SAML.

Si quieres ver las configuraciones de máscaras definidas para proxies de API específicos, puedes llamar a la API de /maskconfigs:

$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs \
-u email

Para ver una configuración de máscara en particular, indica su nombre:

$ 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

Para crear una configuración de máscara, usa el verbo POST para enviar una carga útil que defina la configuración de la máscara:

$ 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
Para crear una configuración de máscara con alcance a un proxy de API específico, haz lo siguiente:
$ 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

Puedes borrar la configuración de una máscara con el verbo DELETE:

$ curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/maskconfigs/{maskconfig_name} \
-u email

En este ejemplo, se muestra la sintaxis Basic para la autenticación. Es posible que puedas usar otros tipos de autenticación, como Oauth2 o SAML.

La respuesta a una operación DELETE es un código HTTP 204 sin contenido de mensaje.

Enmascara espacios de nombres XML

Una configuración de máscara no requiere el elemento <Namespace> en una definición XPATH, a menos que un espacio de nombres se defina en la carga útil XML. Esto también se aplica si la carga útil de XML usa un espacio de nombres predeterminado.

Por ejemplo, la carga útil de XML no define un espacio de nombres:

<employee>
    <name>abc</name>
    <age>50</age>
</employee>

Por lo tanto, la configuración de la máscara no requiere el elemento <Namespace>:

<MaskDataConfiguration>
    <XPathsRequest>
        <XPathRequest>/employee/name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Si la carga útil de XML contiene un espacio de nombres y un prefijo, haz lo siguiente:

<myco:employee xmlns:myco="http://example.com">
    <myco:name>xyz</myco:name>
    <myco:age>50</myco:age>
</myco:employee>

Luego, la definición de la configuración de la máscara debe contener el elemento <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>

Si la carga útil XML tiene un espacio de nombres, pero no un prefijo, es decir, el espacio de nombres predeterminado:

<employee xmlns="http://example.com">
    <name>xyz</name>
    <age>50</age>
</employee>

Luego, la configuración de la máscara debe contener el elemento <Namespace>:

<MaskDataConfiguration>
    <Namespaces>
        <Namespace prefix="myco">http://example.com</Namespace>
    </Namespaces>
    <XPathsRequest>
        <XPathRequest>/myco:employee/myco:name</XPathRequest>
    <XPathsRequest>
</MaskDataConfiguration>