Extensión de Google Cloud Data Loss Prevention

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Versión: 1.2.0

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.

En este contenido, se proporciona información de referencia para configurar y usar esta extensión. Para obtener información sobre la referencia de configuración de esta extensión, consulta Referencia de configuración.

Requisitos previos

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

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

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

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

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

Acerca de Cloud Data Loss Prevention (DLP)

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

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

Ejemplos

En los siguientes ejemplos, se ilustra cómo configurar la compatibilidad con las acciones de la extensión de DLP a través de la política ExtensionCallout.

Para facilitar la prueba de este código de muestra, estos ejemplos usan una política AssignMessage para establecer valores de variables de flujo y recuperar valores de respuesta de extensión para mostrarlos en la herramienta de Trace.

Máscara con estrellas

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

La siguiente política de AssignMessage establece la variable request.content a modo de ilustración. Normalmente, 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 de ExtensionCallout recupera el valor de la variable request.content y lo pasa a una extensión de Cloud DLP (aquí, llamada example-dlp). Esa extensión se configuró para enmascarar valores según 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 AssignMessage recupera el resultado de la extensión para mostrarlo en la herramienta de seguimiento.

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

A continuación, se muestra un ejemplo del resultado de este código.

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

Máscara 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 AssignMessage establece la variable request.content a modo de ilustración. Normalmente, 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 ExtensionCallout recupera el valor de la variable request.content y lo pasa a una extensión de Cloud DLP (aquí, llamada example-dlp). Esa extensión se configuró para enmascarar valores según 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>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

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

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

A continuación, se muestra un ejemplo del 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 enmascáralos con el carácter mask. Esta acción enmascara las partes de text especificadas por la propiedad infoTypes en la configuración de la extensión.

El enmascaramiento de datos sensibles reemplaza los caracteres por un símbolo, como un asterisco (*) o un numeral (#). Los tipos de datos sensibles se pueden configurar en la configuración de la extensión.

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, se debe haber configurado esta extensión para admitir el infotipo EMAIL_ADDRESS. Para obtener una lista de los Infotipos, consulta la 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 Predeterminado Obligatorio
texto Es el texto que se desidentificará. String Ninguno Sí.
mascarilla Carácter que se usará para enmascarar los datos sensibles. String Ninguno Sí.

Respuesta

Es el texto de entrada con los valores de los Infotipos especificados reemplazados por el carácter especificado. Por ejemplo:

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

deidentifyWithType

Desidentifica datos sensibles en contenido de texto reemplazando cada valor coincidente por el nombre del infoType. Para obtener una lista de los Infotipos, consulta la Referencia del detector de Infotipos. Esta acción enmascara las partes de text especificadas por 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 de entrada:

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

  • Texto del 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, se debe haber configurado esta extensión para admitir el infotipo EMAIL_ADDRESS. Para obtener una lista de los Infotipos, consulta la 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 Predeterminado Obligatorio
texto Es el texto que se desidentificará. String Ninguno Sí.

Respuesta

Es el texto de entrada con los valores de los infotipos especificados reemplazados por los nombres de los infotipos. Por ejemplo:

{"text":"EMAIL_ADDRESS"}

redactImage

Oculta el texto que pertenece a una de las categorías de infoType. El contenido censurado se detecta y se oculta con un rectángulo opaco. Esta acción enmascara las partes de image_data especificadas por la propiedad infoTypes en la configuración de la extensión.

Para obtener una lista de los Infotipos, consulta la 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 Predeterminado Obligatorio
image_data Son los datos de la imagen codificados en base64. String Ninguno Sí.
image_type Constante del tipo de imagen. Los valores disponibles son IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG y IMAGE_SVG. String Ninguno Sí.

Respuesta

Imagen con el 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 deseas conocer los pasos para configurar una extensión con la consola de Apigee, consulta Cómo agregar y configurar una extensión.

Propiedades comunes de las extensiones

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

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 Predeterminado Obligatorio
ID de proyecto Es el ID del proyecto de GCP para el que está habilitada la API de Cloud Data Loss Prevention. Ninguno Sí.
predichos Son los tipos de información de los datos sensibles. Si se omite, el servicio detectará todos los tipos integrados. Para obtener una lista de los infoTypes compatibles con el servicio de DLP de Google Cloud, consulta la Referencia del detector de Infotipo. Ninguno Núm.
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 administración, es un valor codificado en Base64 que se genera a partir del archivo de claves de la cuenta de servicio. Ninguno Sí.