Perlindungan Data Sensitif dapat melakukan de-identifikasi data sensitif dalam konten teks, termasuk teks yang disimpan dalam struktur penampung seperti tabel. De-identifikasi adalah proses menghapus informasi identifikasi 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 sebagian atau seluruh karakter dengan simbol, seperti tanda bintang (*) atau hash (#).
- Mengganti setiap instance data sensitif dengan token, atau surrogate, string.
- Mengenkripsi dan mengganti data sensitif menggunakan kunci yang dihasilkan 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 Perlindungan Data Sensitif. Untuk menyiapkan CLI, lihat quickstart. 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
Perlindungan Data Sensitif.
Ada tiga bagian untuk panggilan API de-identifikasi:
- Data yang akan diperiksa: Struktur tabel atau string (objek
ContentItem
) untuk diperiksa oleh API. - Yang harus diperiksa: Informasi konfigurasi deteksi
(
InspectConfig
) seperti jenis data (atau infoTypes) yang harus dicari, apakah memfilter temuan yang berada di atas batas kemungkinan tertentu, apakah akan menampilkan tidak lebih dari jumlah hasil tertentu, dan seterusnya. Tidak menentukan setidaknya satu infoType dalam argumenInspectConfig
sama dengan menentukan semua infoType bawaan. Tindakan ini tidak direkomendasikan, karena dapat menyebabkan penurunan performa dan peningkatan biaya. - Yang harus dilakukan dengan temuan inspeksi: 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 berisi informasi sensitif sesuai dengan kriteria Anda telah dide-identifikasi.
Menentukan kriteria deteksi
Pendeteksi 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 dirangkum di sini:
- Pendeteksi infoType bawaan disertakan dalam Perlindungan Data Sensitif. Alat tersebut mencakup detektor untuk jenis data sensitif khusus negara atau wilayah serta jenis data yang berlaku secara global.
- Pendeteksi infoType kustom adalah pendeteksi yang Anda buat sendiri. Ada tiga jenis pendeteksi infoType kustom:
- Pendeteksi kamus kustom biasa adalah daftar kata sederhana yang cocok dengan Perlindungan Data Sensitif. Gunakan pendeteksi kamus kustom reguler saat Anda memiliki daftar yang berisi hingga beberapa puluhan ribu kata atau frasa. Pendeteksi kamus khusus reguler lebih diutamakan jika Anda tidak mengantisipasi perubahan daftar kata secara signifikan.
- Pendeteksi kamus kustom yang tersimpan dihasilkan oleh Perlindungan Data Sensitif menggunakan daftar besar kata atau frasa yang disimpan di Cloud Storage atau BigQuery. Gunakan pendeteksi kamus kustom yang tersimpan saat Anda memiliki daftar kata atau frasa dalam jumlah besar—hingga puluhan juta.
- Pendeteksi ekspresi reguler (regex) memungkinkan Perlindungan Data Sensitif untuk mendeteksi kecocokan berdasarkan pola ekspresi reguler.
Selain itu, Perlindungan Data Sensitif menyertakan konsep aturan pemeriksaan, yang memungkinkan Anda menyempurnakan 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 ke nilai dalam teks yang dikirimkan yang diidentifikasi sebagai infoType tertentu.RecordTransformations
: Transformasi yang hanya diterapkan pada nilai dalam data teks tabel yang dikirimkan dan diidentifikasi sebagai infoType tertentu, atau pada seluruh kolom data tabel.
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 tempat transformasi diterapkan (objek array
infoTypes[]
). - Transformasi dasar (objek
PrimitiveTransformation
).
Perhatikan bahwa menentukan infoType bersifat opsional, tetapi tidak menentukan setidaknya satu
infoType dalam argumen
InspectConfig
menyebabkan transformasi diterapkan ke semua infoType bawaan yang
tidak menyediakan transformasi. Tindakan 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 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 adalah sebagai berikut:
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 yang ditampilkan oleh DLP API:
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Perlindungan Data Sensitif, lihat Library klien Perlindungan Data Sensitif.
Untuk mengautentikasi 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 mengautentikasi 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 lebih lanjut 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, pesan akan mengaktifkan transformasinya.
Misalnya, Anda telah menentukan redactConfig
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 adalah sebagai berikut:
My name is Alicia Abernathy, and my email address is .
Contoh berikut menunjukkan cara membuat permintaan API dan hal 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 jumlah karakter tertentu
dengan karakter tetap. Penyamaran dapat dimulai dari awal atau akhir
string. Transformasi ini juga berfungsi dengan jenis angka, seperti bilangan bulat
yang 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 di nomor kartu kredit.numberToMask
: Jumlah karakter yang akan disamarkan. Jika nilai ini tidak ditetapkan, semua karakter yang cocok akan disamarkan.reverseOrder
: Apakah akan menyamarkan karakter dalam urutan terbalik. MenetapkanreverseOrder
ke benar (true) akan menyebabkan karakter dalam nilai yang cocok disamarkan dari akhir hingga awal nilai. Menetapkannya ke false menyebabkan penyamaran dimulai di awal nilai.charactersToIgnore[]
: Satu atau beberapa karakter yang akan dilewati saat menyamarkan nilai. Misalnya, tentukan tanda hubung di sini agar tanda hubung tidak ada saat menyamarkan nomor telepon. Anda juga dapat menentukan sekelompok karakter umum (CharsToIgnore
) yang akan diabaikan saat melakukan masking.
Misalnya, Anda telah menetapkan characterMaskConfig
untuk menyamarkan dengan '#' untuk
jenis info 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 adalah sebagai 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 Perlindungan Data Sensitif, lihat Library klien Perlindungan Data Sensitif.
Untuk mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 membuat nilai surrogate menggunakan hashing kriptografi.
Metode ini mengganti nilai input dengan "digest", atau nilai hash terenkripsi.
Ringkasan 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, anggaplah Anda telah menentukan cryptoHashConfig
untuk semua
infoType 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 dihasilkan 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 dengan yang ditampilkan di sini.
dateShiftConfig
Menetapkan dateShiftConfig
ke objek DateShiftConfig
akan melakukan pergeseran tanggal pada
nilai input tanggal dengan menggeser tanggal dengan jumlah hari acak.
Teknik pergeseran tanggal menggeser kumpulan tanggal secara acak, tetapi mempertahankan urutan dan durasi jangka waktu tertentu. Pergeseran tanggal biasanya dilakukan sesuai konteks dengan individu atau entitas. Artinya, Anda ingin menggeser semua tanggal untuk individu tertentu menggunakan diferensial shift yang sama, tetapi menggunakan diferensial shift yang terpisah untuk satu 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 Perlindungan Data Sensitif, lihat Library klien Perlindungan Data Sensitif.
Untuk mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 adalah:
- Nilai input terenkripsi.
- Panjangnya sama dengan nilai input.
- Dihitung menggunakan enkripsi yang mempertahankan format dalam mode FFX ("FPE-FFX") dengan 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:
- Minimal harus 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 himpunan karakter US-ASCII.)
Perlindungan Data Sensitif menghitung token pengganti menggunakan kunci kriptografi. Anda memberikan kunci ini dengan salah satu dari tiga cara berikut:
- Dengan menyematkan aset yang tidak dienkripsi dalam permintaan API. Tindakan ini tidak direkomendasikan.
- Dengan meminta agar Perlindungan Data Sensitif membuatnya.
- Dengan menyematkannya, dienkripsi dalam permintaan API.
Jika memilih untuk menyematkan kunci dalam permintaan API, Anda harus membuat kunci dan menggabungkannya menggunakan kunci Cloud Key Management Service (Cloud KMS). Nilai yang ditampilkan adalah string berenkode base64 secara default. Untuk menetapkan nilai ini di Perlindungan Data Sensitif, Anda harus mendekodenya ke string byte. Cuplikan kode berikut menyoroti cara melakukannya dalam beberapa bahasa. Contoh menyeluruh disediakan mengikuti 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.
Sesuai desainnya, FPE-FFX mempertahankan panjang dan himpunan karakter teks input. Artinya, kode tersebut tidak memiliki autentikasi dan vektor inisialisasi, sehingga menyebabkan ekspansi panjang dalam token output. Metode lain seperti AES-SIV memberikan jaminan keamanan yang lebih kuat ini dan direkomendasikan untuk kasus penggunaan tokenisasi kecuali jika durasi dan himpunan karakter merupakan persyaratan yang ketat — misalnya, untuk kompatibilitas mundur dengan sistem data lama.
Berikut adalah kode contoh 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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 mengautentikasi 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
dengan format yang mempertahankan: contoh
identifikasi ulang.
fixedSizeBucketingConfig
Transformasi bucketing—yang satu ini dan bucketingConfig
—berfungsi untuk menyamarkan data numerik dengan “mengelompokkannya” 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 berikut:
lowerBound
: Nilai batas bawah dari semua bucket. Nilai yang kurang dari ini dikelompokkan dalam satu bucket.upperBound
: Nilai batas atas dari 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-8.
Untuk mengetahui informasi selengkapnya tentang konsep bucketing, lihat Generalisasi dan Bucketing.
bucketingConfig
Transformasi bucketingConfig
menawarkan fleksibilitas yang lebih besar daripada transformasi bucket
lainnya, fixedSizeBucketingConfig
.
Daripada menetapkan batas atas dan bawah serta nilai interval untuk
membuat bucket berukuran sama, Anda dapat 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 hal-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 diganti dengan 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"
}
}
]
}
Tindakan ini menentukan perilaku berikut:
- Nilai bilangan bulat yang jatuh antara 1 dan 30 akan 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 akan 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, pesan tersebut akan
memungkinkan transformasinya.
Misalnya, Anda telah menentukan replaceWithInfoTypeConfig
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 adalah sebagai berikut:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
Menetapkan timePartConfig
ke objek TimePartConfig
akan mempertahankan sebagian nilai cocok yang mencakup nilai Date
, Timestamp
, dan TimeOfDay
. Objek TimePartConfig
terdiri dari argumen partToExtract
, yang dapat ditetapkan ke salah satu nilai terenumerasi TimePart
, termasuk tahun, bulan, hari, dan seterusnya.
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 melihat 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 |
Mencatat transformasi
Transformasi kumpulan data (objek
RecordTransformations
)
hanya diterapkan pada 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 data mana yang disembunyikan sepenuhnya. Kumpulan data yang cocok dengan aturan penyembunyian apa pun dalamrecordSuppressions[]
akan dihilangkan dari output.
Transformasi kolom
Setiap objek FieldTransformation
berisi tiga argumen:
fields
: Satu atau beberapa kolom input (objekFieldID
) tempat transformasi diterapkan.condition
: Kondisi (objekRecordCondition
) yang harus bernilai benar agar transformasi dapat diterapkan. Misalnya, terapkan transformasi bucket ke kolom usia data hanya jika kolom kode pos untuk data yang sama berada dalam rentang tertentu. Atau, sunting kolom hanya jika kolom tanggal lahir menampilkan usia seseorang di atas 85 tahun.- Salah satu dari dua argumen jenis transformasi berikut. Anda harus
menentukan satu:
infoTypeTransformations
: Memperlakukan konten kolom sebagai teks bebas, dan menerapkanPrimitiveTransformation
hanya ke konten yang cocok denganInfoType
. Transformasi ini telah dibahas sebelumnya dalam topik ini.primitiveTransformation
: Menerapkan transformasi dasar yang ditentukan (objekPrimitiveTransformation
) ke seluruh kolom. Transformasi ini telah dibahas lebih awal dalam topik ini.
Contoh transformasi kolom
Contoh berikut mengirim 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 dasar (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" } ] } }
Rekam penyembunyian
Selain menerapkan transformasi ke data kolom, Anda juga dapat menginstruksikan Perlindungan Data Sensitif untuk melakukan de-identifikasi data hanya dengan menyembunyikan data saat kondisi penyembunyian tertentu bernilai benar. Anda dapat menerapkan transformasi kolom dan penyembunyian 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 kemudian berisi satu objek Expressions
.
Objek Expressions
berisi:
logicalOperator
: Salah satu jenis terenumerasiLogicalOperator
.conditions
: ObjekConditions
, yang berisi array satu atau beberapa objekCondition
.Condition
adalah perbandingan nilai kolom dan nilai lain, yang keduanya berjenisstring
,boolean
,integer
,double
,Timestamp
, atauTimeofDay
.
Jika perbandingan bernilai benar (true), kumpulan data akan disembunyikan, dan sebaliknya. Jika nilai yang dibandingkan bukan jenis yang sama, peringatan akan diberikan dan kondisi akan bernilai false.
Transformasi reversibel
Saat melakukan de-identifikasi data menggunakan transformasi infoType CryptoReplaceFfxFpeConfig
atau CryptoDeterministicConfig
, Anda dapat mengidentifikasi ulang data tersebut, asalkan Anda menggunakan CryptoKey
untuk melakukan de-identifikasi data di awal.
Untuk informasi selengkapnya, lihat Transformasi tokenisasi
berbasis kripto.
Batasan 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 Perlindungan Data Sensitif adalah subkumpulan arbitrer dari semua temuan dalam permintaan. Untuk mendapatkan semua temuan, bagi permintaan Anda menjadi beberapa bagian yang lebih kecil.
Langkah selanjutnya
Pelajari lebih lanjut cara alur kerja de-identifikasi sesuai dengan deployment nyata.
Bekerja melalui codelab Menyamarkan Data Sensitif dengan Perlindungan Data Sensitif.
Pelajari contoh yang menunjukkan cara membuat kunci gabungan, membuat token konten, dan mengidentifikasi ulang konten dengan token.
Pelajari lebih lanjut cara membuat salinan data yang telah dide-identifikasi di penyimpanan.