Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
Cuando depuras llamadas a las API en Apigee, el contenido a veces puede contener datos sensibles, como tarjetas de crédito o información de salud de identificación personal (PHI) que debe enmascararse.
Apigee proporciona diferentes formas de ocultar o enmascarar datos sensibles de sesiones de seguimiento y depuración.
Enmascara datos sensibles
Apigee te permite definir las opciones de
<ServiceRequest>
<request-id>B540A938-F551</request-id>
<customer-name>**********</customer-name>
</ServiceRequest>
La configuración de la máscara es un recurso singleton que defines a nivel del entorno. De forma predeterminada, no está vigente el enmascaramiento de datos.
El enmascaramiento de datos se aplica solo a los datos capturados en una sesión de depuración para un proxy de API. El enmascaramiento de datos no afecta los datos que se envían a destinos o aplicaciones cliente. Si cambias la configuración del enmascaramiento de datos, debes iniciar una nueva sesión de depuración para ver el efecto del cambio.
Estructura de una configuración de la máscara.
Las opciones de configuración de las máscaras son archivos con formato JSON que te permiten identificar datos sensibles en las siguientes 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
omessage.content
, el cuerpo de la solicitud o respuesta también se enmascara.
A continuación, se proporciona un ejemplo de la estructura básica de una configuración de máscara en formato JSON. Para obtener más información sobre los campos de configuración de la máscara que se muestran en el ejemplo, consulta DebugMask.
{ "namespaces": { "myco": "http://example.com" }, "requestXPaths": [ "/myco:Greeting/myco:User" ], "responseXPaths": [ "/myco:Greeting/myco:User" ], "faultXPaths": [ "/myco:Greeting/myco:User" ], "requestJSONPaths": [ "$.store.book[*].author" ], "responseJSONPaths": [ "$.store.book[*].author" ], "faultJSONPaths": [ "$.store.book[*].author" ], "variables": [ "request.header.user-name", "request.formparam.password", "myCustomVariable" ] }
Visualiza la configuración del enmascaramiento en un entorno mediante la API
Para ver la configuración de la máscara en un entorno, envía una operación GET al siguiente recurso:
/organizations/{org}/environments/{env}/debugmask
Por ejemplo:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask" \ -X GET \ -H "Authorization: Bearer $TOKEN"
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
A continuación, se proporciona un ejemplo de la respuesta.
{ "name": "organizations/myorg/environments/test/debugmask" "namespaces": { "myco": "http://example.com" }, "requestXPaths": [ "/myco:Greeting/myco:User" ], "responseXPaths": [ "/myco:Greeting/myco:User" ] }
Actualiza la configuración del enmascaramiento en un entorno mediante la API
Para actualizar el recurso singleton de configuración de la máscara en un entorno, envía una operación PATCH al siguiente recurso:
/organizations/{org}/environments/{env}/debugmask
De manera opcional, puedes pasar los siguientes parámetros de búsqueda:
- Establece el parámetro de consulta
updateMask
para que especifique una máscara de campo que incluya una lista separada por comas de los nombres de campos completamente calificados en la máscara de depuración. Por ejemplo:"requestJSONPaths"
- Configura el parámetro de búsqueda
replaceRepeatedFields
para especificar si se deben reemplazar los valores existentes en la máscara de depuración cuando se realiza una actualización. De forma predeterminada, se agregan valores (false
)
Por ejemplo:
curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask" \ -X PATCH \ -H "Authorization: Bearer $TOKEN" \ -H "Content-type: application/json" \ -d \ '{ "namespaces": { "ns1": "http://example.com" }, "requestXPaths": [ "/ns1:employee/ns1:name" ] }'
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Enmascara XML con alcance de espacio de nombres
Si deseas enmascarar datos XML y esos datos usan espacios de nombres XML, tu configuración de máscara debe hacer referencia a esos espacios de nombres con el elemento namespaces
. Esto se aplica sin importar si la carga útil de XML usa un espacio de nombres predeterminado o un prefijo de espacio de nombres.
Por ejemplo, supongamos que deseas enmascarar el nombre del empleado en la carga útil de la solicitud y el XML no usa espacios de nombres XML:
<employee>
<name>Shanmu Tharman</name>
<age>50</age>
</employee>
Por lo tanto, la configuración de debugmask no requiere el elemento namespaces
:
{ "requestXPaths": [ "/employee/name" ] }
Si la carga útil de XML usa espacios de nombres con prefijos:
<cym:employee xmlns:cym="http://cymbalgroup.com" xmlns:id="http://cymbalgroup.com/identity">
<id:name>Shanmu Tharman</id:name>
<id:age>50</id:age>
</cym:employee>
Luego, la configuración de la máscara debe contener el elemento namespaces
: Puedes elegir cualquier prefijo de espacio de nombres válido en la configuración de debugmask. El prefijo de espacio de nombres en la configuración de debugmask puede ser el mismo que el prefijo de espacio de nombres usado en el XML, pero eso no es obligatorio.
{ "namespaces": { "cym": "http://cymbalgroup.com", "idns": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/cym:employee/idns:name" ] }
Si la carga útil XML usa un espacio de nombres sin prefijo, es decir, el espacio de nombres predeterminado:
<employee xmlns="http://cymbalgroup.com" xmlns:id="http://cymbalgroup.com/identity">
<id:name>Shanmu Tharman</id:name>
<id:age>50</id:age>
</employee>
Luego, la configuración de la máscara de depuración debe definir un prefijo en el elemento namespaces
correspondiente a ese espacio de nombres predeterminado. Puedes usar cualquier prefijo único que desees.
{ "namespaces": { "p1": "http://cymbalgroup.com", "id": "http://cymbalgroup.com/identity" }, "requestXPaths": [ "/p1:employee/id:name" ] }
Otras notas de configuración
-
Con los elementos de configuración
*XPaths
y*JSONPaths
, puedes enmascarar los datos que aparecen en los mensajesrequest
,response
ofault
. Sin embargo, las sesiones de depuración también pueden capturar el contenido completo del mensaje. También puedes configurarrequest.content
oresponse.content
en la secciónvariables
para evitar que se muestren datos sensibles. -
Si usas la política ServiceCallout para realizar una solicitud, la información en la solicitud y la respuesta de ese texto destacado no se enmascarará con los elementos de configuración como
requestXPaths
oresponseJSONPaths
. Si deseas enmascarar esos datos, debes especificar un nombre de variable para los mensajes de solicitud y respuesta en la política ServiceCallout y, luego, especificar esas variables en la secciónvariables
de la máscara de depuración. Por ejemplo, si tu política ServiceCallout usa lo siguiente:<ServiceCallout name='SC-1'> <Request variable='rbacRequest'> <Set> <Payload contentType='application/json'>{ ... }</Payload> ...
Entonces, debes incluir
rbacRequest.content
en el elementovariables
para la configuración de debugmask.{ ... "variables": [ "request.content", "response.content", "rbacRequest.content" ] }
Oculta datos sensibles
Además del enmascaramiento, puedes evitar que los datos sensibles aparezcan en la herramienta de seguimiento y las sesiones de depuración si eliges un nombre que comience con private.
para tus variables personalizadas.
Por ejemplo, cuando uses la política de operaciones de mapas de clave-valor para recuperar un valor de un mapa de pares clave-valor, puedes elegir el nombre de la variable de la siguiente manera para asegurarte de que el valor no aparezca en las sesiones de seguimiento o de depuración:
<KeyValueMapOperations name='KVM-Get-1'>
<Scope>environment</Scope>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<MapName>settings</MapName>
<Get assignTo='private.privatekey'>
<Key>
<Parameter>rsa_private_key</Parameter>
</Key>
</Get>
</KeyValueMapOperations>
Las variables sin el prefijo private.
se muestran en texto claro en las sesiones de seguimiento y depuración, incluso si los datos se originan en un almacén de datos encriptado, como un mapa de pares clave-valor. Usa el enmascaramiento si deseas enmascarar estos valores.