Extensión de Google Cloud Data Loss Prevention

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

Versión: 1.5.1

Usa esta extensión para ocultar datos sensibles del contenido y las imágenes. Por ejemplo, puedes ocultar números de tarjetas de crédito, nombres y números de seguridad social.

Requisitos previos

En este contenido, se proporciona referencia para configurar y usar la extensión. Antes de utilizar la extensión desde un proxy de API con la política ExtensionExtension, debes hacer lo siguiente:

  1. Habilita la API de Google Cloud DLP en tu proyecto.

  2. Otorga permiso para el nivel de acceso que quieres para la extensión.

  3. Usa GCP Console a fin de generar una clave para la cuenta de servicio.

  4. Usa el contenido del archivo JSON de claves resultante cuando agregues y configures la extensión mediante la referencia de configuración.

Acerca de Cloud Data Loss Prevention (DLP)

Cloud Data Loss Prevention (DLP) es una API que sirve para inspeccionar texto, imágenes y otros datos con el objetivo de identificar y administrar datos sensibles.

Para obtener más información, consulta la descripción general de DLP. Para obtener información sobre la API que expone esta extensión, consulta API de Cloud Data Loss Prevention (DLP).

Ejemplos

En los siguientes ejemplos, se muestra cómo configurar la compatibilidad con las acciones de extensión de Cloud DLP mediante la política ExtensionExtension.

Para facilitar la prueba de este código de muestra, en estos ejemplos se usa una política deAssignMessage a fin de establecer valores de variables de flujo y recuperar valores de respuesta de extensiones para mostrar en la herramienta de seguimiento.

Máscara con estrellas

En este ejemplo, se usa la acción deidentifyWithMask para enmascarar los tipos de texto especificados con un carácter especificado en la política, en este caso, el carácter *.

La siguiente política de asigneMessage establece la variable request.content para fines ilustrativos. Por lo general, recuperarías el contenido de la solicitud del cliente.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

La siguiente política ExtensionExtension recupera el valor de la variable request.content y lo pasa a una extensión de Cloud DLP, llamada example-dlp. Esa extensión se configuró para enmascarar valores basados en los infoTypes URL y EMAIL_ADDRESS.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithMask</Action>
    <Input><![CDATA[{
        "text" : "{request.content}",
        "mask" : "*"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

La siguiente política de AsignaMessage recupera el resultado de la extensión para mostrarlo en la herramienta de Trace.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

El siguiente es un ejemplo de resultado de este código.

{"text":"Visit my site at ******************* Or contact me at *****************."}

Enmascarar con nombre

En este ejemplo, se usa la acción deidentifyWithType para enmascarar los tipos de texto especificados con el nombre del infotipo. Por ejemplo, reemplazaría la dirección de correo electrónico gladys@example.com por EMAIL_ADDRESS.

La siguiente política de asigneMessage establece la variable request.content para fines ilustrativos. Por lo general, recuperarías el contenido de la solicitud del cliente.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

La siguiente política ExtensionExtension recupera el valor de la variable request.content y lo pasa a una extensión de Cloud DLP, llamada example-dlp. Esa extensión se configuró para enmascarar valores basados en los infoTypes URL e EMAIL_ADDRESS.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

La siguiente política de AsignaMessage recupera el resultado de la extensión para mostrarlo en la herramienta de Trace.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

El siguiente es un ejemplo de resultado de este código.

{"text":"Visit my site at [URL] Or contact me at [EMAIL_ADDRESS]."}

Acciones

deidentifyWithMask

Desidentifica los datos sensibles de text y enmascara los datos con el carácter mask. Esta acción enmascara las partes de text que especifica la propiedad infoTypes en la configuración de la extensión.

Enmascarar datos sensibles reemplaza los caracteres con un símbolo, como un asterisco (*) o un hash (#). Los tipos de datos sensibles se pueden configurar en la configuración de extensiones.

Sintaxis

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify",
  "mask" : "masking-character"
}]]></Input>

Ejemplo

En el siguiente ejemplo, la entrada para enmascarar es una dirección de correo electrónico almacenada en una variable de flujo input.email.address. Para admitir este ejemplo específico, la extensión se debe configurar para admitir el Infotipo EMAIL_ADDRESS. Para obtener una lista de los Infotipos, consulta Referencia del detector de Infotipos.

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}",
    "mask" : "*"
}]]></Input>
<Output>masked.output</Output>

El resultado de este ejemplo sería el siguiente:

{"text":"*****************"}

parámetros de solicitud

Parámetro Descripción Tipo Predeterminada Obligatorias
text Texto para desidentificar. Cadena Ningún contenido de este tipo Sí.
mascarilla Carácter que se usa para enmascarar datos sensibles. Cadena Ningún contenido de este tipo Sí.

Respuesta

El texto de entrada con valores de los Infotipos especificados que se reemplazan por el carácter especificado. Por ejemplo,

{"text":"*********"}

deidentifyWithTemplate

Desidentifica los datos sensibles en el contenido de texto con una plantilla que configure qué texto se desidentifica y cómo manejarlo.

Las plantillas son útiles para separar la configuración como, por ejemplo, qué inspeccionas y cómo lo desidentificas de la implementación de tus llamadas a la API. Las plantillas proporcionan una forma de reutilizar la configuración y habilitar la coherencia entre los usuarios y los conjuntos de datos.

En tu plantilla, deberás especificar infoTypes que representen el contenido que se desidentifica. Para obtener una lista de los Infotipos, consulta Referencia del detector de Infotipos. La desidentificación enmascara esas partes del texto especificadas por la propiedad infoTypes en la plantilla.

Sintaxis

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
  "templateName" : "path-to-template"
}]]></Input>

Ejemplo

En el siguiente ejemplo, la entrada para desidentificar es el cuerpo de la solicitud que lleva la variable de flujo request.content.

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
    "text" : "{request.content}"
    "templateName" : "projects/[PROJECT_ID]/deidentifyTemplates/1231258663242"
}]]></Input>

El resultado para este ejemplo sería el contenido de la solicitud desidentificada.

parámetros de solicitud

Parámetro Descripción Tipo Predeterminada Obligatorias
text Texto que se desidentifica. Para esto funciona el proceso de desidentificación. Objeto Ningún contenido de este tipo Sí.
templateName La plantilla que se usará. Esta será una ruta a la plantilla con el siguiente formato: projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID. Cuando crees la plantilla con la API de Google, usa el valor de propiedad name de la respuesta como templateName. Cadena Ningún contenido de este tipo Sí.

Respuesta

El texto de entrada con valores de los Infotipos especificados reemplazados por los nombres de los infotipos.

deidentifyWithType

Desidentifica los datos sensibles en el contenido de texto y reemplaza cada valor coincidente por el nombre del Infotipo. Para obtener una lista de los Infotipos, consulta Referencia del detector de Infotipos. Esta acción enmascara las partes de text que especifica la propiedad infoTypes en la configuración de la extensión.

En el siguiente ejemplo, el servicio reconoce el número de teléfono y, luego, lo reemplaza por el nombre del Infotipo.

  • Texto ingresado:

    John Smith, 123 Main St, Seattle, WA 98122, 206-555-0123.

  • Texto de resultado:

    John Smith, 123 Main St, Seattle, WA 98122, PHONE_NUMBER.

Sintaxis

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
}]]></Input>

Ejemplo

En el siguiente ejemplo, la entrada para enmascarar es una dirección de correo electrónico almacenada en una variable de flujo input.email.address. Para admitir este ejemplo específico, la extensión se debe configurar para admitir el Infotipo EMAIL_ADDRESS. Para obtener una lista de los Infotipos, consulta Referencia del detector de Infotipos.

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}"
}]]></Input>

El resultado de este ejemplo sería el siguiente:

{"text":"EMAIL_ADDRESS"}

parámetros de solicitud

Parámetro Descripción Tipo Predeterminada Obligatorias
text Texto que se desidentifica. Cadena Ningún contenido de este tipo Sí.

Respuesta

El texto de entrada con valores de los Infotipos especificados reemplazados por los nombres de los infotipos. Por ejemplo,

{"text":"EMAIL_ADDRESS"}

redactImage

Se oculta el texto que corresponde a una de las categorías de Infotipos. El contenido oculto se detecta y oscurece con un rectángulo opaco. Esta acción enmascara las partes de image_data que especifica la propiedad infoTypes en la configuración de la extensión.

Para obtener una lista de los Infotipos, consulta Referencia del detector de Infotipos.

parámetros de solicitud

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
Parámetro Descripción Tipo Predeterminada Obligatorias
image_data Los datos de imagen codificados en base64. Cadena Ningún contenido de este tipo Sí.
image_type Constante del tipo de imagen. Los valores disponibles son IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG y IMAGE_SVG. Cadena Ningún contenido de este tipo Sí.

Respuesta

La imagen con texto oculto.

Referencia de configuración

Usa la siguiente información cuando configures e implementes esta extensión para usarla en proxies de API. Si quieres conocer los pasos para configurar una extensión con la consola de Apigee, consulta Agrega y configura una extensión.

Propiedades comunes de las extensiones

Las siguientes propiedades están presentes para cada extensión.

Propiedad Descripción Predeterminado Obligatorio
name Nombre que asignas a esta configuración de la extensión. Ninguna
packageName Nombre del paquete de extensiones proporcionado por Apigee Edge. Ninguna
version El número de versión del paquete de extensiones desde el que quieres configurar la extensión. Ninguna
configuration Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones Ninguna

Propiedades de este paquete de extensión

Especifica valores para las siguientes propiedades de configuración específicas de esta extensión.

Propiedad Descripción Predeterminada Obligatorias
projectId El ID del proyecto de GCP para el que está habilitada la API de Cloud Data Loss Prevention. Ningún contenido de este tipo Sí.
infoTypes Tipos de información de los datos sensibles. Si se omite, el servicio detectará todos los tipos integrados. Para obtener una lista de los Infotipos compatibles con el servicio de DLP de Google Cloud, consulta Referencia del detector de Infotipos. Ningún contenido de este tipo No.
credenciales Cuando se ingresa en la consola de Apigee Edge, este es el contenido del archivo de claves de tu cuenta de servicio. Cuando se envía a través de la API de Management, es un valor codificado en base64 que se genera a partir del archivo de claves de la cuenta de servicio. Ningún contenido de este tipo Sí.