Ejemplos de desidentificación de datos tabulares

Cloud Data Loss Prevention (DLP) puede detectar, clasificar y desidentificar datos sensibles dentro de datos estructurados. Cuando se desidentifica el contenido como una tabla, la estructura y las columnas proporcionan pistas adicionales a Cloud DLP que pueden permitirle proporcionar mejores resultados para algunos casos prácticos. Por ejemplo, puedes analizar una sola columna para un tipo de datos determinado en lugar de toda la estructura de la tabla.

En este tema, se proporcionan ejemplos de cómo configurar la desidentificación de datos sensibles dentro de texto estructurado. La desidentificación se habilita a través de las transformaciones de registro. Estas transformaciones se aplican a los valores dentro de los datos de texto tabular que se identifican como un Infotipo específico o a una columna completa de datos tabulares.

En este tema, también se proporcionan ejemplos de transformaciones de datos tabulares mediante el método de hash criptográfico. Los métodos de transformación criptográfica son únicos debido al requisito de una clave criptográfica.

El JSON que se muestra en los siguientes ejemplos se puede insertar en cualquier solicitud de desidentificación dentro del atributo "deidentifyConfig" (DeidentifyConfig). Haz clic en el vínculo “Explorador de API” para probar el JSON de ejemplo en el Explorador de API.

Transforma una columna sin inspección

Para transformar una columna específica en la que el contenido ya es conocido, puedes omitir la inspección y especificar una transformación directamente. En la tabla de ejemplo que sigue, se agrupa la columna “PUNTUACIÓN DE FELICIDAD” en incrementos de 10.

Entrada Tabla transformada
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
101 Charles Dickens 95
22 Jane Austen 21
55 Mark Twain 75
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
101 Charles Dickens 90:100
22 Jane Austen 20:30
55 Mark Twain 70:80

Ejemplo del Explorador de API

"deidentifyConfig":{
  "recordTransformations":{
    "fieldTransformations":[
      {
        "fields":[
          {
            "name":"HAPPINESS SCORE"
          }
        ],
        "primitiveTransformation":{
          "fixedSizeBucketingConfig":{
            "bucketSize":10,
            "lowerBound":{
              "integerValue":"0"
            },
            "upperBound":{
              "integerValue":"100"
            }
          }
        }
      }
    ]
  }
}

Transforma una columna en función del valor de otra columna

Puedes transformar una columna según el valor de otra. En este ejemplo, se oculta la “PUNTUACIÓN DE FELICIDAD” para todos los pacientes mayores de 89.

Entrada Tabla transformada
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
101 Charles Dickens 95
22 Jane Austen 21
55 Mark Twain 75
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
101 Charles Dickens **
22 Jane Austen 21
55 Mark Twain 75

Ejemplo del Explorador de API

"deidentifyConfig":{
  "recordTransformations":{
    "fieldTransformations":[
      {
        "fields":[
          {
            "name":"HAPPINESS SCORE"
          }
        ],
        "primitiveTransformation":{
          "characterMaskConfig":{
            "maskingCharacter":"*"
          }
        },
        "condition":{
          "expressions":{
            "conditions":{
              "conditions":[
                {
                  "field":{
                    "name":"AGE"
                  },
                  "operator":"GREATER_THAN",
                  "value":{
                    "integerValue":"89"
                  }
                }
              ]
            }
          }
        }
      }
    ]
  }
}

Transforma los resultados en columnas

Puedes transformar los resultados que componen solo una parte del contenido de una celda o la totalidad de este. En este ejemplo, todas las instancias de PERSON_NAME son anónimas.

Entrada Tabla transformada
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD FACTOIDE
101 Charles Dickens 95 El nombre de Charles Dickens fue una maldición; es probable que lo haya inventado Shakespeare.
22 Jane Austen 21 Hay 14 besos en las novelas de Jane Austen.
55 Mark Twain 75 Mark Twain amaba los gatos.
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD FACTOIDE
101 [PERSON_NAME] 95 El nombre de [PERSON_NAME] fue una maldición; es probable que lo haya inventado [PERSON_NAME].
22 [PERSON_NAME] 21 Hay 14 besos en las novelas de [PERSON_NAME].
55 [PERSON_NAME] 75 [PERSON_NAME] amaba los gatos.

Ejemplo del Explorador de API

"deidentifyConfig":{
  "recordTransformations":{
    "fieldTransformations":[
      {
        "infoTypeTransformations":{
          "transformations":[
            {
              "infoTypes":[
                {
                  "name":"PERSON_NAME"
                }
              ],
              "primitiveTransformation":{
                "replaceWithInfoTypeConfig":{

                }
              }
            }
          ]
        },
        "fields":[
          {
            "name":"PATIENT"
          },
          {
            "name":"FACTOID"
          }
        ]
      }
    ]
  }
}

Suprime una fila en función del contenido de una columna

Puedes quitar una fila por completo según el contenido que aparezca en cualquier columna. En este ejemplo, se suprime el registro de “Charles Dickens”, ya que este paciente tiene más de 89 años.

Entrada Tabla transformada
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
101 Charles Dickens 95
22 Jane Austen 21
55 Mark Twain 75
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD
22 Jane Austen 21
55 Mark Twain 75

Ejemplo del Explorador de API

"deidentifyConfig":{
  "recordTransformations":{
    "recordSuppressions":[
      {
        "condition":{
          "expressions":{
            "conditions":{
              "conditions":[
                {
                  "field":{
                    "name":"AGE"
                  },
                  "operator":"GREATER_THAN",
                  "value":{
                    "integerValue":"89"
                  }
                }
              ]
            }
          }
        }
      }
    ]
  }
}

Transforma los resultados solo cuando se cumplan condiciones específicas en otro campo

En este ejemplo, los resultados de PERSON_NAME solo se ocultan si la columna “EDAD” indica que el paciente tiene más de 89 años.

Entrada Tabla transformada
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD FACTOIDE
101 Charles Dickens 95 El nombre de Charles Dickens fue una maldición; es probable que lo haya inventado Shakespeare.
22 Jane Austen 21 Hay 14 besos en las novelas de Jane Austen.
55 Mark Twain 75 Mark Twain amaba los gatos.
EDAD PACIENTE PUNTUACIÓN DE FELICIDAD FACTOIDE
101 [PERSON_NAME] 95 El nombre de [PERSON_NAME] fue una maldición; es probable que lo haya inventado [PERSON_NAME].
22 Jane Austen 21 Hay 14 besos en las novelas de Jane Austen.
55 Mark Twain 75 Mark Twain amaba los gatos.

Ejemplo del Explorador de API

"deidentifyConfig":{
  "recordTransformations":{
    "fieldTransformations":[
      {
        "infoTypeTransformations":{
          "transformations":[
            {
              "infoTypes":[
                {
                  "name":"PERSON_NAME"
                }
              ],
              "primitiveTransformation":{
                "replaceWithInfoTypeConfig":{

                }
              }
            }
          ]
        },
        "fields":[
          {
            "name":"PATIENT"
          },
          {
            "name":"FACTOID"
          }
        ],
        "condition":{
          "expressions":{
            "conditions":{
              "conditions":[
                {
                  "field":{
                    "name":"AGE"
                  },
                  "operator":"GREATER_THAN",
                  "value":{
                    "integerValue":"89"
                  }
                }
              ]
            }
          }
        }
      }
    ]
  }
}

Transforma los resultados mediante una transformación de hash criptográfico

En los siguientes ejemplos de JSON, se usan transformaciones de Infotipo para indicar a la API de Cloud DLP que inspeccione toda la estructura de la tabla en busca de Infotipos específicos y, luego, encripte los valores coincidentes con una CryptoKey transitoria.

En el siguiente ejemplo, se muestra la desidentificación de dos Infotipos mediante una transformación de hash criptográfico.

Entrada:

userid (ID de usuario) comments (comentarios)
user1@example.org mi correo electrónico es user1@example.org y mi teléfono es 858-555-0222
user2@example.org mi correo electrónico es user2@example.org y mi teléfono es 858-555-0223
user3@example.org mi correo electrónico es user3@example.org y mi teléfono es 858-555-0224

Tabla transformada:

userid (ID de usuario) comments (comentarios)
1kSfj3Op64MH1BiznupEpX0BdQrHMm62X6abgsPH5zM= Mi correo electrónico es 1kSfj3Op64MH1BiznupEpX0BdQrHMm62X6abgsPH5zM= y mi teléfono es hYXPcsJNBCe1rr51sHiVw2KhtoyMe4HEFKNHWFcDVm0=
4ESy7+rEN8NVaUJ6J7kwvcgW8wcm0cm5gbBAcu6SfdM= mi correo electrónico es 4ESy7+rEN8NVaUJ6J7kwvcgW8wcm0cm5gbBAcu6SfdM= y mi teléfono es KKqW1tQwgvGiC6iWJHhLiz2enNSEFRzhmLOf9fSTxRw=
bu1blyd/mbjLmpF2Rdi6zpgsLatSwpJLVki2fMeudM0= Mi correo electrónico es bu1blyd/mbjLmpF2Rdi6zpgsLatSwpJLVki2fMeudM0= y mi teléfono es eNt7qtZVLmxRb8z8NBR/+z00In07CI3hEMStbwofWoc=

Ejemplo del Explorador de API

{
  "inspectConfig":{
    "infoTypes":[
      {
        "name":"EMAIL_ADDRESS"
      },
      {
        "name":"PHONE_NUMBER"
      }
    ]
  },
  "deidentifyConfig":{
    "infoTypeTransformations":{
      "transformations":[
        {
          "infoTypes":[
            {
              "name":"EMAIL_ADDRESS"
            },
            {
              "name":"PHONE_NUMBER"
            }
          ],
          "primitiveTransformation":{
            "cryptoHashConfig":{
              "cryptoKey":{
                "transient":{
                  "name":"[TRANSIENT-CRYPTO-KEY]"
                }
              }
            }
          }
        }
      ]
    }
  },
  "item":{
    "table":{
      "headers":[
        {
          "name":"userid"
        },
        {
          "name":"comments"
        }
      ],
      "rows":[
        {
          "values":[
            {
              "stringValue":"abby_abernathy@example.org"
            },
            {
              "stringValue":"my email is abby_abernathy@example.org and phone is 858-555-0222"
            }
          ]
        },
        {
          "values":[
            {
              "stringValue":"bert_beauregard@example.org"
            },
            {
              "stringValue":"my email is bert_beauregard@example.org and phone is 858-555-0223"
            }
          ]
        },
        {
          "values":[
            {
              "stringValue":"cathy_crenshaw@example.org"
            },
            {
              "stringValue":"my email is cathy_crenshaw@example.org and phone is 858-555-0224"
            }
          ]
        }
      ]
    }
  }
}

Transforma los resultados mediante dos transformaciones de hash criptográficos diferentes

En este ejemplo, se muestra cómo puedes usar diferentes claves criptográficas en transformaciones distintas dentro de una sola configuración de desidentificación. Primero, se declara una transformación de campo en el campo “userid”. Esa transformación no incluye ninguna transformación de Infotipos, por lo que el campo “Id de usuario” en cada fila se transforma, sin importar su tipo de datos. Luego, se declara otra transformación de campo, esta vez en el campo “comentarios”.

Entrada:

userid (ID de usuario) comments (comentarios)
user1@example.org mi correo electrónico es user1@example.org y mi teléfono es 858-555-0222
abbyabernathy1 mi ID de usuario es abbyabernathy1 y mi correo electrónico es aabernathy@example.com.

Tabla transformada:

userid (ID de usuario) comments (comentarios)
5WvS4+aJtCCwWWG79cmRNamDgyvJ+CkuwNpA2gaR1VQ= mi correo electrónico es vjqGLaA6+NUUnZAWXpI72lU1GfwQdOKu7XqWaJPcvQQ= y el teléfono es BY+mSXXTu6mOoX5pr0Xbse60uelsSHmwRCq6HcscKtk=
t0dOmHvkT0VsM++SVmESVKHenLkmhBmFezH3hSDldDg= mi ID de usuario es abbyabernathy1 y mi correo electrónico es TQ3ancdUn9zgwO5qe6ahkmVrBuNhvlMknxjPjIt0N2w=

Ejemplo del Explorador de API

{
  "inspectConfig":{
    "infoTypes":[
      {
        "name":"EMAIL_ADDRESS"
      },
      {
        "name":"PHONE_NUMBER"
      }
    ]
  },
  "deidentifyConfig":{
    "recordTransformations":{
      "fieldTransformations":[
        {
          "fields":[
            {
              "name":"userid"
            }
          ],
          "primitiveTransformation":{
            "cryptoHashConfig":{
              "cryptoKey":{
                "transient":{
                  "name":"[TRANSIENT-CRYPTO-KEY-1]"
                }
              }
            }
          }
        },
        {
          "fields":[
            {
              "name":"comments"
            }
          ],
          "infoTypeTransformations":{
            "transformations":[
              {
                "infoTypes":[
                  {
                    "name":"PHONE_NUMBER"
                  },
                  {
                    "name":"EMAIL_ADDRESS"
                  }
                ],
                "primitiveTransformation":{
                  "cryptoHashConfig":{
                    "cryptoKey":{
                      "transient":{
                        "name":"[TRANSIENT-CRYPTO-KEY-2]"
                      }
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "item":{
    "table":{
      "headers":[
        {
          "name":"userid"
        },
        {
          "name":"comments"
        }
      ],
      "rows":[
        {
          "values":[
            {
              "stringValue":"user1@example.org"
            },
            {
              "stringValue":"my email is user1@example.org and phone is 858-333-2222"
            }
          ]
        },
        {
          "values":[
            {
              "stringValue":"abbyabernathy1"
            },
            {
              "stringValue":"my userid is abbyabernathy1 and my email is aabernathy@example.com"
            }
          ]
        }
      ]
    }
  }
}