Sensitive Data Protection dapat melakukan de-identifikasi data sensitif dalam konten teks, termasuk teks yang disimpan dalam struktur container seperti tabel. De-identifikasi adalah proses penghapusan informasi identitas dari data. API mendeteksi data sensitif seperti informasi identitas pribadi (PII), lalu menggunakan transformasi de-identifikasi untuk menyamarkan, menghapus, atau mengaburkan data. Misalnya, teknik de-identifikasi dapat mencakup salah satu dari hal berikut:
- Menyamarkan data sensitif dengan mengganti sebagian atau seluruh karakter dengan simbol, seperti tanda bintang (*) atau tanda pagar (#).
- Mengganti setiap instance data sensitif dengan string token, atau pengganti.
- Mengenkripsi dan mengganti data sensitif menggunakan kunci yang dibuat secara acak atau telah ditentukan sebelumnya.
Anda dapat memasukkan informasi ke API menggunakan JSON melalui HTTPS, serta CLI dan beberapa bahasa pemrograman menggunakan library klien Sensitive Data Protection. Untuk menyiapkan CLI, lihat panduan memulai. Untuk mengetahui informasi selengkapnya tentang cara mengirimkan informasi dalam format JSON, lihat panduan memulai JSON.
Ringkasan API
Untuk melakukan de-identifikasi data sensitif, gunakan metode
content.deidentify
Sensitive Data Protection.
Ada tiga bagian dalam panggilan API de-identifikasi:
- Data yang akan diperiksa: Struktur string atau tabel (objek
ContentItem) yang akan diperiksa oleh API. Yang perlu diperiksa: Informasi konfigurasi deteksi (
InspectConfig) seperti jenis data (atau infoType) yang harus dicari, apakah akan memfilter temuan yang berada di atas nilai minimum kemungkinan tertentu, dan apakah akan menampilkan tidak lebih dari jumlah hasil tertentu.Dalam objek
InspectConfig, pastikan untuk menyertakan infoTypes yang ingin Anda pindai. Jika tidak, Sensitive Data Protection akan memindai set infoType default (ALL_BASIC), yang beberapa di antaranya mungkin tidak Anda perlukan. Memindai infoType yang tidak Anda perlukan dapat menambah latensi yang tidak perlu pada permintaan Anda.Objek
InspectConfigdiperlukan dalam permintaan Anda, dengan satu pengecualian. Untuk mengetahui informasi selengkapnya, lihat Transformasi kumpulan data di halaman ini.Tindakan yang harus dilakukan terhadap temuan pemeriksaan: Informasi konfigurasi (
DeidentifyConfig) yang menentukan cara Anda ingin melakukan de-identifikasi data sensitif. Argumen ini dibahas secara lebih mendetail di bagian berikut.
API menampilkan item yang sama dengan yang Anda berikan, dalam format yang sama, tetapi teks apa pun yang diidentifikasi mengandung informasi sensitif sesuai kriteria Anda telah di-de-identifikasi.
Menentukan kriteria deteksi
Detektor jenis informasi (atau "infoType") adalah mekanisme yang digunakan Sensitive Data Protection untuk menemukan data sensitif.
Sensitive Data Protection mencakup beberapa jenis pendeteksi infoType, yang semuanya diringkas di sini:
- Detektor infoType bawaan disertakan dalam Sensitive Data Protection. Pendeteksi ini mencakup pendeteksi untuk jenis data sensitif khusus negara atau wilayah serta jenis data yang berlaku secara global.
- Detektor infoType kustom adalah detektor yang Anda buat sendiri. Ada tiga jenis detektor infoType kustom:
- Pendeteksi kamus kustom reguler adalah daftar kata sederhana yang dicocokkan oleh Sensitive Data Protection. Gunakan pendeteksi kamus kustom reguler jika Anda memiliki daftar hingga beberapa puluh ribu kata atau frasa. Pendeteksi kamus kustom reguler lebih disukai jika Anda tidak mengantisipasi perubahan daftar kata secara signifikan.
- Detektor kamus kustom tersimpan dibuat oleh Sensitive Data Protection menggunakan daftar kata atau frasa yang panjang yang disimpan di Cloud Storage atau BigQuery. Gunakan pendeteksi kamus kustom tersimpan jika Anda memiliki daftar kata atau frasa yang besar—hingga puluhan juta.
- Detektor ekspresi reguler (regex) memungkinkan Sensitive Data Protection mendeteksi kecocokan berdasarkan pola ekspresi reguler.
Untuk menyaring hasil pemindaian, Anda dapat membuat aturan pemeriksaan.
Transformasi de-identifikasi
Anda harus menentukan satu atau beberapa transformasi saat menetapkan konfigurasi de-identifikasi (DeidentifyConfig). Ada dua kategori transformasi:
InfoTypeTransformations: Transformasi yang hanya diterapkan ke nilai dalam teks yang dikirimkan yang diidentifikasi sebagai infoType tertentu.RecordTransformations: Transformasi yang hanya diterapkan ke nilai dalam data teks tabulasi yang dikirimkan yang diidentifikasi sebagai infoType tertentu, atau di seluruh kolom data tabulasi.
Transformasi InfoType
Anda dapat menentukan satu atau beberapa transformasi infoType per permintaan. Dalam setiap
objek InfoTypeTransformation, Anda menentukan kedua hal berikut:
- Satu atau beberapa infoTypes yang harus diterapkan transformasi (objek array
infoTypes[]). - Transformasi dasar (objek
PrimitiveTransformation).
Perhatikan bahwa menentukan infoType bersifat opsional, tetapi tidak menentukan setidaknya satu infoType dalam argumen InspectConfig akan menyebabkan transformasi diterapkan ke semua infoType bawaan yang tidak memiliki transformasi yang disediakan. Hal ini tidak direkomendasikan, karena dapat
menyebabkan penurunan performa dan peningkatan biaya.
Transformasi primitif
Anda harus menentukan setidaknya satu transformasi primitif untuk diterapkan ke input, terlepas dari apakah Anda menerapkannya hanya ke infoType tertentu atau ke seluruh string teks. Bagian berikut menjelaskan contoh metode transformasi yang dapat Anda gunakan. Untuk mengetahui daftar semua metode transformasi yang ditawarkan Sensitive Data Protection, lihat Referensi transformasi.
replaceConfig
Menetapkan replaceConfig ke objek ReplaceValueConfig
akan mengganti nilai input yang cocok dengan nilai yang Anda tentukan.
Misalnya, Anda telah menetapkan replaceConfig ke "[email-address]"
untuk semua infoType EMAIL_ADDRESS, dan string berikut dikirim ke
Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan menjadi seperti berikut:
My name is Alicia Abernathy, and my email address is [email-address].
Contoh JSON dan kode dalam beberapa bahasa berikut menunjukkan cara membuat permintaan API dan apa yang ditampilkan DLP API:
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Lihat panduan memulai JSON untuk mengetahui informasi selengkapnya tentang cara menggunakan DLP API dengan JSON.
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
Menentukan
redactConfig
akan menyamarkan nilai tertentu dengan menghapusnya sepenuhnya. Pesan redactConfig
tidak memiliki argumen; menentukannya akan mengaktifkan transformasinya.
Misalnya, Anda telah menentukan redactConfig untuk semua infoType EMAIL_ADDRESS, dan string berikut dikirim ke Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan menjadi seperti berikut:
My name is Alicia Abernathy, and my email address is .
Contoh berikut menunjukkan cara membuat permintaan API dan apa yang ditampilkan oleh DLP API:
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
Menetapkan characterMaskConfig ke objek CharacterMaskConfig
akan menyamarkan string sebagian dengan mengganti sejumlah karakter tertentu
dengan karakter tetap. Penyamaran dapat dimulai dari awal atau akhir string. Transformasi ini juga berfungsi dengan jenis angka seperti bilangan bulat panjang.
Objek CharacterMaskConfig memiliki beberapa argumennya sendiri:
maskingCharacter: Karakter yang akan digunakan untuk menyamarkan setiap karakter dari nilai sensitif. Misalnya, Anda dapat menentukan tanda bintang (*) atau tanda pagar (#) untuk menyamarkan serangkaian angka seperti yang ada di nomor kartu kredit.numberToMask: Jumlah karakter yang akan disamarkan. Jika Anda tidak menetapkan nilai ini, semua karakter yang cocok akan disamarkan.reverseOrder: Apakah akan menyamarkan karakter dalam urutan terbalik. MenetapkanreverseOrderke true akan menyebabkan karakter dalam nilai yang cocok disamarkan dari akhir ke awal nilai. Jika disetel ke false, penyamaran akan dimulai di awal nilai.charactersToIgnore[]: Satu atau beberapa karakter yang akan dilewati saat menyamarkan nilai. Misalnya, tentukan tanda hubung di sini untuk membiarkan tanda hubung tetap ada saat menyamarkan nomor telepon. Anda juga dapat menentukan sekelompok karakter umum (CharsToIgnore) yang akan diabaikan saat menyamarkan.
Misalnya, Anda telah menetapkan characterMaskConfig untuk menyamarkan dengan '#' untuk
infotype EMAIL_ADDRESS, kecuali untuk karakter '.' dan '@'. Jika string berikut dikirim ke Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan menjadi seperti berikut:
My name is Alicia Abernathy, and my email address is ##########@#######.###.
Berikut adalah contoh yang menunjukkan cara menggunakan DLP API untuk melakukan de-identifikasi data sensitif menggunakan teknik masking.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Contoh JSON berikut menunjukkan cara membuat permintaan API dan apa yang ditampilkan oleh DLP API:
Input JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Output JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
Menetapkan cryptoHashConfig ke objek CryptoHashConfig
akan melakukan pseudonimisasi pada nilai input
dengan membuat nilai pengganti menggunakan hashing kriptografis.
Metode ini mengganti nilai input dengan "digest" atau nilai hash yang dienkripsi.
Digest dihitung dengan mengambil hash SHA-256 dari nilai input.
Kunci kriptografis yang digunakan untuk membuat hash adalah objek CryptoKey, dan harus berukuran 32 atau 64 byte.
Metode ini menghasilkan representasi berenkode base64 dari output yang di-hash. Saat ini, hanya nilai string dan bilangan bulat yang dapat di-hash.
Misalnya, Anda telah menentukan cryptoHashConfig untuk semua
infoType EMAIL_ADDRESS, dan objek CryptoKey terdiri dari
kunci yang dibuat secara acak (TransientCryptoKey).
Kemudian, string berikut dikirim ke Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan dan dibuat secara kriptografis akan terlihat seperti berikut:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Tentu saja, string heksadesimal akan dibuat secara kriptografis dan berbeda dari yang ditampilkan di sini.
dateShiftConfig
Menetapkan dateShiftConfig ke objek DateShiftConfig akan melakukan pergeseran tanggal pada nilai input tanggal dengan menggeser tanggal sebesar jumlah hari acak.
Teknik pergeseran tanggal menggeser sekumpulan tanggal secara acak, tetapi mempertahankan urutan dan durasi jangka waktu. Pergeseran tanggal biasanya dilakukan dalam konteks individu atau entitas. Artinya, Anda ingin menggeser semua tanggal untuk individu tertentu menggunakan perbedaan pergeseran yang sama, tetapi menggunakan perbedaan pergeseran terpisah untuk setiap individu lainnya.
Untuk mengetahui informasi selengkapnya tentang pergeseran tanggal, lihat topik konsep pergeseran tanggal.
Berikut adalah kode contoh dalam beberapa bahasa yang menunjukkan cara menggunakan DLP API untuk melakukan de-identifikasi tanggal menggunakan pergeseran tanggal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
cryptoReplaceFfxFpeConfig
Menetapkan cryptoReplaceFfxFpeConfig ke objek
CryptoReplaceFfxFpeConfig
akan melakukan pseudonimisasi pada nilai input
dengan mengganti nilai input dengan token. Token ini:
- Nilai input terenkripsi.
- Panjang yang sama dengan nilai input.
- Dihitung menggunakan enkripsi yang mempertahankan format dalam mode FFX ("FPE-FFX") yang dikunci
pada kunci kriptografis yang ditentukan oleh
cryptoKey. - Terdiri dari karakter yang ditentukan oleh
alphabet. Opsi yang valid:NUMERICHEXADECIMALUPPER_CASE_ALPHA_NUMERICALPHA_NUMERIC
Nilai input:
- Harus terdiri dari minimal dua karakter (atau string kosong).
- Harus terdiri dari karakter yang ditentukan oleh
alphabet.alphabetdapat terdiri dari 2 hingga 95 karakter. (alphabetdengan 95 karakter mencakup semua karakter yang dapat dicetak dalam himpunan karakter US-ASCII.)
Perlindungan Data Sensitif menghitung token pengganti menggunakan kunci kriptografis. Anda memberikan kunci ini dengan salah satu dari tiga cara:
- Dengan menyematkannya tanpa enkripsi dalam permintaan API. Tindakan ini tidak direkomendasikan.
- Dengan meminta Sensitive Data Protection untuk membuatnya.
- Dengan menyematkannya dalam bentuk terenkripsi dalam permintaan API.
Jika Anda memilih untuk menyematkan kunci dalam permintaan API, Anda harus membuat kunci dan menggabungkannya (mengenkripsi) menggunakan kunci Cloud Key Management Service (Cloud KMS). Nilai yang ditampilkan adalah string berenkode base64 secara default. Untuk menetapkan nilai ini di Sensitive Data Protection, Anda harus mendekodenya menjadi string byte. Cuplikan kode berikut menyoroti cara melakukannya dalam beberapa bahasa. Contoh end-to-end disediakan setelah cuplikan ini.
Java
KmsWrappedCryptoKey.newBuilder()
.setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedKey)))
Python
# The wrapped key is base64-encoded, but the library expects a binary
# string, so decode it here.
import base64
wrapped_key = base64.b64decode(wrapped_key)
PHP
// Create the wrapped crypto key configuration object
$kmsWrappedCryptoKey = (new KmsWrappedCryptoKey())
->setWrappedKey(base64_decode($wrappedKey))
->setCryptoKeyName($keyName);
C#
WrappedKey = ByteString.FromBase64(wrappedKey)
Untuk mengetahui informasi selengkapnya tentang cara mengenkripsi dan mendekripsi data menggunakan Cloud KMS, lihat Mengenkripsi dan Mendekripsi Data.
Secara desain, FPE-FFX mempertahankan panjang dan himpunan karakter teks input. Artinya, token ini tidak memiliki autentikasi dan vektor inisialisasi, yang akan menyebabkan perluasan panjang pada token output. Metode lain seperti AES-SIV memberikan jaminan keamanan yang lebih kuat dan direkomendasikan untuk kasus penggunaan tokenisasi, kecuali jika durasi dan penyimpanan kumpulan karakter adalah persyaratan yang ketat—misalnya, untuk kompatibilitas mundur dengan sistem data lama.
Berikut adalah kode contoh dalam beberapa bahasa yang menunjukkan cara menggunakan Sensitive Data Protection untuk melakukan de-identifikasi data sensitif dengan mengganti nilai input dengan token.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.
Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk contoh kode yang menunjukkan cara menggunakan Sensitive Data Protection untuk
mengidentifikasi ulang data sensitif yang telah dide-identifikasi melalui
metode transformasi CryptoReplaceFfxFpeConfig, lihat Enkripsi yang mempertahankan format: contoh
identifikasi ulang.
fixedSizeBucketingConfig
Transformasi bucketing—yang ini dan
bucketingConfig—berfungsi untuk menyamarkan data numerik dengan
"memasukkannya" ke dalam rentang. Rentang angka yang dihasilkan adalah string yang dipisahkan tanda hubung,
yang terdiri dari batas bawah, tanda hubung, dan batas atas.
Menetapkan fixedSizeBucketingConfig ke objek FixedSizeBucketingConfig akan mengelompokkan nilai input berdasarkan rentang ukuran tetap. Objek FixedSizeBucketingConfig terdiri dari hal-hal berikut:
lowerBound: Nilai batas bawah semua bucket. Nilai yang lebih kecil dari nilai ini dikelompokkan bersama dalam satu bucket.upperBound: Nilai batas atas semua bucket. Nilai yang lebih besar dari nilai ini dikelompokkan menjadi satu bucket.bucketSize: Ukuran setiap bucket selain bucket minimum dan maksimum.
Misalnya, jika lowerBound ditetapkan ke 10, upperBound ditetapkan ke 89, dan
bucketSize ditetapkan ke 10, bucket berikut akan digunakan: -10,
10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+.
Untuk mengetahui informasi selengkapnya tentang konsep bucketing, lihat Generalisasi dan Bucketing.
bucketingConfig
Transformasi bucketingConfig menawarkan fleksibilitas yang lebih besar daripada transformasi bucketing lainnya, fixedSizeBucketingConfig.
Alih-alih menentukan batas atas dan bawah serta nilai interval untuk membuat bucket berukuran sama, Anda menentukan nilai maksimum dan minimum untuk setiap bucket yang ingin dibuat. Setiap pasangan nilai maksimum dan minimum harus memiliki jenis yang sama.
Menetapkan bucketingConfig ke objek BucketingConfig akan menentukan bucket kustom. Objek BucketingConfig terdiri dari array buckets[] objek Bucket. Setiap objek Bucket terdiri dari:
min: Batas bawah rentang bucket. Hapus nilai ini untuk membuat bucket yang tidak memiliki batas bawah.max: Batas atas rentang bucket. Hapus nilai ini untuk membuat bucket yang tidak memiliki batas atas.replacementValue: Nilai yang akan digunakan untuk mengganti nilai yang berada dalam batas bawah dan atas. Jika Anda tidak memberikanreplacementValue, rentangmin-maxyang diberi tanda hubung akan digunakan.
Jika nilai berada di luar rentang yang ditentukan, TransformationSummary
yang ditampilkan akan berisi pesan error.
Misalnya, pertimbangkan konfigurasi berikut untuk transformasi bucketingConfig:
"bucketingConfig":{
"buckets":[
{
"min":{
"integerValue":"1"
},
"max":{
"integerValue":"30"
},
"replacementValue":{
"stringValue":"LOW"
}
},
{
"min":{
"integerValue":"31"
},
"max":{
"integerValue":"65"
},
"replacementValue":{
"stringValue":"MEDIUM"
}
},
{
"min":{
"integerValue":"66"
},
"max":{
"integerValue":"100"
},
"replacementValue":{
"stringValue":"HIGH"
}
}
]
}
Hal ini menentukan perilaku berikut:
- Nilai bilangan bulat yang berada di antara 1 dan 30 disamarkan dengan diganti dengan
LOW. - Nilai bilangan bulat yang berada di antara 31-65 disamarkan dengan diganti dengan
MEDIUM. - Nilai bilangan bulat yang berada di antara 66-100 disamarkan dengan diganti dengan
HIGH.
Untuk mengetahui informasi selengkapnya tentang konsep bucketing, lihat Generalisasi dan Bucketing.
replaceWithInfoTypeConfig
Menentukan
replaceWithInfoTypeConfig
akan mengganti setiap nilai yang cocok dengan nama infoType. Pesan replaceWithInfoTypeConfig tidak memiliki argumen; menentukannya akan mengaktifkan transformasinya.
Misalnya, Anda telah menentukan replaceWithInfoTypeConfig untuk semua infoType EMAIL_ADDRESS, dan string berikut dikirim ke Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan menjadi seperti berikut:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
Menetapkan timePartConfig ke objek
TimePartConfig
akan mempertahankan bagian dari nilai yang cocok yang mencakup nilai Date,
Timestamp, dan TimeOfDay. Objek TimePartConfig terdiri dari
argumen partToExtract, yang dapat ditetapkan ke salah satu nilai enumerasi TimePart,
termasuk tahun, bulan, hari dalam sebulan, dan sebagainya.
Misalnya, Anda telah mengonfigurasi transformasi timePartConfig dengan
menetapkan partToExtract ke YEAR. Setelah mengirim data di kolom pertama di bawah ke Sensitive Data Protection, Anda akan mendapatkan nilai yang diubah di kolom kedua:
| Nilai asli | Nilai yang diubah |
|---|---|
9/21/1976 |
1976 |
6/7/1945 |
1945 |
1/20/2009 |
2009 |
7/4/1776 |
1776 |
8/1/1984 |
1984 |
4/21/1982 |
1982 |
Mentransformasi data
Transformasi kumpulan data (objek
RecordTransformations)
hanya diterapkan ke nilai dalam data tabulasi yang diidentifikasi sebagai
infoType tertentu. Dalam RecordTransformations, ada dua subkategori
transformasi lebih lanjut:
fieldTransformations[]: Transformasi yang menerapkan berbagai transformasi kolom.recordSuppressions[]: Aturan yang menentukan kumpulan data mana yang akan disembunyikan sepenuhnya. Data yang cocok dengan aturan penekanan apa pun dalamrecordSuppressions[]akan dihilangkan dari output.
Transformasi kolom
Setiap objek
FieldTransformation
mencakup tiga argumen:
fields: Satu atau beberapa kolom input (objekFieldID) untuk menerapkan transformasi.condition: Kondisi (objekRecordCondition) yang harus bernilai benar agar transformasi diterapkan. Misalnya, terapkan transformasi bucket ke kolom usia data hanya jika kolom kode pos untuk data yang sama berada dalam rentang tertentu. Atau, redaksi kolom hanya jika kolom tanggal lahir menunjukkan usia seseorang 85 tahun ke atas.Salah satu dari dua argumen jenis transformasi berikut. Anda harus menentukan salah satu:
infoTypeTransformations: Perlakukan konten kolom sebagai teks bebas, dan terapkanPrimitiveTransformationhanya pada konten yang cocok denganInfoType. Transformasi ini telah dibahas sebelumnya dalam topik ini.primitiveTransformation: Terapkan transformasi primitif yang ditentukan (objekPrimitiveTransformation) ke seluruh kolom. Transformasi ini telah dibahas sebelumnya dalam topik ini.Jika objek
RecordTransformationsAnda hanya berisiprimitiveTransformationdan tidak adainfoTypeTransformations, Anda tidak perlu menyertakan objekInspectConfigdalam permintaan. Jika Anda melakukannya, Sensitive Data Protection akan mengabaikannya.
Contoh transformasi kolom
Contoh berikut mengirimkan permintaan
projects.content.deidentify
dengan dua transformasi kolom:
Transformasi kolom pertama berlaku untuk dua kolom pertama (
column1dancolumn2). Karena jenis transformasinya adalah objekprimitiveTransformation(khususnya,CryptoDeterministicConfig), Sensitive Data Protection mengubah seluruh kolom.Transformasi kolom kedua berlaku untuk kolom ketiga (
column3). Karena jenis transformasinya adalah objekinfoTypeTransformations, Sensitive Data Protection menerapkan transformasi primitif (khususnya,ReplaceWithInfoTypeConfig) hanya ke konten yang cocok dengan infoType yang ditetapkan dalam konfigurasi pemeriksaan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
PROJECT_ID: Project ID Google Cloud Anda. Project ID adalah string alfanumerik, sepertimy-project.
Metode HTTP dan URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
Meminta isi JSON:
{
"item": {
"table": {
"headers": [
{
"name": "column1"
},
{
"name": "column2"
},
{
"name": "column3"
}
],
"rows": [
{
"values": [
{
"stringValue": "Example string 1"
},
{
"stringValue": "Example string 2"
},
{
"stringValue": "My email address is dani@example.org"
}
]
},
{
"values": [
{
"stringValue": "Example string 1"
},
{
"stringValue": "Example string 3"
},
{
"stringValue": "My email address is cruz@example.org"
}
]
}
]
}
},
"deidentifyConfig": {
"recordTransformations": {
"fieldTransformations": [
{
"fields": [
{
"name": "column1"
},
{
"name": "column2"
}
],
"primitiveTransformation": {
"cryptoDeterministicConfig": {
"cryptoKey": {
"unwrapped": {
"key": "YWJjZGVmZ2hpamtsbW5vcA=="
}
}
}
}
},
{
"fields": [
{
"name": "column3"
}
],
"infoTypeTransformations": {
"transformations": [
{
"primitiveTransformation": {
"replaceWithInfoTypeConfig": {}
}
}
]
}
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
]
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"item": {
"table": {
"headers": [
{
"name": "column1"
},
{
"name": "column2"
},
{
"name": "column3"
}
],
"rows": [
{
"values": [
{
"stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc"
},
{
"stringValue": "AUBTE+sQB6eKZ5iD3Y0Ss682zANXbijuFl9KL9ExVOTF"
},
{
"stringValue": "My email address is [EMAIL_ADDRESS]"
}
]
},
{
"values": [
{
"stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc"
},
{
"stringValue": "AU+oD2pnqUDTLNItE8RplY3E0fTHeO4rZkX4GeFHN2CI"
},
{
"stringValue": "My email address is [EMAIL_ADDRESS]"
}
]
}
]
}
},
"overview": {
"transformedBytes": "96",
"transformationSummaries": [
{
"field": {
"name": "column1"
},
"results": [
{
"count": "2",
"code": "SUCCESS"
}
],
"fieldTransformations": [
{
"fields": [
{
"name": "column1"
},
{
"name": "column2"
}
],
"primitiveTransformation": {
"cryptoDeterministicConfig": {
"cryptoKey": {
"unwrapped": {
"key": "YWJjZGVmZ2hpamtsbW5vcA=="
}
}
}
}
}
],
"transformedBytes": "32"
},
{
"field": {
"name": "column2"
},
"results": [
{
"count": "2",
"code": "SUCCESS"
}
],
"fieldTransformations": [
{
"fields": [
{
"name": "column1"
},
{
"name": "column2"
}
],
"primitiveTransformation": {
"cryptoDeterministicConfig": {
"cryptoKey": {
"unwrapped": {
"key": "YWJjZGVmZ2hpamtsbW5vcA=="
}
}
}
}
}
],
"transformedBytes": "32"
},
{
"infoType": {
"name": "EMAIL_ADDRESS",
"sensitivityScore": {
"score": "SENSITIVITY_MODERATE"
}
},
"field": {
"name": "column3"
},
"results": [
{
"count": "2",
"code": "SUCCESS"
}
],
"fieldTransformations": [
{
"fields": [
{
"name": "column3"
}
],
"infoTypeTransformations": {
"transformations": [
{
"primitiveTransformation": {
"replaceWithInfoTypeConfig": {}
}
}
]
}
}
],
"transformedBytes": "32"
}
]
}
}Mencatat penghapusan
Selain menerapkan transformasi ke data kolom, Anda juga dapat menginstruksikan Sensitive Data Protection untuk melakukan de-identifikasi data dengan cukup menyembunyikan data saat kondisi penyembunyian tertentu bernilai benar. Anda dapat menerapkan transformasi kolom dan penghapusan data dalam permintaan yang sama.
Anda menetapkan pesan recordSuppressions dari objek RecordTransformations
ke array yang berisi satu atau beberapa objek RecordSuppression.
Setiap objek
RecordSuppression
berisi satu objek
RecordCondition,
yang pada gilirannya berisi satu objek
Expressions.
Objek Expressions
berisi:
logicalOperator: Salah satu jenis enumerasiLogicalOperator.conditions: ObjekConditions, yang berisi array dari satu atau beberapa objekCondition.Conditionadalah perbandingan nilai kolom dan nilai lainnya, yang keduanya berjenisstring,boolean,integer,double,Timestamp, atauTimeofDay.
Jika perbandingan bernilai benar, data akan disembunyikan, dan sebaliknya. Jika nilai yang dibandingkan tidak memiliki jenis yang sama, peringatan akan diberikan dan kondisi akan bernilai salah (false).
Transformasi yang dapat dibatalkan
Saat Anda melakukan de-identifikasi data menggunakan transformasi infoType
CryptoReplaceFfxFpeConfig
atau
CryptoDeterministicConfig,
Anda dapat mengidentifikasi ulang data tersebut, asalkan Anda memiliki
CryptoKey
yang awalnya digunakan untuk melakukan de-identifikasi data.
Untuk mengetahui informasi selengkapnya, lihat Transformasi tokenisasi berbasis kripto.
Batas jumlah temuan
Jika permintaan Anda memiliki lebih dari 3.000 temuan, Sensitive Data Protection akan menampilkan pesan berikut:
Too many findings to de-identify. Retry with a smaller request.
Daftar temuan yang ditampilkan oleh Sensitive Data Protection adalah subset arbitrer dari semua temuan dalam permintaan. Untuk mendapatkan semua temuan, bagi permintaan Anda menjadi batch yang lebih kecil.
Langkah berikutnya
Pelajari lebih lanjut cara alur kerja de-identifikasi diterapkan dalam deployment di dunia nyata.
Selesaikan codelab Menyamarkan Data Sensitif dengan Sensitive Data Protection.
Pelajari contoh yang menunjukkan cara membuat kunci yang digabungkan, melakukan tokenisasi konten, dan mengidentifikasi ulang konten yang ditokenisasi.
Pelajari lebih lanjut cara membuat salinan data yang dide-identifikasi di penyimpanan.