Enmascara y oculta datos

Cuando depuras llamadas a API en Apigee, el contenido a veces puede contener datos sensibles, como tarjetas de crédito o información de salud 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 configuraciones de máscara para enmascarar datos específicos en sesiones de seguimiento y depuración. Cuando se enmascaran los datos, se reemplazan por asteriscos en el resultado del seguimiento. Por ejemplo:

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

La configuración de la máscara es un recurso singleton que se define en el nivel del entorno. De forma predeterminada, no está vigente el enmascaramiento de datos.

Estructura de una configuración de máscara

Las configuraciones de máscara 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 o message.content, también se enmascara el cuerpo de la solicitud o respuesta.

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 las máscaras 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-agent",
    "request.formparam.password"
  ]
}

Visualiza la configuración de la máscara en un entorno con 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. Si deseas obtener una descripción de las variables de entorno que se usaron, 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 de la máscara en un entorno con 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/{debugmask}

De forma opcional, puedes pasar los siguientes parámetros de consulta:

  • 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"
  • Establece el parámetro de consulta replaceRepeatedFields para especificar si se deben reemplazar los valores existentes en la máscara de depuración al realizar una actualización. De forma predeterminada, se agregan valores (false)

Por ejemplo:

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/debugmask/{debugmask}" \
  -X PATCH \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-type: application/json" \
  -d \
  '{
    "requestXPaths": [
      "/myco:employee/myco: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. Si deseas obtener una descripción de las variables de entorno que se usaron, consulta Configura variables de entorno para solicitudes a la API de Apigee.

Enmascara espacios de nombres XML

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

{
  "requestXPaths": [
    "/employee/name"
  ]
}

Si la carga útil en formato XML contiene un espacio de nombres y un prefijo:

<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 máscara debe contener el elemento <Namespace>:

{
  "namespaces": {
    "myco": "http://example.com"
  },
  "requestXPaths": [
    "/myco:employee/myco:name"
  ]
}

Si la carga útil de XML tiene un espacio de nombres, pero no un prefijo, significa que 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> de la siguiente manera:

{
  "namespaces": {
    "myco": "http://example.com"
  },
  "requestXPaths": [
    "/myco:employee/myco:name"
  ]
}

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 sin formato en las sesiones de seguimiento y depuración, incluso si los datos provienen de un almacén de datos encriptado, como un mapa de clave-valor encriptado. Usa el enmascaramiento (más abajo) si deseas enmascarar estos valores.