Melakukan de-identifikasi dan mengidentifikasi ulang data sensitif

Panduan memulai ini menunjukkan cara menggunakan Perlindungan Data Sensitif untuk melakukan de-identifikasi dan mengidentifikasi ulang data sensitif dalam konten teks. Dalam prosesnya, Anda akan diarahkan untuk menggunakan Cloud Key Management Service untuk membuat kunci gabungan. Anda memerlukan kunci ini dalam permintaan de-identifikasi dan mengidentifikasi ulang.

Proses yang dijelaskan dalam panduan memulai ini disebut pseudonimisasi (atau tokenisasi). Dalam proses ini, Perlindungan Data Sensitif menggunakan kunci kriptografis untuk mengonversi (de-identifikasi) teks sensitif menjadi token. Agar dapat memulihkan (mengidentifikasi ulang) teks tersebut, Anda memerlukan kunci kriptografis yang Anda gunakan selama de-identifikasi dan token.

Perlindungan Data Sensitif mendukung metode kriptografi yang dapat dikembalikan dan tidak dapat dibatalkan. Untuk mengidentifikasi ulang konten, Anda harus memilih metode yang dapat dikembalikan.

Metode kriptografi yang dijelaskan di sini disebut enkripsi deterministik menggunakan AES-SIV (Advanced Encryption Standard dalam mode Synthetic Initialization Vector). Kami merekomendasikan hal ini di antara semua metode kriptografi yang dapat dibalik dan didukung Perlindungan Data Sensitif, karena memberikan tingkat keamanan tertinggi.

Anda dapat menyelesaikan langkah-langkah dalam topik ini dalam waktu 10 hingga 20 menit, tidak termasuk langkah-langkah Sebelum memulai.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Enable the Sensitive Data Protection and Cloud KMS APIs:

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  7. Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: roles/dlp.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Ganti PROJECT_ID dengan project ID Anda.
    • Ganti EMAIL_ADDRESS dengan alamat email Anda.
    • Ganti ROLE dengan setiap peran individual.
  8. Menginstal Google Cloud CLI.
  9. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  11. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  12. Enable the Sensitive Data Protection and Cloud KMS APIs:

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  13. Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: roles/dlp.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Ganti PROJECT_ID dengan project ID Anda.
    • Ganti EMAIL_ADDRESS dengan alamat email Anda.
    • Ganti ROLE dengan setiap peran individual.

Langkah 1: Buat key ring dan kunci

Sebelum memulai prosedur ini, tentukan tempat Anda ingin Perlindungan Data Sensitif memproses permintaan de-identifikasi dan identifikasi ulang. Saat membuat kunci Cloud KMS, Anda harus menyimpannya di global atau di region yang sama dengan yang akan Anda gunakan untuk permintaan Perlindungan Data Sensitif. Jika tidak, permintaan Perlindungan Data Sensitif akan gagal.

Anda dapat menemukan daftar lokasi yang didukung di lokasi Perlindungan Data Sensitif. Catat nama region yang Anda pilih (misalnya, us-west1).

Prosedur ini menggunakan global sebagai lokasi untuk semua permintaan API. Jika Anda ingin menggunakan region yang berbeda, ganti global dengan nama wilayah.

  1. Buat key ring:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. Buat kunci:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. Cantumkan key ring dan kunci Anda:

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

    Anda akan mendapatkan output berikut:

    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
    

    Dalam output ini, PROJECT_ID adalah ID project Anda.

    Jalur pada NAME adalah nama resource lengkap kunci Cloud KMS Anda. Perhatikan hal ini karena permintaan de-identifikasi dan mengidentifikasi ulang memerlukannya.

Langkah 2: Buat kunci AES berenkode base64

Bagian ini menjelaskan cara membuat kunci Advanced Encryption Standard (AES) dan mengenkodenya dalam format base64.

  1. Buat kunci AES 128-, 192-, atau 256-bit. Perintah berikut menggunakan openssl untuk membuat kunci 256-bit di direktori saat ini:

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

    File aes_key.bin ditambahkan ke direktori Anda saat ini.

  2. Enkode kunci AES sebagai string base64:

    base64 -i ./aes_key.bin
    

    Anda akan mendapatkan output yang mirip dengan berikut ini:

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

Langkah 3: Gabungkan kunci AES menggunakan kunci Cloud KMS

Bagian ini menjelaskan cara menggunakan kunci Cloud KMS yang Anda buat di Langkah 1 untuk menggabungkan kunci AES berenkode base64 yang Anda buat di Langkah 2.

Untuk menggabungkan kunci AES, gunakan curl untuk mengirim permintaan berikut ke projects.locations.keyRings.cryptoKeys.encrypt Cloud KMS API:

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\"}"

Ganti kode berikut:

Respons yang Anda dapatkan dari Cloud KMS mirip dengan JSON berikut:

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

Dalam output ini, PROJECT_ID adalah ID project Anda.

Catat nilai ciphertext dalam respons yang Anda dapatkan. Itu adalah kunci gabungan Anda.

Langkah 4: Kirim permintaan de-identifikasi ke DLP API

Bagian ini menjelaskan cara melakukan de-identifikasi data sensitif dalam konten teks.

Untuk menyelesaikan tugas ini, Anda memerlukan hal berikut:

  • Nama lengkap resource kunci Cloud KMS yang Anda buat di Langkah 1.
  • Kunci gabungan yang Anda buat di Langkah 3.

Bagian ini mengharuskan Anda menyimpan contoh permintaan dalam file JSON. Jika menggunakan Cloud Shell, Anda dapat menggunakan Cloud Shell Editor untuk membuat file. Untuk meluncurkan editor, klik Open Editor di toolbar jendela Cloud Shell.

Untuk melakukan de-identifikasi data sensitif dalam konten teks, ikuti langkah-langkah berikut:

  1. Buat file permintaan JSON dengan teks berikut.

    {
      "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"
          }
        ]
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • WRAPPED_KEY: kunci gabungan yang Anda buat di Langkah 3.

    Pastikan nilai cryptoKeyName yang dihasilkan membentuk nama lengkap resource dari kunci Cloud KMS Anda.

    Untuk mengetahui informasi selengkapnya tentang komponen permintaan JSON ini, lihat projects.locations.content.deidentify. Setelah Anda menyelesaikan panduan memulai ini, coba bereksperimen dengan input yang berbeda untuk permintaan ini. Anda dapat menggunakan curl seperti yang dijelaskan di sini. Atau, Anda dapat menggunakan API Explorer di halaman referensi API di bagian Coba API ini.

  2. Simpan file sebagai deidentify-request.json.

  3. Gunakan curl untuk membuat permintaan 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
    

    Ganti PROJECT_ID dengan ID project Anda.

    Untuk meneruskan nama file ke curl, gunakan opsi -d (untuk data) dan beri tanda @ di depan nama file. File ini harus berada di direktori yang sama dengan tempat Anda menjalankan perintah curl.

    Respons yang Anda dapatkan dari Perlindungan Data Sensitif mirip dengan JSON berikut:

    {
     "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"
         }
       ]
     }
    }
    

    Di kolom item, alamat email akan diganti dengan token seperti EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Untuk mengidentifikasi ulang konten ini, Anda harus meneruskan seluruh token dalam permintaan identifikasi ulang.

Langkah 5: Mengirim permintaan identifikasi ulang ke DLP API

Bagian ini menjelaskan cara mengidentifikasi ulang data berupa token dalam konten teks.

Untuk menyelesaikan tugas ini, Anda memerlukan hal berikut:

  • Nama lengkap resource kunci Cloud KMS yang Anda buat di Langkah 1.
  • Kunci gabungan yang Anda buat di Langkah 3.
  • Token yang Anda terima pada Langkah 4.

Untuk mengidentifikasi ulang konten yang di-token, ikuti langkah-langkah berikut:

  1. Buat file permintaan JSON dengan teks berikut.

    {
      "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."
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • WRAPPED_KEY: kunci gabungan yang Anda buat di Langkah 3.
    • TOKEN: token yang Anda terima pada Langkah 4—misalnya, EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.

    Pastikan nilai cryptoKeyName yang dihasilkan membentuk nama lengkap resource dari kunci Cloud KMS Anda.

    Untuk mengetahui informasi selengkapnya tentang komponen permintaan JSON ini, lihat projects.locations.content.reidentify. Setelah Anda menyelesaikan panduan memulai ini, coba bereksperimen dengan input yang berbeda untuk permintaan ini. Anda dapat menggunakan curl seperti yang dijelaskan di sini. Atau, Anda dapat menggunakan API Explorer di halaman referensi API di bagian Coba API ini.

  2. Simpan file sebagai reidentify-request.json.

  3. Gunakan curl untuk membuat permintaan 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
    

    Ganti PROJECT_ID dengan ID project Anda.

    Untuk meneruskan nama file ke curl, gunakan opsi -d (untuk data) dan beri tanda @ di depan nama file. File ini harus berada di direktori yang sama dengan tempat Anda menjalankan perintah curl.

    Respons yang Anda dapatkan dari Perlindungan Data Sensitif mirip dengan JSON berikut:

    {
     "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"
         }
       ]
     }
    }
    

    Di kolom item, token alamat email akan diganti dengan alamat email sebenarnya dari teks asli.

    Anda baru saja melakukan de-identifikasi dan mengidentifikasi ulang data sensitif dalam konten teks menggunakan enkripsi deterministik.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, hapus project Google Cloud yang berisi resource tersebut.

Menghancurkan versi kunci Anda

Jika Anda tidak ingin lagi menggunakan kunci yang dibuat di panduan memulai ini, musnahkan versinya.

Cantumkan versi yang tersedia untuk kunci Anda:

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

Untuk menghancurkan versi, jalankan perintah berikut:

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

Ganti KEY_VERSION dengan nomor versi yang akan dihancurkan.

Menghapus project

Jika Anda membuat project baru untuk panduan memulai ini, cara termudah untuk mencegah biaya tambahan adalah dengan menghapus project tersebut.

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Mencabut kredensial

Opsional: Cabut kredensial dari gcloud CLI.

gcloud auth revoke

Langkah selanjutnya