Guía de inicio rápido: desidentifica y reidentifica texto sensible

En esta guía de inicio rápido, se muestra cómo usar Cloud Data Loss Prevention (DLP) para desidentificar y reidentificar datos sensibles en el contenido de texto. En el proceso, se te guía para usar Cloud Key Management Service a fin de crear una clave unida. Necesitarás esta clave en tus solicitudes de desidentificación y reidentificación.

El proceso descrito en esta guía de inicio rápido se llama seudonimización (o asignación de token). En este proceso, Cloud DLP usa una clave criptográfica para convertir (desidentificar) el texto sensible en un token. Para restablecer (volver a identificar) ese texto, necesitas la clave criptográfica que usaste durante la desidentificación y el token.

Cloud DLP admite métodos criptográficos reversibles y no reversibles. Para volver a identificar el contenido, debes elegir un método reversible.

El método criptográfico descrito aquí se denomina encriptación determinista mediante AES-SIV (estándar de encriptación avanzada en modo de vector de inicialización sintética). Recomendamos esto entre todos los métodos reversibles criptográficos que admite Cloud DLP, ya que proporciona el nivel más alto de seguridad.

Puedes completar los pasos en este tema en 10 a 20 minutos, sin incluir los pasos de Antes de comenzar.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las API de Cloud DLP and Cloud KMS.

    Habilita las API

  5. Crea una cuenta de servicio:

    1. En Cloud Console, ve a la página Crear cuenta de servicio.

      Ir a Crear cuenta de servicio
    2. Selecciona un proyecto
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. Cloud Console completa el campo ID de cuenta de servicio según este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Haz clic en el campo Seleccionar una función.

      En Acceso rápido, haz clic en Básico y, luego, en Propietario.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  6. Para crear una clave de cuenta de servicio, haz lo siguiente:

    1. En Cloud Console, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  7. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  8. Instala e inicializa el SDK de Cloud.
  9. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  10. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  11. Habilita las API de Cloud DLP and Cloud KMS.

    Habilita las API

  12. Crea una cuenta de servicio:

    1. En Cloud Console, ve a la página Crear cuenta de servicio.

      Ir a Crear cuenta de servicio
    2. Selecciona un proyecto
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio. Cloud Console completa el campo ID de cuenta de servicio según este nombre.

      Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

    4. Haz clic en Crear y continuar.
    5. Haz clic en el campo Seleccionar una función.

      En Acceso rápido, haz clic en Básico y, luego, en Propietario.

    6. Haga clic en Continuar.
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.

      No cierres la ventana del navegador. La usarás en la próxima tarea.

  13. Para crear una clave de cuenta de servicio, haz lo siguiente:

    1. En Cloud Console, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
    2. Haga clic en Claves.
    3. Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
    4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
    5. Haga clic en Cerrar.
  14. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  15. Instala e inicializa el SDK de Cloud.

Paso 1: Crea un llavero de claves y una clave

Antes de comenzar con este procedimiento, decide dónde deseas que Cloud DLP procese tus solicitudes de desidentificación y reidentificación. Cuando creas una clave de Cloud KMS, debes almacenarla en global o en la misma región que usarás para tus solicitudes de Cloud DLP. De lo contrario, las solicitudes de Cloud DLP fallarán.

Puedes encontrar una lista de ubicaciones compatibles en ubicaciones de Cloud DLP. Anota el nombre de la región que elegiste (por ejemplo, us-west1).

En este procedimiento, se usa global como la ubicación para todas las solicitudes a la API. Si quieres usar una región diferente, reemplaza global por el nombre de la región.

  1. Crea un llavero de claves

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. Crea una clave:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. Enumera el llavero de claves y la clave:

    gcloud kms keys list \
        --location "global" \
        --keyring "dlp-keyring"
    

    Obtendrás el siguiente resultado:

    NAME                                                                                   PURPOSE          ALGORITHM                    PROTECTION_LEVEL  LABELS  PRIMARY_ID  PRIMARY_STATE
    projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key  ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED
    

    En este resultado, PROJECT_ID es el ID de tu proyecto.

    La ruta en NAME es el nombre completo del recurso de tu clave de Cloud KMS. Anota esto, puesto que las solicitudes de desidentificación y reidentificación lo requieren.

Paso 2: Crea una clave AES codificada en base64

En esta sección, se describe cómo crear una clave del Estándar de encriptación avanzada (AES) y codificarla en formato base64.

  1. Crea una clave AES de 128, 192 o 256 bits. El siguiente comando utiliza openssl para crear una clave de 256 bits en el directorio actual:

    openssl rand -out "./aes_key.bin" 32
    

    El archivo aes_key.bin se agrega a tu directorio actual.

  2. Codifica la clave AES como una string de base64:

    base64 -i ./aes_key.bin
    

    Obtendrás un resultado similar al siguiente:

    uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
    

Paso 3: Une la clave AES con la clave de Cloud KMS

En esta sección, se describe cómo usar la clave de Cloud KMS que creaste en el Paso 1 para unir la clave AES codificada en base64 que creaste en el Paso 2.

Para unir la clave AES, usa curl a fin de enviar la siguiente solicitud a la API de Cloud KMS projects.locations.keyRings.cryptoKeys.encrypt:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
  --request "POST" \
  --header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
  --header "content-type: application/json" \
  --data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"

Reemplaza lo siguiente:

  • PROJECT_ID: es el ID de tu proyecto.
  • BASE64_ENCODED_AES_KEY: la string codificada en base64 que se muestra en el Paso 2.

La respuesta que obtienes de Cloud KMS es similar al siguiente código JSON:

{
  "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
  "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
  "ciphertextCrc32c": "901327763",
  "protectionLevel": "SOFTWARE"
}

En este resultado, PROJECT_ID es el ID de tu proyecto.

Anota el valor de ciphertext en la respuesta que obtienes. Esa es tu clave unida.

Paso 4: Envía una solicitud de desidentificación a la API de Cloud DLP

En esta sección, se describe cómo desidentificar datos sensibles en el contenido de texto.

Para completar esta tarea, necesitas lo siguiente:

  • El nombre completo del recurso de la clave de Cloud KMS que creaste en el Paso 1.
  • La clave unida que creaste en el Paso 3.

Para desidentificar datos sensibles en el contenido de texto, sigue estos pasos:

  1. Crea un archivo de solicitud JSON con el siguiente texto.

    {
      "item": {
        "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com."
      },
      "deidentifyConfig": {
        "infoTypeTransformations": {
          "transformations": [
            {
              "infoTypes": [
                {
                  "name": "EMAIL_ADDRESS"
                }
              ],
              "primitiveTransformation": {
                "cryptoDeterministicConfig": {
                  "cryptoKey": {
                    "kmsWrapped": {
                      "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key",
                      "wrappedKey": "WRAPPED_KEY"
                    }
                  },
                  "surrogateInfoType": {
                    "name": "EMAIL_ADDRESS_TOKEN"
                  }
                }
              }
            }
          ]
        }
      },
      "inspectConfig": {
        "infoTypes": [
          {
            "name": "EMAIL_ADDRESS"
          }
        ]
      }
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu proyecto.
    • WRAPPED_KEY: La clave unida que creaste en el Paso 3.

    Asegúrate de que el valor resultante de cryptoKeyName forme el nombre completo del recurso de tu clave de Cloud KMS.

    Para obtener más información sobre los componentes de esta solicitud JSON, consulta projects.locations.content.deidentify. Después de completar esta guía de inicio rápido, intenta experimentar con diferentes entradas para esta solicitud. Puedes usar curl como se describe aquí. También puedes usar el Explorador de API en la página de referencia de la API en Prueba esta API.

  2. Guarda el archivo como deidentify-request.json.

  3. Usa curl para realizar una solicitud projects.locations.content.deidentify:

    curl -s \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json" \
    https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:deidentify \
    -d @deidentify-request.json
    

    Reemplaza PROJECT_ID por el ID de tu proyecto.

    A fin de pasar un nombre de archivo a curl, se usa la opción -d (para datos) y se le antepone el signo @ al nombre de archivo. Este archivo debe estar en el mismo directorio en el que ejecutas el comando curl.

    La respuesta que obtienes de Cloud DLP es similar a la siguiente JSON:

    {
     "item": {
       "value": "My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q."
     },
     "overview": {
       "transformedBytes": "22",
       "transformationSummaries": [
         {
           "infoType": {
             "name": "EMAIL_ADDRESS"
           },
           "transformation": {
             "cryptoDeterministicConfig": {
               "cryptoKey": {
                 "kmsWrapped": {
                   "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
                   "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key"
                 }
               },
               "surrogateInfoType": {
                 "name": "EMAIL_ADDRESS_TOKEN"
               }
             }
           },
           "results": [
             {
               "count": "1",
               "code": "SUCCESS"
             }
           ],
           "transformedBytes": "22"
         }
       ]
     }
    }
    

    En el campo item, la dirección de correo electrónico se reemplaza por un token como EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Para volver a identificar este contenido, debes pasar todo el token en la solicitud de reidentificación.

Paso 5: Envía una solicitud de reidentificación a la API de Cloud DLP

En esta sección, se describe cómo reidentificar los datos con asignación de token en el contenido de texto.

Para completar esta tarea, necesitas lo siguiente:

  • El nombre completo del recurso de la clave de Cloud KMS que creaste en el Paso 1.
  • La clave unida que creaste en el Paso 3.
  • Es el token que recibiste en el Paso 4.

Para volver a identificar el contenido con asignación de token, sigue estos pasos:

  1. Crea un archivo de solicitud JSON con el siguiente texto.

    {
      "reidentifyConfig":{
        "infoTypeTransformations":{
          "transformations":[
            {
              "infoTypes":[
                {
                  "name":"EMAIL_ADDRESS_TOKEN"
                }
              ],
              "primitiveTransformation":{
                "cryptoDeterministicConfig":{
                  "cryptoKey":{
                  "kmsWrapped": {
                    "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key",
                    "wrappedKey": "WRAPPED_KEY"
                  }
                },
                  "surrogateInfoType":{
                    "name":"EMAIL_ADDRESS_TOKEN"
                  }
                }
              }
            }
          ]
        }
      },
      "inspectConfig":{
        "customInfoTypes":[
          {
            "infoType":{
              "name":"EMAIL_ADDRESS_TOKEN"
            },
            "surrogateType":{
    
            }
          }
        ]
      },
      "item":{
        "value": "My name is Alicia Abernathy, and my email address is TOKEN."
      }
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu proyecto.
    • WRAPPED_KEY: La clave unida que creaste en el Paso 3.
    • TOKEN: El token que recibiste en el Paso 4, por ejemplo, EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q

    Asegúrate de que el valor resultante de cryptoKeyName forme el nombre completo del recurso de tu clave de Cloud KMS.

    Para obtener más información sobre los componentes de esta solicitud JSON, consulta projects.locations.content.reidentify. Después de completar esta guía de inicio rápido, intenta experimentar con diferentes entradas para esta solicitud. Puedes usar curl como se describe aquí. También puedes usar el Explorador de API en la página de referencia de la API en Prueba esta API.

  2. Guarda el archivo como reidentify-request.json.

  3. Usa curl para realizar una solicitud projects.locations.content.reidentify:

    curl -s \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json" \
    https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:reidentify \
    -d @reidentify-request.json
    

    Reemplaza PROJECT_ID por el ID de tu proyecto.

    A fin de pasar un nombre de archivo a curl, se usa la opción -d (para datos) y se le antepone el signo @ al nombre de archivo. Este archivo debe estar en el mismo directorio en el que ejecutas el comando curl.

    La respuesta que obtienes de Cloud DLP es similar a la siguiente JSON:

    {
     "item": {
       "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com."
     },
     "overview": {
       "transformedBytes": "70",
       "transformationSummaries": [
         {
           "infoType": {
             "name": "EMAIL_ADDRESS"
           },
           "transformation": {
             "cryptoDeterministicConfig": {
               "cryptoKey": {
                 "kmsWrapped": {
                   "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
                   "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key"
                 }
               },
               "surrogateInfoType": {
                 "name": "EMAIL_ADDRESS_TOKEN"
               }
             }
           },
           "results": [
             {
               "count": "1",
               "code": "SUCCESS"
             }
           ],
           "transformedBytes": "70"
         }
       ]
     }
    }
    

    En el campo item, el token de dirección de correo electrónico se reemplaza por la dirección de correo electrónico real del texto original.

    Acabas de desidentificar y reidentificar datos sensibles en contenido de texto con encriptación determinista.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

Destruir tu versión de clave

Si ya no deseas usar la clave que creaste en esta guía de inicio rápido, destruye su versión.

Crea una lista de versiones disponibles para tu clave:

gcloud kms keys versions list \
    --location "global" \
    --keyring "dlp-keyring" \
    --key "dlp-key"

Para destruir una versión, ejecuta el siguiente comando:

gcloud kms keys versions destroy KEY_VERSION \
    --location "global" \
    --keyring "dlp-keyring" \
    --key "dlp-key"

Reemplaza KEY_VERSION por el número de la versión que se destruirá.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?