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 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 karakter sebagian atau sepenuhnya dengan simbol, seperti tanda bintang (*) atau hash (#).
- Mengganti setiap instance data sensitif dengan string token atau pengganti.
- Mengenkripsi dan mengganti data sensitif menggunakan kunci yang dihasilkan secara acak atau ditentukan sebelumnya.
Anda dapat memasukkan informasi ke API menggunakan JSON melalui HTTPS, serta CLI dan beberapa bahasa pemrograman menggunakan library klien Perlindungan Data Sensitif. Untuk menyiapkan CLI, lihat panduan memulai. Untuk 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
Perlindungan Data Sensitif.
Ada tiga bagian untuk panggilan API de-identifikasi:
- Data yang akan diperiksa: Struktur string atau tabel
(objek
ContentItem
) untuk diperiksa API. Yang akan diperiksa: Informasi konfigurasi deteksi (
InspectConfig
) seperti jenis data (atau infoTypes) yang akan 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 kumpulan infoType default (ALL_BASIC
), beberapa di antaranya mungkin tidak Anda perlukan. Memindai infoTypes yang tidak Anda perlukan dapat menambahkan latensi yang tidak perlu ke permintaan Anda.Objek
InspectConfig
diperlukan dalam permintaan Anda, dengan satu pengecualian. Untuk mengetahui informasi selengkapnya, lihat Transformasi kumpulan data di halaman ini.Tindakan yang harus dilakukan dengan temuan pemeriksaan: Informasi konfigurasi (
DeidentifyConfig
) yang menentukan cara Anda ingin data sensitif dide-identifikasi. Argumen ini dibahas lebih mendetail di bagian berikut.
API menampilkan item yang sama dengan yang Anda berikan, dalam format yang sama, tetapi teks apa pun yang diidentifikasi sebagai berisi informasi sensitif menurut kriteria Anda telah dideidentifikasi.
Menentukan kriteria deteksi
Detektor jenis informasi (atau "infoType") adalah mekanisme yang digunakan Perlindungan Data Sensitif untuk menemukan data sensitif.
Perlindungan Data Sensitif mencakup beberapa jenis detektor infoType, yang semuanya disertakan di sini:
- Detektor infoType bawaan disertakan dalam Perlindungan Data Sensitif. Pendeteksi ini mencakup pendeteksi untuk jenis data sensitif khusus negara atau wilayah serta jenis data yang berlaku secara global.
- Detektor infoType kustom adalah pendeteksi yang Anda buat sendiri. Ada tiga jenis pendeteksi infoType kustom:
- Pendeteksi kamus kustom reguler adalah daftar kata sederhana yang cocok dengan Perlindungan Data Sensitif. Gunakan pendeteksi kamus kustom reguler jika Anda memiliki daftar hingga beberapa puluhan ribu kata atau frasa. Detektor kamus kustom reguler lebih disukai jika Anda tidak mengantisipasi perubahan daftar kata secara signifikan.
- Detektor kamus kustom tersimpan dibuat oleh Perlindungan Data Sensitif menggunakan daftar besar kata atau frasa yang disimpan di Cloud Storage atau BigQuery. Gunakan detektor kamus kustom yang disimpan jika Anda memiliki daftar kata atau frasa yang besar—hingga puluhan juta.
- Detektor ekspresi reguler (regex) memungkinkan Perlindungan Data Sensitif mendeteksi kecocokan berdasarkan pola ekspresi reguler.
Selain itu, Perlindungan Data Sensitif mencakup konsep aturan pemeriksaan, 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 kata cepat 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 ke nilai dalam teks yang dikirim yang diidentifikasi sebagai infoType tertentu.RecordTransformations
: Transformasi yang hanya diterapkan ke nilai dalam data teks tabular yang dikirimkan dan 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 kedua hal berikut:
- Satu atau beberapa infoTypes yang akan menjadi tempat
transformasi diterapkan (objek array
infoTypes[]
). - Transformasi primitif (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. Tindakan ini tidak direkomendasikan karena dapat
menyebabkan penurunan performa dan peningkatan biaya.
Transformasi primitif
Anda harus menentukan minimal satu transformasi primitif yang akan diterapkan ke input, terlepas dari apakah Anda menerapkannya hanya ke infoTypes tertentu atau ke 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
akan mengganti nilai input yang cocok dengan nilai yang Anda tentukan.
Misalnya, Anda telah menetapkan replaceConfig
ke "[email-address]
"
untuk semua infoTypes EMAIL_ADDRESS
, dan string berikut dikirim ke
Perlindungan Data Sensitif:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan berupa:
My name is Alicia Abernathy, and my email address is [email-address].
Contoh dan kode JSON 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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Lihat panduan memulai 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 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 berupa:
My name is Alicia Abernathy, and my email address is .
Contoh berikut menunjukkan cara membuat permintaan API dan yang ditampilkan oleh DLP API:
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 hash (#) 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 disamarkan dari akhir ke awal nilai. Menetapkan ke salah akan menyebabkan masking 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 grup karakter umum (CharsToIgnore
) untuk diabaikan saat melakukan masking.
Misalnya, Anda telah menetapkan characterMaskConfig
untuk menyamarkan dengan '#' untuk
infotype EMAIL_ADDRESS
, kecuali untuk karakter '.' dan '@'. Jika
string berikut dikirim ke Perlindungan Data Sensitif:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan akan berupa:
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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST
Contoh JSON berikut menunjukkan cara membuat permintaan API dan 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 menghasilkan nilai pengganti menggunakan hashing kriptografis.
Metode ini mengganti nilai input dengan "ringkasan" atau nilai hash terenkripsi.
Ringkasan 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 output hash yang dienkode base64. Saat ini, hanya nilai string dan bilangan bulat yang dapat di-hash.
Misalnya, Anda telah menentukan cryptoHashConfig
untuk semua
infoTypes EMAIL_ADDRESS
, dan objek CryptoKey
terdiri dari
kunci yang dibuat secara acak (TransientCryptoKey
).
Kemudian, string berikut akan dikirim ke Perlindungan Data Sensitif:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
String yang ditampilkan dan dihasilkan secara kriptografis 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 berdasarkan jumlah hari acak.
Teknik pergeseran tanggal secara acak menggeser sekumpulan tanggal, tetapi mempertahankan urutan dan durasi jangka waktu. Pergeseran tanggal biasanya dilakukan dalam konteks untuk 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 perubahan tanggal, lihat topik konsep perubahan tanggal.
Berikut adalah contoh kode dalam beberapa bahasa yang menunjukkan cara menggunakan DLP API untuk menghapus identifikasi tanggal menggunakan pergeseran tanggal.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 yang dienkripsi.
- Panjangnya 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: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 kumpulan karakter US-ASCII.)
Perlindungan Data Sensitif menghitung token pengganti menggunakan kunci kriptografis. Anda memberikan kunci ini dengan salah satu dari tiga cara berikut:
- 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 menggabungkannya (mengenkripsinya) menggunakan kunci Cloud Key Management Service (Cloud KMS). Nilai yang ditampilkan adalah string yang dienkode base64 secara default. Untuk menetapkan nilai ini di Perlindungan Data Sensitif, Anda harus mendekodenya menjadi string byte. Cuplikan kode berikut menyoroti cara melakukannya dalam beberapa bahasa. Contoh menyeluruh 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 durasi dan penyimpanan kumpulan karakter adalah persyaratan 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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.
Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk contoh kode yang menunjukkan cara menggunakan Perlindungan Data Sensitif untuk
mengidentifikasi ulang data sensitif yang dide-identifikasi melalui
metode transformasi CryptoReplaceFfxFpeConfig
, lihat Enkripsi yang mempertahankan format: contoh
identifikasi ulang.
fixedSizeBucketingConfig
Transformasi pengelompokan—transformasi ini dan
bucketingConfig
—berfungsi untuk menyamarkan data numerik dengan
"mengelompokkan"nya ke dalam rentang. Rentang angka yang dihasilkan adalah string dengan tanda hubung
yang terdiri dari batas bawah, tanda hubung, dan batas atas.
Menetapkan fixedSizeBucketingConfig
ke nilai input bucket objek FixedSizeBucketingConfig
berdasarkan rentang ukuran tetap. Objek
FixedSizeBucketingConfig
terdiri dari hal-hal berikut:
lowerBound
: Nilai batas bawah semua bucket. Nilai yang kurang dari nilai ini dikelompokkan dalam satu bucket.upperBound
: Nilai batas atas semua bucket. Nilai yang lebih besar dari nilai ini dikelompokkan 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, bucket berikut akan digunakan: -10,
10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+.
Untuk informasi selengkapnya tentang konsep pengelompokan, lihat Pengelompokan dan Generalisasi.
bucketingConfig
Transformasi bucketingConfig
menawarkan fleksibilitas yang lebih besar daripada transformasi bucketing lainnya, fixedSizeBucketingConfig
.
Daripada menentukan batas atas dan bawah serta nilai interval untuk membuat bucket dengan ukuran yang 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[]
objek Bucket
. Setiap objek Bucket
terdiri dari hal berikut:
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-max
yang 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 akan 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 akan disamarkan dengan diganti dengan
HIGH
.
Untuk informasi selengkapnya tentang konsep pengelompokan, lihat Pengelompokan dan Generalisasi.
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 berupa:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
Menetapkan timePartConfig
ke objek
TimePartConfig
akan 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 dihitung 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 ditransformasi 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 |
Mencatat transformasi
Transformasi data (objek
RecordTransformations
) hanya diterapkan ke nilai dalam data tabel 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 dalamrecordSuppressions[]
akan dihilangkan dari output.
Transformasi kolom
Setiap objek
FieldTransformation
menyertakan 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 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. Anda harus menentukan salah satu dari berikut ini:
infoTypeTransformations
: Perlakukan konten kolom sebagai teks bebas, dan terapkanPrimitiveTransformation
hanya ke konten yang cocok denganInfoType
. Transformasi ini telah 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. 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 akan mengubah seluruh kolom.Transformasi kolom kedua berlaku untuk kolom ketiga (
column3
). Karena jenis transformasinya adalah objekinfoTypeTransformations
, Perlindungan Data Sensitif 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
: 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" } ] } }
Penekanan data
Selain menerapkan transformasi ke data kolom, Anda juga dapat menginstruksikan Sensitive Data Protection untuk melakukan de-identifikasi data dengan menyembunyikan data saat kondisi penyembunyian tertentu dievaluasi menjadi benar. Anda dapat menerapkan transformasi kolom dan penekanan data dalam permintaan yang sama.
Anda menetapkan pesan recordSuppressions
dari objek RecordTransformations
ke array dari 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 yang dihitungLogicalOperator
.conditions
: ObjekConditions
, yang berisi array dari satu atau beberapa objekCondition
.Condition
adalah perbandingan antara nilai kolom dan nilai lain, yang keduanya berjenisstring
,boolean
,integer
,double
,Timestamp
, atauTimeofDay
.
Jika perbandingan bernilai benar (true), data akan disembunyikan, dan sebaliknya. Jika nilai yang dibandingkan bukan dari jenis yang sama, peringatan akan diberikan dan kondisi akan bernilai salah.
Transformasi yang dapat dikembalikan
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 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 beberapa batch yang lebih kecil.
Langkah selanjutnya
Pelajari lebih lanjut cara alur kerja de-identifikasi sesuai dengan deployment sebenarnya.
Pelajari codelab Menyamarkan Data Sensitif dengan Perlindungan Data Sensitif.
Pelajari contoh yang menunjukkan cara membuat kunci yang digabungkan, membuat token konten, dan mengidentifikasi ulang konten yang di-token.
Pelajari lebih lanjut cara membuat salinan data yang dide-identifikasi di penyimpanan.