Sensitive Data Protection dapat melakukan de-identifikasi data sensitif dalam konten teks, termasuk teks yang disimpan dalam struktur penampung seperti tabel. De-identifikasi adalah proses menghapus informasi identitas dari data. API mendeteksi data sensitif seperti informasi identitas pribadi (PII), lalu menggunakan transformasi de-identifikasi untuk menyamarkan, menghapus, atau mengaburkan data tersebut. Misalnya, teknik de-identifikasi dapat mencakup salah satu dari hal berikut:
- Menyamarkan data sensitif dengan mengganti karakter sebagian atau sepenuhnya dengan simbol, seperti tanda bintang (*) atau hash (#).
- Mengganti setiap instance data sensitif dengan token, atau string 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 mulai cepat JSON.
Ringkasan API
Untuk melakukan de-identifikasi data sensitif, gunakan metode
content.deidentify
Sensitive Data Protection.
Ada tiga bagian untuk panggilan API de-identifikasi:
- Data yang akan diperiksa: Struktur string atau tabel
(objek
ContentItem
) untuk diperiksa oleh API. Yang perlu diperiksa: Informasi konfigurasi deteksi (
InspectConfig
) seperti jenis data (atau infoTypes) yang perlu 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 infoType yang ingin Anda pindai. Jika tidak, Sensitive Data Protection akan memindai sekumpulan infoType default (ALL_BASIC
), yang beberapa di antaranya mungkin tidak Anda perlukan. Memindai infoType yang tidak diperlukan dapat menambahkan latensi yang tidak perlu ke permintaan Anda.Objek
InspectConfig
diperlukan dalam permintaan Anda, dengan satu pengecualian. Untuk mengetahui informasi selengkapnya, lihat Merekam transformasi 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 lebih mendetail di bagian berikut.
API menampilkan item yang sama yang Anda berikan, dalam format yang sama, tetapi teks apa pun yang diidentifikasi sebagai berisi informasi sensitif menurut kriteria Anda telah dihilangkan identitasnya.
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 detektor infoType, yang semuanya diringkas di sini:
- Detektor infoType bawaan sudah terintegrasi dalam Sensitive Data Protection. Detektor ini mencakup 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 pendeteksi infoType kustom:
- Pendeteksi kamus kustom reguler adalah daftar kata sederhana yang dicocokkan oleh Perlindungan Data Sensitif. Gunakan pendeteksi kamus kustom reguler jika Anda memiliki daftar hingga puluhan ribu kata atau frasa. Detektor kamus kustom reguler lebih disarankan jika Anda tidak memperkirakan daftar kata Anda akan berubah secara signifikan.
- Detektor kamus kustom tersimpan dibuat oleh Sensitive Data Protection menggunakan daftar besar kata atau frasa yang disimpan di Cloud Storage atau BigQuery. Gunakan detektor kamus kustom tersimpan jika Anda memiliki daftar kata atau frasa yang besar—hingga puluhan juta.
- Pendeteksi ekspresi reguler (regex) memungkinkan Perlindungan Data Sensitif mendeteksi kecocokan berdasarkan pola ekspresi reguler.
Selain itu, Sensitive Data Protection mencakup konsep aturan inspeksi, yang memungkinkan Anda menyesuaikan hasil pemindaian menggunakan hal berikut:
- Aturan pengecualian memungkinkan Anda mengurangi jumlah temuan yang ditampilkan dengan menambahkan aturan ke detektor infoType bawaan atau kustom.
- Aturan frasa pengaktif memungkinkan Anda meningkatkan kuantitas atau mengubah nilai kemungkinan temuan yang ditampilkan dengan menambahkan aturan ke detektor infoType bawaan atau kustom.
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 pada nilai dalam teks yang dikirimkan yang diidentifikasi sebagai infoType tertentu.RecordTransformations
: Transformasi yang hanya diterapkan pada nilai dalam data teks tabular yang dikirimkan yang diidentifikasi sebagai infoType tertentu, atau pada seluruh kolom data tabular.
Transformasi InfoType
Anda dapat menentukan satu atau beberapa transformasi infoType per permintaan. Dalam setiap
objek InfoTypeTransformation
, Anda menentukan keduanya:
- Satu atau beberapa infoTypes yang akan diterapkan
transformasinya (objek array
infoTypes[]
). - Transformasi dasar (objek
PrimitiveTransformation
).
Perhatikan bahwa penentuan infoType bersifat opsional, tetapi tidak menentukan setidaknya satu infoType dalam argumen
InspectConfig
akan menyebabkan transformasi diterapkan ke semua infoType bawaan yang tidak memiliki transformasi. Tindakan ini tidak direkomendasikan karena dapat menyebabkan penurunan performa dan peningkatan biaya.
Transformasi primitif
Anda harus menentukan setidaknya satu transformasi primitif untuk diterapkan pada input, terlepas dari apakah Anda menerapkannya hanya pada infoType tertentu atau pada seluruh string teks. Bagian berikut menjelaskan contoh metode transformasi yang dapat Anda gunakan. Untuk mengetahui daftar semua metode transformasi yang ditawarkan Perlindungan Data Sensitif, lihat Referensi transformasi.
replaceConfig
Menetapkan replaceConfig
ke objek ReplaceValueConfig
mengganti nilai input yang cocok dengan nilai yang Anda tentukan.
Misalnya, Anda telah menyetel 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 berikut:
My name is Alicia Abernathy, and my email address is [email-address].
Contoh JSON dan kode berikut dalam beberapa bahasa 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 mulai cepat JSON untuk mengetahui informasi selengkapnya tentang penggunaan 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 EMAIL_ADDRESS
infoType, 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 berikut:
My name is Alicia Abernathy, and my email address is .
Contoh berikut menunjukkan cara membuat permintaan API dan apa yang ditampilkan 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 dalam 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. MenetapkanreverseOrder
ke benar akan menyebabkan karakter dalam nilai yang cocok ditutupi dari akhir ke awal nilai. Jika ditetapkan ke false, masking akan dimulai di awal nilai.charactersToIgnore[]
: Satu atau beberapa karakter yang akan dilewati saat menyamarkan nilai. Misalnya, tentukan tanda hubung di sini agar tanda hubung tetap ada saat menyamarkan nomor telepon. Anda juga dapat menentukan grup karakter umum (CharsToIgnore
) yang akan diabaikan saat menyamarkan.
Misalnya, Anda telah menetapkan characterMaskConfig
untuk menyamarkan dengan '#' untuk infotipe EMAIL_ADDRESS
, kecuali 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 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 penyamaran.
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 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
melakukan pseudonimisasi pada nilai input
dengan membuat nilai pengganti menggunakan hashing kriptografi.
Metode ini mengganti nilai input dengan "ringkasan" terenkripsi, atau nilai hash.
Digest dihitung dengan mengambil hash SHA-256 dari nilai input.
Kunci kriptografi 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
jenis info 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 yang dibuat secara kriptografi akan terlihat seperti berikut:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Tentu saja, string hex 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 sebanyak beberapa hari secara acak.
Teknik penggeseran tanggal menggeser sekumpulan tanggal secara acak, tetapi mempertahankan urutan dan durasi periode waktu. Perubahan tanggal biasanya dilakukan dalam konteks individu atau entitas. Artinya, Anda ingin menggeser semua tanggal untuk individu tertentu menggunakan selisih pergeseran yang sama, tetapi menggunakan selisih pergeseran yang terpisah untuk setiap individu lainnya.
Untuk mengetahui informasi selengkapnya tentang perubahan tanggal, lihat topik konsep perubahan tanggal.
Berikut adalah contoh kode dalam beberapa bahasa yang menunjukkan cara menggunakan DLP API untuk menganonimkan tanggal menggunakan pengubahan 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
melakukan pseudonimisasi pada nilai
input dengan mengganti nilai input dengan token. Token ini adalah:
- Nilai input terenkripsi.
- Panjang yang sama dengan nilai input.
- Dihitung menggunakan enkripsi yang mempertahankan format dalam mode FFX ("FPE-FFX") yang dikunci
pada kunci kriptografi yang ditentukan oleh
cryptoKey
. - Terdiri dari karakter yang ditentukan oleh
alphabet
. Opsi yang valid:NUMERIC
HEXADECIMAL
UPPER_CASE_ALPHA_NUMERIC
ALPHA_NUMERIC
Nilai input:
- Harus minimal dua karakter (atau string kosong).
- Harus terdiri dari karakter yang ditentukan oleh
alphabet
.alphabet
dapat terdiri dari 2 hingga 95 karakter. (alphabet
dengan 95 karakter mencakup semua karakter yang dapat dicetak dalam set karakter US-ASCII.)
Sensitive Data Protection menghitung token pengganti menggunakan kunci kriptografi. Anda memberikan kunci ini dengan salah satu dari tiga cara:
- Dengan menyematkannya tanpa dienkripsi dalam permintaan API. Tindakan ini tidak direkomendasikan.
- Dengan meminta Sensitive Data Protection untuk membuatnya.
- Dengan menyematkannya yang dienkripsi dalam permintaan API.
Jika memilih untuk menyematkan kunci dalam permintaan API, Anda harus membuat kunci dan mengenkripsinya menggunakan kunci Cloud Key Management Service (Cloud KMS). Nilai yang ditampilkan adalah string yang dienkode base64 secara default. Untuk menetapkan nilai ini di Sensitive Data Protection, Anda harus mendekodenya menjadi string byte. Cuplikan kode berikut menunjukkan cara melakukannya dalam beberapa bahasa. Contoh end-to-end diberikan 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 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 ini dan direkomendasikan untuk kasus penggunaan tokenisasi, kecuali jika penyimpanan panjang dan kumpulan karakter adalah persyaratan yang ketat—misalnya, untuk kompatibilitas mundur dengan sistem data lama.
Berikut adalah contoh kode dalam beberapa bahasa yang menunjukkan cara menggunakan Perlindungan Data Sensitif 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 di-de-identifikasi melalui metode transformasi CryptoReplaceFfxFpeConfig
, lihat Format-preserving encryption: re-identification examples.
fixedSizeBucketingConfig
Transformasi pengelompokan—yang ini dan
bucketingConfig
—berfungsi untuk menyamarkan data numerik dengan
"mengelompokkannya" ke dalam rentang. Rentang angka yang dihasilkan adalah string yang dipisahkan dengan tanda hubung
yang terdiri dari batas bawah, tanda hubung, dan batas atas.
Menetapkan fixedSizeBucketingConfig
ke FixedSizeBucketingConfig
objek 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 bersama dalam 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, maka 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 pengelompokan, lihat Generalisasi dan Pengelompokan.
bucketingConfig
Transformasi bucketingConfig
menawarkan fleksibilitas yang lebih besar daripada transformasi pengelompokan lainnya, fixedSizeBucketingConfig
.
Daripada 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
menentukan bucket kustom. Objek BucketingConfig
terdiri dari
array buckets[]
dari objek Bucket
. Setiap objek Bucket
terdiri dari berikut ini:
min
: Batas bawah rentang bucket. Hilangkan nilai ini untuk membuat kelompok 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-max
yang dihubungkan dengan 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 akan 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 pengelompokan, lihat Generalisasi dan Pengelompokan.
replaceWithInfoTypeConfig
Menentukan
replaceWithInfoTypeConfig
mengganti setiap nilai yang cocok dengan nama infoType. Pesan
replaceWithInfoTypeConfig
tidak memiliki argumen; menentukannya akan mengaktifkan
transformasinya.
Misalnya, Anda telah menentukan replaceWithInfoTypeConfig
untuk semua
jenis info 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 berikut:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
Menetapkan timePartConfig
ke objek
TimePartConfig
mempertahankan sebagian nilai yang cocok yang mencakup nilai Date
,
Timestamp
, dan TimeOfDay
. Objek TimePartConfig
terdiri dari
argumen partToExtract
, yang dapat ditetapkan ke salah satu nilai yang tercantum 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 Perlindungan Data Sensitif, Anda akan mendapatkan nilai yang telah 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 |
Transformasi rekaman
Transformasi rekaman (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. Rekaman yang cocok dengan aturan peniadaan apa pun dalamrecordSuppressions[]
akan dihilangkan dari output.
Transformasi kolom
Setiap objek
FieldTransformation
mencakup tiga argumen:
fields
: Satu atau beberapa kolom input (objekFieldID
) tempat transformasi diterapkan.condition
: Kondisi (objekRecordCondition
) yang harus bernilai benar agar transformasi diterapkan. Misalnya, terapkan transformasi bucket ke kolom usia suatu data hanya jika kolom kode pos untuk data yang sama berada dalam rentang tertentu. Atau, samarkan kolom hanya jika kolom tanggal lahir menunjukkan usia seseorang 85 tahun atau lebih.Salah satu dari dua argumen jenis transformasi berikut. Menentukan salah satunya wajib:
infoTypeTransformations
: Perlakukan konten kolom sebagai teks bebas, dan terapkanPrimitiveTransformation
hanya pada konten yang cocok denganInfoType
. Transformasi ini dibahas sebelumnya dalam topik ini.primitiveTransformation
: Menerapkan transformasi primitif yang ditentukan (objekPrimitiveTransformation
) ke seluruh kolom. Transformasi ini telah dibahas sebelumnya dalam topik ini.Jika objek
RecordTransformations
Anda hanya berisiprimitiveTransformation
dan tidak adainfoTypeTransformations
, Anda tidak perlu menyertakan objekInspectConfig
dalam permintaan Anda. 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 (
column1
dancolumn2
). Karena jenis transformasinya adalah objekprimitiveTransformation
(khususnya,CryptoDeterministicConfig
), Perlindungan Data Sensitif mentransformasi seluruh kolom.Transformasi kolom kedua berlaku untuk kolom ketiga (
column3
). Karena jenis transformasinya adalah objekinfoTypeTransformations
, Sensitive Data Protection menerapkan transformasi dasar (khususnya,ReplaceWithInfoTypeConfig
) hanya pada konten yang cocok dengan infoType yang ditetapkan dalam konfigurasi pemeriksaan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
-
PROJECT_ID
: ID project 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" } ] } }
Pencegahan rekaman
Selain menerapkan transformasi pada data kolom, Anda juga dapat menginstruksikan Sensitive Data Protection untuk melakukan de-identifikasi data hanya dengan menyembunyikan catatan ketika kondisi penyembunyian tertentu bernilai benar. Anda dapat menerapkan transformasi kolom dan penghapusan data dalam permintaan yang sama.
Anda menetapkan pesan recordSuppressions
objek RecordTransformations
ke array yang berisi satu atau beberapa objek RecordSuppression
.
Setiap
RecordSuppression
objek berisi satu
RecordCondition
objek, yang pada gilirannya berisi satu
Expressions
objek.
Objek Expressions
berisi:
logicalOperator
: Salah satu jenis yang tercantumLogicalOperator
.conditions
: ObjekConditions
, yang berisi array satu atau beberapa objekCondition
.Condition
adalah perbandingan nilai kolom dan nilai lain, yang keduanya harus berjenisstring
,boolean
,integer
,double
,Timestamp
, atauTimeofDay
.
Jika perbandingan bernilai benar, rekaman akan disembunyikan, dan sebaliknya. Jika nilai yang dibandingkan bukan jenis yang sama, peringatan akan diberikan dan kondisi akan bernilai salah (false).
Transformasi yang dapat dibalikkan
Saat melakukan de-identifikasi data menggunakan transformasi infoType
CryptoReplaceFfxFpeConfig
atau
CryptoDeterministicConfig
, Anda dapat mengidentifikasi ulang data tersebut, selama Anda memiliki
CryptoKey
yang digunakan untuk melakukan de-identifikasi data tersebut pada awalnya.
Untuk mengetahui informasi selengkapnya, lihat Transformasi tokenisasi berbasis kripto.
Batas jumlah temuan
Jika permintaan Anda memiliki lebih dari 3.000 temuan, Perlindungan Data Sensitif akan menampilkan pesan berikut:
Too many findings to de-identify. Retry with a smaller request.
Daftar temuan yang ditampilkan oleh Perlindungan Data Sensitif 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 penghapusan identitas sesuai dengan penerapan di dunia nyata.
Selesaikan codelab Menyamarkan Data Sensitif dengan Sensitive Data Protection.
Pelajari contoh yang menunjukkan cara membuat kunci yang dienkapsulasi, membuat token konten, dan mengidentifikasi ulang konten yang diberi token.
Pelajari lebih lanjut cara membuat salinan data yang tidak dapat diidentifikasi di penyimpanan.