Crea un detector de diccionarios personalizado normal

Los diccionarios personalizados proporcionan la capacidad simple pero potente de hacer coincidir una lista de palabras o frases. Esto puede funcionar como su propio detector único y se puede usar a fin de crear una lista de excepciones para detectores incorporados. También puedes usar diccionarios personalizados a fin de mejorar los detectores de Infotipo incorporados para que coincidan con los resultados adicionales.

Anatomía de un detector de Infotipo personalizado de diccionario

Como se resume en la descripción general de la API, para crear detector de Infotipo personalizado de diccionario, tienes que definir un objeto CustomInfoType que contenga los siguientes elementos:

  • El nombre que desees darle al detector de Infotipo personalizado, dentro de un objeto InfoType.
  • Un valor Likelihood opcional. Si omites esto, las coincidencias con los elementos del diccionario mostrarán una probabilidad predeterminada VERY_LIKELY.
  • Objetos de DetectionRule opcionales o reglas de palabras clave. Estas reglas ajustan la probabilidad de resultados dentro de una proximidad determinada de las palabras clave específicas. Obtén más información sobre las reglas de palabras clave en Personaliza la probabilidad de coincidencia.
  • Un Dictionary como una WordList que contenga una lista de palabras.

Al igual que un objeto JSON, un detector de Infotipo personalizado de diccionario que incluye todos los componentes opcionales se ve de la siguiente manera:

{
  "customInfoTypes":[
    {
      "infoType":{
        "name":"[CUSTOM_INFOTYPE_NAME]"
      },
      "likelihood":"[LIKELIHOOD_VALUE]",
      "detectionRules":[
        {
          "hotwordRule":{
            [HOTWORDRULE_OBJECT]
          }
        },
        ...
      ],
      "dictionary":{
        "wordList":{
          "words":[
            "[DICTIONARY_WORD1]",
            "[DICTIONARY_WORD2]",
            "[ETC.]"
          ]
        }
      }
    }
  ],
  ...
}

Diccionarios personalizados almacenados

Cloud DLP también admite diccionarios personalizados almacenados para inspeccionar repositorios de almacenamiento. Con un diccionario personalizado almacenado, Cloud DLP puede analizar, por ejemplo, cientos de millones de nombres de usuario, direcciones de correo electrónico o cualquier otra string según se define en “Detalles de coincidencias en el diccionario”. Además, Cloud DLP incluye una función incorporada para que puedas actualizar de manera programática tu diccionario personalizado almacenado según sea necesario.

Los diccionarios personalizados almacenados se crean a partir de recolecciones de frases ubicadas en un depósito de Cloud Storage o en una tabla de BigQuery de tu organización. La primera vez que crees un diccionario personalizado almacenado, debes ingresar las frases que quieras buscar en Cloud Storage o BigQuery y luego usar Cloud DLP para generar el diccionario personalizado almacenado. El diccionario personalizado se almacena en Cloud Storage. Luego de agregar o quitar palabras del depósito de Cloud Storage o de la tabla de BigQuery donde se almacenan, debes usar Cloud DLP para actualizar el diccionario personalizado almacenado.

Para obtener más información sobre la creación de diccionarios personalizados almacenados, consulta Crea un detector de diccionario personalizado almacenado.

Detalles de coincidencias en el diccionario

Aquí tienes una guía sobre cómo Cloud DLP detecta coincidencias entre palabras y frases del diccionario. Estos puntos se aplican a los diccionarios personalizados normales y almacenados:

  • Las palabras del diccionario no distinguen entre mayúsculas y minúsculas. Si tu diccionario incluye Abby, coincidirá con abby, ABBY, Abby, etcétera.
  • Todos los caracteres, en los diccionarios o en el contenido que se va a analizar, excepto las letras y los dígitos en el plano multilingüe básico de Unicode, se consideran como espacios en blanco cuando se buscan coincidencias. Si tu diccionario busca Abby Abernathy, coincidirá con abby abernathy, Abby, Abernathy, Abby (ABERNATHY), etcétera.
  • Los caracteres que rodean cualquier coincidencia deben ser de un tipo diferente (letras o dígitos) de los caracteres adyacentes dentro de la palabra. Si tu diccionario busca Abi, coincidirá con los tres primeros caracteres de Abi904, pero no de Abigail.
  • Las palabras del diccionario que contienen una gran cantidad de caracteres que no son letras o dígitos pueden generar resultados inesperados, ya que esos caracteres se tratan como espacios en blanco.

Ejemplos

Lista de palabras simples

Supongamos que tienes datos que incluyen en qué habitación de hospital se trató a un paciente durante una visita. Estas ubicaciones se pueden considerar sensibles en un conjunto de datos en particular, pero no son algo que los detectores integrados de Cloud DLP identifiquen.

Las habitaciones se catalogaron de la siguiente manera:

  • “RM-Orange”
  • “RM-Yellow”
  • “RM-Green”

En el siguiente ejemplo de JSON, se define un diccionario personalizado que podrías usar para desidentificar los números de habitaciones personalizados.

Entrada de JSON:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}

{
  "item":{
    "value":"Patient was seen in RM-YELLOW then transferred to rm green."
  },
  "deidentifyConfig":{
    "infoTypeTransformations":{
      "transformations":[
        {
          "primitiveTransformation":{
            "replaceWithInfoTypeConfig":{

            }
          }
        }
      ]
    }
  },
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"CUSTOM_ROOM_ID"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "RM-GREEN",
              "RM-YELLOW",
              "RM-ORANGE"
            ]
          }
        }
      }
    ]
  }
}

Resultado de JSON:

Cuando usamos el método POST para la entrada JSON en content:deidentify, se muestra la siguiente respuesta de JSON:

{
  "item":{
    "value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
  },
  "overview":{
    "transformedBytes":"17",
    "transformationSummaries":[
      {
        "infoType":{
          "name":"CUSTOM_ROOM_ID"
        },
        "transformation":{
          "replaceWithInfoTypeConfig":{

          }
        },
        "results":[
          {
            "count":"2",
            "code":"SUCCESS"
          }
        ],
        "transformedBytes":"17"
      }
    ]
  }
}

Cloud DLP identificó los números de habitación especificados en el mensaje WordList del diccionario personalizado de forma correcta. Ten en cuenta que los elementos coinciden incluso cuando falta la mayúscula y el guion (-), como en el segundo ejemplo, “rm green”.

Lista de excepciones

Supongamos que tienes datos de registro que incluyen identificadores de clientes, como direcciones de correo electrónico, y deseas ocultar esta información. Sin embargo, estos registros también incluyen las direcciones de correo electrónico de los desarrolladores internos y no quieres ocultarlas.

En el siguiente ejemplo de JSON, se crea un diccionario personalizado que hace una lista de un subconjunto de direcciones de correo electrónico dentro del mensaje WordList (jack@example.org y jill@example.org) y les asigna el nombre de Infotipo personalizado DEVELOPER_EMAIL. Este JSON le indica a Cloud DLP que ignore las direcciones de correo electrónico especificadas y reemplaza cualquier otra dirección de correo electrónico que detecte con una string que corresponda a su Infotipo (en este caso, EMAIL_ADDRESS):

Entrada de JSON:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}

{
  "item":{
    "value":"jack@example.org accessed customer record of user5@example.com"
  },
  "deidentifyConfig":{
    "infoTypeTransformations":{
      "transformations":[
        {
          "primitiveTransformation":{
            "replaceWithInfoTypeConfig":{

            }
          },
          "infoTypes":[
            {
              "name":"EMAIL_ADDRESS"
            }
          ]
        }
      ]
    }
  },
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"DEVELOPER_EMAIL"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "jack@example.org",
              "jill@example.org"
            ]
          }
        }
      }
    ],
    "infoTypes":[
      {
        "name":"EMAIL_ADDRESS"
      }
    ]
  }
}

Resultado de JSON:

Cuando usamos el método POST para este JSON en content:deidentify, se muestra la siguiente respuesta de JSON:

{
  "item":{
    "value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
  },
  "overview":{
    "transformedBytes":"17",
    "transformationSummaries":[
      {
        "infoType":{
          "name":"EMAIL_ADDRESS"
        },
        "transformation":{
          "replaceWithInfoTypeConfig":{

          }
        },
        "results":[
          {
            "count":"1",
            "code":"SUCCESS"
          }
        ],
        "transformedBytes":"17"
      }
    ]
  }
}

La respuesta identificó de forma correcta que el detector de Infotipo EMAIL_ADDRESS y el detector de Infotipo personalizado DEVELOPER_EMAIL coincidieron con user1@example.com y jack@example.org. Ten en cuenta que debido a que elegimos transformar solo EMAIL_ADDRESS, la dirección jack@example.org se mantuvo intacta.

Mejora un detector de Infotipo incorporado

Considera una situación en la que un detector de Infotipo incorporado no muestra los valores correctos. Por ejemplo, deseas que se muestren las coincidencias en nombres de personas, pero el detector incorporado de Cloud DLP PERSON_NAME no puede mostrar las coincidencias en algunos nombres de personas que son comunes dentro de tu conjunto de datos.

Cloud DLP te permite mejorar los detectores de Infotipo incorporados mediante la inclusión de un detector integrado en la declaración para un detector de Infotipo personalizado, como se muestra en el siguiente ejemplo. Este fragmento ilustra cómo configurar Cloud DLP para que el detector de Infotipo incorporado PERSON_NAME coincida, además, con el nombre “Quasimodo”:

...
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"PERSON_NAME"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "quasimodo"
            ]
          }
        }
      }
    ]
  }
...
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación sobre prevención de pérdida de datos