Melakukan de-identifikasi dan mengidentifikasi ulang data sensitif

Dokumen ini menunjukkan cara menggunakan Sensitive Data Protection untuk melakukan de-identifikasi dan mengidentifikasi ulang data sensitif dalam konten teks. Dalam prosesnya, Anda akan dipandu dalam membuat kunci yang digabungkan menggunakan Cloud Key Management Service. Anda memerlukan kunci ini dalam permintaan anonimisasi dan identifikasi ulang.

Proses yang dijelaskan dalam dokumen ini disebut pseudonimisasi (atau tokenisasi). Dalam proses ini, Sensitive Data Protection menggunakan kunci kriptografis untuk mengonversi (menghapus identifikasi) teks sensitif menjadi token. Untuk memulihkan (mengidentifikasi ulang) teks tersebut, Anda memerlukan kunci kriptografi yang digunakan selama de-identifikasi dan token.

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

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

Anda dapat menyelesaikan langkah-langkah dalam dokumen ini dalam waktu 10 hingga 20 menit, tidak termasuk langkah-langkah Sebelum Anda 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. Instal Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project 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.

  6. Jika Anda menggunakan project yang sudah ada untuk panduan ini, pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini. Jika berhasil membuat project baru, berarti Anda sudah memiliki izin yang diperlukan.

  7. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  8. Aktifkan Sensitive Data Protection dan Cloud KMS API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. Instal Google Cloud CLI.

  10. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  11. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  12. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project 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.

  13. Jika Anda menggunakan project yang sudah ada untuk panduan ini, pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini. Jika berhasil membuat project baru, berarti Anda sudah memiliki izin yang diperlukan.

  14. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  15. Aktifkan Sensitive Data Protection dan Cloud KMS API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat kunci AES terenkapsulasi, menyamarkan data sensitif, dan mengidentifikasi ulang data tersebut, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Membuat key ring dan kunci

Sebelum memulai prosedur ini, tentukan tempat Anda ingin Sensitive Data Protection memproses permintaan de-identifikasi dan re-identifikasi. 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 Sensitive Data Protection akan gagal.

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

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

  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. Mencantumkan key ring dan kunci Anda:

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

    Anda akan mendapatkan output berikut:

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

    Dalam output ini, PROJECT_ID adalah ID project Anda.

    Nilai NAME adalah nama resource lengkap kunci Cloud KMS Anda. Catat nilai ini karena permintaan anonimisasi dan identifikasi ulang memerlukannya.

Membuat kunci AES berenkode base64

Bagian ini menjelaskan cara membuat kunci Advanced Encryption Standard (AES) dan mengenkodekannya 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=
    

Gabungkan kunci AES menggunakan kunci Cloud KMS

Bagian ini menjelaskan cara menggunakan kunci Cloud KMS yang Anda buat di Membuat key ring dan kunci untuk mengenkapsulasi kunci AES berenkode base64 yang Anda buat di Membuat kunci AES berenkode base64.

Untuk mengenkapsulasi kunci AES, gunakan curl untuk mengirim permintaan berikut ke metode Cloud KMS API 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\"}"

Ganti kode berikut:

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

{
  "name": "projects/<var>PROJECT_ID</var>/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. Itu adalah kunci gabungan Anda.

Mengirim permintaan penghapusan identitas ke DLP API

Bagian ini menjelaskan cara menghilangkan identitas data sensitif dalam konten teks.

Untuk menyelesaikan tugas ini, Anda memerlukan hal berikut:

Anda harus menyimpan contoh permintaan dalam file JSON. Jika Anda menggunakan Cloud Shell, gunakan Cloud Shell Editor untuk membuat file. Untuk meluncurkan editor, klik Open Editor di toolbar Cloud Shell.

Untuk menganonimkan data sensitif dalam konten teks, ikuti langkah-langkah berikut:

  1. Buat file permintaan JSON bernama deidentify-request.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:

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

    Untuk mengetahui informasi selengkapnya tentang komponen permintaan JSON ini, lihat projects.locations.content.deidentify. Setelah Anda menyelesaikan tugas ini, bereksperimenlah dengan berbagai input untuk permintaan ini. Anda dapat menggunakan curl seperti yang dijelaskan di sini. Atau, gunakan API Explorer di halaman referensi API tersebut di bagian Coba metode ini.

  2. 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 awali nama file dengan tanda @. File ini harus berada di direktori yang sama dengan tempat Anda menjalankan perintah curl.

    Respons yang Anda dapatkan dari Sensitive Data Protection 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/<var>PROJECT_ID</var>/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 diganti dengan token seperti EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Catat nilai token dalam respons. Untuk mengidentifikasi ulang konten yang telah dianonimkan, Anda meneruskan seluruh token dalam permintaan identifikasi ulang.

Mengirim permintaan identifikasi ulang ke DLP API

Bagian ini menjelaskan cara mengidentifikasi ulang data yang di-token dalam konten teks.

Untuk menyelesaikan tugas ini, Anda memerlukan hal berikut:

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

  1. Buat file permintaan JSON bernama reidentify-request.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:

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

    Untuk mengetahui informasi selengkapnya tentang komponen permintaan JSON ini, lihat projects.locations.content.reidentify. Setelah Anda menyelesaikan tugas ini, bereksperimenlah dengan berbagai input untuk permintaan ini. Anda dapat menggunakan curl seperti yang dijelaskan di sini. Atau, gunakan API Explorer di halaman referensi API tersebut di bagian Coba metode ini.

  2. 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 awali nama file dengan tanda @. File ini harus berada di direktori yang sama dengan tempat Anda menjalankan perintah curl.

    Respons yang Anda dapatkan dari Sensitive Data Protection 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/<var>PROJECT_ID</var>/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 diganti dengan alamat email sebenarnya dari teks asli.

    Sekarang Anda telah melakukan de-identifikasi dan identifikasi ulang data sensitif dalam konten teks menggunakan enkripsi deterministik.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya 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 dalam tugas ini, musnahkan versinya.

Mencantumkan 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 dihapus—misalnya, 1.

Menghapus project

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

    Menghapus Google Cloud project:

    gcloud projects delete PROJECT_ID

Mencabut kredensial Anda

Opsional: Cabut kredensial dari gcloud CLI.

gcloud auth revoke

Langkah berikutnya