Pipeline Dataflow ini menggunakan Perlindungan Data Sensitif untuk mendeteksi data sensitif, seperti informasi identitas pribadi (PII), lalu memberi tag pada temuannya di Katalog Data.
Solusi yang dijelaskan dalam dokumen ini dibuat berdasarkan arsitektur solusi pembuatan token berbasis file yang dijelaskan dalam dokumen pendampingnya: Otomatis melakukan token data berbasis file yang sensitif dengan Perlindungan Data Sensitif, Cloud Key Management Service, dan Dataflow. Perbedaan utama antara kedua dokumen tersebut adalah dokumen ini menjelaskan solusi yang juga membuat entri Data Catalog dengan skema sumber dan tag sensitivitas data untuk temuan Perlindungan Data Sensitif. Alat ini juga dapat memeriksa database relasional menggunakan koneksi konektivitas database Java (JDBC).
Dokumen ini ditujukan untuk audiens teknis yang tanggung jawabnya mencakup keamanan data, tata kelola data, pemrosesan data, atau analisis data. Dokumen ini mengasumsikan bahwa Anda telah memahami pemrosesan data dan privasi data, tanpa perlu menjadi pakar. Anda juga dianggap sudah memahami skrip shell dan memiliki pengetahuan dasar tentang Google Cloud.
Arsitektur
Arsitektur ini menentukan pipeline yang melakukan tindakan berikut:
- Mengekstrak data dari database relasional menggunakan JDBC.
- Mengambil sampel kumpulan data menggunakan klausa
LIMIT
database. - Memproses kumpulan data melalui Cloud Data Loss Prevention API (bagian dari Perlindungan Data Sensitif) untuk mengidentifikasi kategori sensitivitas.
- Menyimpan temuan ke tabel BigQuery dan Data Catalog.
Diagram berikut mengilustrasikan tindakan yang dilakukan pipeline:
Solusi ini menggunakan koneksi JDBC untuk mengakses database relasional. Saat menggunakan tabel BigQuery sebagai sumber data, solusi ini menggunakan BigQuery Storage API untuk mempercepat waktu pemuatan.
Pipeline sampel dan identifikasi menghasilkan file berikut ke Cloud Storage:
- Skema Avro (setara) dari skema sumber
- Data
infoTypes
terdeteksi untuk setiap kolom input (PERSON_NAME
,PHONE_NUMBER
, danSTREET_ADDRESS
)
Solusi ini menggunakan perataan data untuk menangani kolom bertingkat dan berulang dalam kumpulan data.
Tujuan
- Membuat tag Data Catalog dan entity group
- Men-deploy pipeline pengambilan sampel dan identifikasi
- Membuat entity Data Catalog kustom
- Menerapkan tag sensitivitas ke entitas Data Catalog kustom
- Memeriksa apakah data tag sensitivitas juga ada di BigQuery
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Build, DLP API, Cloud SQL, Cloud Storage, Compute Engine, Dataflow, Data Catalog, and Secret Manager.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Build, DLP API, Cloud SQL, Cloud Storage, Compute Engine, Dataflow, Data Catalog, and Secret Manager.
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Menyiapkan lingkungan Anda
Di Cloud Shell, clone repositori sumber dan buka direktori untuk file yang di-clone:
git clone https://github.com/GoogleCloudPlatform/auto-data-tokenize.git cd auto-data-tokenize/
Gunakan editor teks untuk mengubah skrip
set_variables.sh
guna menetapkan variabel lingkungan yang diperlukan. Abaikan variabel lain dalam skrip. Parameter ini tidak relevan dalam dokumen ini.# The Google Cloud project to use: export PROJECT_ID="PROJECT_ID" # The Compute Engine region to use for running dataflow jobs and create a # temporary storage bucket: export REGION_ID= "REGION_ID" # The Cloud Storage bucket to use as a temporary bucket for Dataflow: export TEMP_GCS_BUCKET="CLOUD_STORAGE_BUCKET_NAME" # Name of the service account to use (not the email address) # (For example, tokenizing-runner): export DLP_RUNNER_SERVICE_ACCOUNT_NAME="DLP_RUNNER_SERVICE_ACCOUNT_NAME" # Entry Group ID to use for creating/searching for Entries # in Data Catalog for non-BigQuery entries. # The ID must begin with a letter or underscore, contain only English # letters, numbers and underscores, and have 64 characters or fewer. export DATA_CATALOG_ENTRY_GROUP_ID="DATA_CATALOG_ENTRY_GROUP_ID" # The Data Catalog Tag Template ID to use # for creating sensitivity tags in Data Catalog. # The ID must contain only lowercase letters (a-z), numbers (0-9), or # underscores (_), and must start with a letter or underscore. # The maximum size is 64 bytes when encoded in UTF-8 export INSPECTION_TAG_TEMPLATE_ID="INSPECTION_TAG_TEMPLATE_ID"
Ganti kode berikut:
- PROJECT_ID: Project ID Anda.
- REGION_ID: Region yang berisi bucket atau bucket penyimpanan Anda. Pilih lokasi yang berada di region Data Catalog.
- CLOUD_STORAGE_BUCKET_NAME: Nama bucket penyimpanan Anda.
- DLP_RUNNER_SERVICE_ACCOUNT_NAME: Nama akun layanan Anda.
- DATA_CATALOG_ENTRY_GROUP_ID: Nama grup entri data catalog non-BigQuery Anda.
- INSPECTION_TAG_TEMPLATE_ID: Nama yang Anda berikan ke template tag untuk Data Catalog
Jalankan skrip untuk menetapkan variabel lingkungan:
source set_variables.sh
Membuat fasilitas
Arsitektur yang dijelaskan dalam dokumen ini menggunakan referensi berikut:
- Akun layanan untuk menjalankan pipeline Dataflow, memungkinkan kontrol akses yang terperinci
- Bucket Cloud Storage untuk menyimpan data sementara dan data pengujian
- Template tag Data Catalog untuk melampirkan tag sensitivitas ke entri
- MySQL di instance Cloud SQL sebagai sumber JDBC
Membuat akun layanan
Sebaiknya jalankan pipeline dengan kontrol akses terperinci untuk meningkatkan partisi akses. Jika project Anda tidak memiliki akun layanan buatan pengguna, buatlah akun.
Di Cloud Shell, buat akun layanan untuk digunakan sebagai akun layanan pengontrol yang dikelola pengguna untuk Dataflow:
gcloud iam service-accounts create ${DLP_RUNNER_SERVICE_ACCOUNT_NAME} \ --project="${PROJECT_ID}" \ --description="Service Account for Sampling and Cataloging pipelines." \ --display-name="Sampling and Cataloging pipelines"
Buat peran khusus dengan izin yang diperlukan untuk mengakses Sensitive Data Protection, Dataflow, Cloud SQL, dan Data Catalog:
export SAMPLING_CATALOGING_ROLE_NAME="sampling_cataloging_runner" gcloud iam roles create ${SAMPLING_CATALOGING_ROLE_NAME} \ --project="${PROJECT_ID}" \ --file=tokenizing_runner_permissions.yaml
Terapkan peran khusus dan peran Dataflow Worker ke akun layanan agar dapat berjalan sebagai pekerja Dataflow:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${DLP_RUNNER_SERVICE_ACCOUNT_EMAIL}" \ --role=projects/${PROJECT_ID}/roles/${SAMPLING_CATALOGING_ROLE_NAME} gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${DLP_RUNNER_SERVICE_ACCOUNT_EMAIL}" \ --role=roles/dataflow.worker
Membuat bucket Cloud Storage
Di Cloud Shell, buat bucket Cloud Storage untuk menyimpan data pengujian dan sebagai lokasi staging Dataflow:
gsutil mb -p ${PROJECT_ID} -l ${REGION_ID} "gs://${TEMP_GCS_BUCKET}"
Membuat grup entri Data Catalog
Data Catalog menyimpan daftar entri yang mewakili
resource Google Cloud atau resource lainnya. Entri diatur dalam
grup entri. Ada grup entri implisit untuk BigQuery (@bigquery
). Anda harus membuat grup entri untuk jenis resource lainnya. Untuk mempelajari entri Data Catalog lebih lanjut, lihat Menampilkan file dari Cloud Storage dengan entri kumpulan file.
Di Data Catalog, grup entri seperti folder yang berisi entri. Entri mewakili aset data.
Di Cloud Shell, buat grup entri baru tempat pipeline dapat menambahkan entri untuk tabel MySQL Anda:
gcloud data-catalog entry-groups create \ "${DATA_CATALOG_ENTRY_GROUP_ID}" \ --project="${PROJECT_ID}" \ --location="${REGION_ID}"
Membuat template tag pemeriksaan
Di Cloud Shell, buat template tag Data Catalog untuk mengaktifkan entri pemberian tag dengan informasi sensitivitas menggunakan Perlindungan Data Sensitif:
gcloud data-catalog tag-templates create ${INSPECTION_TAG_TEMPLATE_ID} \ --project="${PROJECT_ID}" \ --location="${REGION_ID}" \ --display-name="Auto DLP sensitive categories" \ --field=id=infoTypes,type=string,display-name="DLP infoTypes",required=TRUE \ --field=id=inspectTimestamp,type=timestamp,display-name="Inspection run timestamp",required=TRUE
Membuat tabel hasil pemeriksaan di BigQuery
Di Cloud Shell, buat tabel BigQuery untuk menyimpan temuan gabungan dari Sensitive Data Protection:
bq mk --dataset \ --location="${REGION_ID}" \ --project_id="${PROJECT_ID}" \ inspection_results bq mk --table \ --project_id="${PROJECT_ID}" \ inspection_results.SensitivityInspectionResults \ inspection_results_bigquery_schema.json
Menyiapkan MySQL di instance Cloud SQL
Untuk sumber data, Anda menggunakan instance Cloud SQL.
Di Cloud Shell, buat instance MySQL di instance Cloud SQL dan muat dengan data sampel:
export SQL_INSTANCE="mysql-autodlp-instance" export SQL_ROOT_PASSWORD="root1234" gcloud sql instances create "${SQL_INSTANCE}" \ --project="${PROJECT_ID}" \ --region="${REGION_ID}" \ --database-version=MYSQL_5_7 \ --root-password="${SQL_ROOT_PASSWORD}"
Simpan sandi database di Secret Manager.
Sandi database dan informasi rahasia lainnya tidak boleh disimpan atau dicatat. Secret Manager memungkinkan Anda menyimpan dan mengambil secret tersebut dengan aman.
Simpan sandi root database MySQL sebagai rahasia cloud:
export SQL_PASSWORD_SECRET_NAME="mysql-password" printf $SQL_ROOT_PASSWORD | gcloud secrets create "${SQL_PASSWORD_SECRET_NAME}" \ --data-file=- \ --locations="${REGION_ID}" \ --replication-policy="user-managed" \ --project="${PROJECT_ID}"
Salin data pengujian ke instance Cloud SQL
Data pengujian adalah set data demonstrasi yang berisi 5.000 nama depan dan belakang serta nomor telepon bergaya AS yang dibuat secara acak. Tabel
demonstration-dataset
berisi empat kolom: row_id
, person_name
,
contact_type
, contact_number
. Anda juga bisa menggunakan set data Anda sendiri. Jika Anda menggunakan set data sendiri, jangan lupa untuk menyesuaikan nilai yang disarankan di bagian Verifikasi di BigQuery dalam dokumen ini. Untuk menyalin set data demonstrasi (contacts5k.sql.gz
) yang disertakan ke instance Cloud SQL Anda, lakukan hal berikut:
Di Cloud Shell, salin set data contoh ke Cloud Storage untuk staging ke Cloud SQL:
gsutil cp contacts5k.sql.gz gs://${TEMP_GCS_BUCKET}
Buat database baru dalam instance Cloud SQL:
export DATABASE_ID="auto_dlp_test" gcloud sql databases create "${DATABASE_ID}" \ --project="${PROJECT_ID}" \ --instance="${SQL_INSTANCE}"
Berikan peran Storage Object Admin ke akun layanan Cloud SQL Anda agar dapat mengakses penyimpanan:
export SQL_SERVICE_ACCOUNT=$(gcloud sql instances describe "${SQL_INSTANCE}" --project="${PROJECT_ID}" | grep serviceAccountEmailAddress: | sed "s/serviceAccountEmailAddress: //g") gsutil iam ch "serviceAccount:${SQL_SERVICE_ACCOUNT}:objectAdmin" \ gs://${TEMP_GCS_BUCKET}
Muat data ke tabel baru:
gcloud sql import sql "${SQL_INSTANCE}" \ "gs://${TEMP_GCS_BUCKET}/contacts5k.sql.gz" \ --project="${PROJECT_ID}" \ --database="${DATABASE_ID}"
Untuk mempelajari lebih lanjut cara mengimpor data ke Cloud SQL, lihat Praktik terbaik untuk mengimpor dan mengekspor data.
Mengompilasi modul
Di Cloud Shell, kompilasi modul guna mem-build file yang dapat dieksekusi untuk men-deploy pipeline pengambilan-sample-dan-identifikasi, serta pipeline tokenize:
./gradlew clean buildNeeded shadowJar -x test
Secara opsional, hapus flag
-x test
untuk menjalankan pengujian unit dan integrasi. Jika Anda belum menginstallibncurses5
, instal di Cloud Shell dengan:sudo apt-get install libncurses5
.
Menjalankan pipeline pengambilan-sampel-dan-identifikasi
Pipeline identifikasi Pengambilan sampel dan Perlindungan Data Sensitif melakukan tugas-tugas berikut dalam urutan berikut:
- Mengekstrak kumpulan data dari sumber yang disediakan. Misalnya, metode identifikasi Perlindungan Data Sensitif hanya mendukung tabel datar sehingga pipeline meratakan data Avro, Parquet, atau BigQuery karena data tersebut dapat berisi kolom bertingkat dan berulang.
- Mengambil sampel masing-masing kolom untuk sampel yang diperlukan, tidak termasuk
null
atau nilai kosong. - Mengidentifikasi data
infoTypes
sensitif menggunakan Perlindungan Data Sensitif, dengan mengelompokkan sampel ke dalam ukuran tumpukan yang dapat diterima untuk Perlindungan Data Sensitif (nilai <500 Kb dan <50.000). - Menulis laporan ke Cloud Storage dan BigQuery untuk referensi di masa mendatang.
- Membuat entity Data Catalog, saat Anda memberikan informasi template tag dan grup entri. Jika Anda memberikan informasi ini, pipeline akan membuat tag sensitivitas untuk entri dalam Data Catalog terhadap kolom yang sesuai.
Membuat Template Flex Dataflow
Template Dataflow Flex memungkinkan Anda menggunakan panggilan Konsol Google Cloud, Google Cloud CLI, atau REST API untuk menyiapkan dan menjalankan pipeline di Google Cloud. Dokumen ini memberikan petunjuk untuk konsol Google Cloud. Template klasik ditahapkan sebagai grafik eksekusi di Cloud Storage, sementara Flex Templates memaketkan pipeline sebagai image container di Container Registry project Anda. Dengan Template Flex, Anda dapat memisahkan pembuatan dan pengoperasian pipeline, serta berintegrasi dengan sistem orkestrasi untuk operasi pipeline terjadwal. Untuk mengetahui informasi selengkapnya tentang Template Flex Dataflow, lihat Mengevaluasi jenis template yang akan digunakan.
Template Flex Dataflow memisahkan langkah pembuatan dan staging dari langkah-langkah yang berjalan. Mereka melakukannya dengan memungkinkan peluncuran pipeline Dataflow dari panggilan API, dan dari Cloud Composer, menggunakan modul DataflowStartFlexTemplateOperator
.
Di Cloud Shell, tentukan lokasi untuk menyimpan file spesifikasi template yang berisi informasi yang diperlukan untuk menjalankan tugas Dataflow:
export FLEX_TEMPLATE_PATH="gs://${TEMP_GCS_BUCKET}/dataflow/templates/sample-inspect-tag-pipeline.json" export FLEX_TEMPLATE_IMAGE="us.gcr.io/${PROJECT_ID}/dataflow/sample-inspect-tag-pipeline:latest"
Buat Template Flex Dataflow:
gcloud dataflow flex-template build "${FLEX_TEMPLATE_PATH}" \ --image-gcr-path="${FLEX_TEMPLATE_IMAGE}" \ --service-account-email="${DLP_RUNNER_SERVICE_ACCOUNT_EMAIL}" \ --sdk-language="JAVA" \ --flex-template-base-image=JAVA11 \ --metadata-file="sample_identify_tag_pipeline_metadata.json" \ --jar="build/libs/auto-data-tokenize-all.jar" \ --env="FLEX_TEMPLATE_JAVA_MAIN_CLASS=\"com.google.cloud.solutions.autotokenize.pipeline.DlpInspectionPipeline\""
Menjalankan pipeline
Pipeline pengambilan sampel dan identifikasi mengekstrak jumlah
data yang ditentukan oleh nilai sampleSize
. Kemudian, kode ini akan meratakan setiap
kumpulan data dan mengidentifikasi kolom infoTypes
menggunakan Perlindungan Data Sensitif (untuk
mengidentifikasi jenis informasi sensitif). Nilai infoTypes
dihitung, lalu
digabungkan berdasarkan nama kolom dan kolom infoType
untuk membuat laporan sensitivitas.
Di Cloud Shell, luncurkan pipeline pengambilan sampel dan identifikasi untuk mengidentifikasi kolom sensitif pada sumber data:
export CLOUD_SQL_JDBC_CONNECTION_URL="jdbc:mysql:///${DATABASE_ID}?cloudSqlInstance=${PROJECT_ID}%3A${REGION_ID}%3A${SQL_INSTANCE}&socketFactory=com.google.cloud.sql.mysql.SocketFactory" gcloud dataflow flex-template run "sample-inspect-tag-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "${FLEX_TEMPLATE_PATH}" \ --region "${REGION_ID}" \ --service-account-email "${DLP_RUNNER_SERVICE_ACCOUNT_EMAIL}" \ --staging-location "gs://${TEMP_GCS_BUCKET}/staging" \ --worker-machine-type "n1-standard-1" \ --parameters sampleSize=2000 \ --parameters sourceType="JDBC_TABLE" \ --parameters inputPattern="Contacts" \ --parameters reportLocation="gs://${TEMP_GCS_BUCKET}/auto_dlp_report/" \ --parameters reportBigQueryTable="${PROJECT_ID}:inspection_results.SensitivityInspectionResults" \ --parameters jdbcConnectionUrl="${CLOUD_SQL_JDBC_CONNECTION_URL}" \ --parameters jdbcDriverClass="com.mysql.cj.jdbc.Driver" \ --parameters jdbcUserName="root" \ --parameters jdbcPasswordSecretsKey="projects/${PROJECT_ID}/secrets/${SQL_PASSWORD_SECRET_NAME}/versions/1" \ --parameters ^:^jdbcFilterClause="ROUND(RAND() * 10) IN (1,3)" \ --parameters dataCatalogEntryGroupId="projects/${PROJECT_ID}/locations/${REGION_ID}/entryGroups/${DATA_CATALOG_ENTRY_GROUP_ID}" \ --parameters dataCatalogInspectionTagTemplateId="projects/${PROJECT_ID}/locations/${REGION_ID}/tagTemplates/${INSPECTION_TAG_TEMPLATE_ID}"
Parameter jdbcConnectionUrl
menentukan URL koneksi database JDBC dengan detail nama pengguna dan sandi. Detail pembuatan URL koneksi yang tepat bergantung pada vendor database dan partner hosting Anda. Untuk memahami detail cara terhubung ke database relasional berbasis Cloud SQL, lihat Menghubungkan menggunakan konektor Cloud SQL.
Pipeline ini membuat kueri seperti SELECT * FROM [TableName]
untuk membaca data tabel yang akan diperiksa.
Kueri ini dapat menyebabkan pemuatan pada database
dan juga pada pipeline, terutama untuk tabel besar. Secara opsional, Anda dapat
mengoptimalkan sampel data yang ingin diperiksa di sisi database.
Untuk melakukannya, masukkan jdbcFilterClause
sebagai klausa WHERE
kueri yang
muncul dalam contoh kode yang ditawarkan dalam
bagian Verifikasi di BigQuery
nanti dalam dokumen ini.
Untuk menjalankan laporan, Anda dapat memilih satu atau beberapa sink pelaporan berikut:
reportLocation
untuk menyimpan laporan di bucket Cloud Storagereport
BIGQUERY_TABLE
untuk menyimpan laporan diBigQueryTable
dataCatalogEntryGroupId
untuk membuat dan memberi tag pada entri di Data Catalog (hapus parameter ini jikasourceType
adalahBIGQUERY_TABLE
)
Pipeline mendukung jenis sumber berikut. Untuk menentukan kombinasi argumen sourceType
dan inputPattern
yang benar, gunakan opsi yang tercantum dalam tabel berikut.
Dalam hal ini, Anda hanya menggunakan tabel JDBC_TABLE
.
sourceType |
Sumber data | inputPattern |
---|---|---|
|
Database relasional (menggunakan JDBC) |
|
|
File Avro di Cloud Storage. Untuk memilih beberapa file yang cocok dengan pola, Anda dapat menggunakan satu karakter pengganti. Pola berikut memilih semua file yang dimulai dengan awalan ( data- ):
|
|
|
File Parquet di Cloud Storage. Untuk memilih beberapa file yang cocok dengan pola, Anda dapat menggunakan satu karakter pengganti. Pola berikut memilih semua file yang dimulai dengan awalan ( data- ):
|
|
|
Tabel BigQuery. Membaca semua baris, lalu secara acak mengambil sampel menggunakan pipeline. |
|
Pipeline mendeteksi semua
infoTypes
standar
yang didukung oleh Perlindungan Data Sensitif. Anda dapat memberikan infoTypes
kustom tambahan
menggunakan parameter --observableinfoTypes
.
Melakukan pengambilan sampel dan mengidentifikasi directed acyclic graph (DAG) pipeline
Diagram berikut menunjukkan DAG eksekusi Dataflow. DAG memiliki
dua cabang. Kedua cabang dimulai pada ReadJdbcTable
dan berakhir pada
ExtractReport
. Dari sana, laporan akan dibuat atau data disimpan.
Mengambil laporan
Pipeline pengambilan sampel dan identifikasi menghasilkan file berikut:
- File skema Avro (atau skema yang dikonversi ke Avro) dari sumber
- Satu file untuk setiap kolom sensitif dengan informasi
dan jumlah
infoType
Untuk mengambil laporan, lakukan tindakan berikut:
Di Cloud Shell, ambil laporan:
mkdir -p auto_dlp_report/ gsutil -m cp "gs://${TEMP_GCS_BUCKET}/auto_dlp_report/*.json" auto_dlp_report/
Cantumkan semua nama kolom yang diidentifikasi:
cat auto_dlp_report/col-*.json | jq .columnName
Outputnya adalah sebagai berikut:
"$.topLevelRecord.contact_number" "$.topLevelRecord.person_name"
Lihat detail kolom yang diidentifikasi dengan perintah
cat
untuk file:cat auto_dlp_report/col-topLevelRecord-contact_number-00000-of-00001.json
Berikut adalah cuplikan kolom
cc
:{ "columnName": "$.topLevelRecord.contact_number", "infoTypes": [{ "infoType": "PHONE_NUMBER", "count": "990" }] }
- Nilai
columnName
tidak biasa karena ada konversi implisit baris database ke data Avro. - Nilai
count
bervariasi berdasarkan sampel yang dipilih secara acak selama eksekusi.
- Nilai
Memverifikasi tag sensitivitas di Data Catalog
Pipeline pengambilan sampel dan identifikasi membuat entri baru dan menerapkan tag sensitivitas ke kolom yang sesuai.
Di Cloud Shell, ambil entri yang dibuat untuk tabel Contacts:
gcloud data-catalog entries describe Contacts \ --entry-group=${DATA_CATALOG_ENTRY_GROUP_ID} \ --project="${PROJECT_ID}" \ --location="${REGION_ID}"
Perintah ini akan menampilkan detail tabel, termasuk skemanya.
Tampilkan semua tag sensitivitas yang terlampir pada entri ini:
gcloud data-catalog tags list --entry=Contacts --entry-group=${DATA_CATALOG_ENTRY_GROUP_ID} \ --project="${PROJECT_ID}" \ --location="${REGION_ID}"
Pastikan tag sensitivitas ada di kolom berikut:
contact_number
,person_name
.Data
infoTypes
yang diidentifikasi oleh Perlindungan Data Sensitif dapat berisi beberapa jenis yang salah. Misalnya, fungsi dapat mengidentifikasi jenisperson_name
sebagai jenisDATE
, karena beberapa stringperson_names
acak dapat berupa April, Mei, Juni, atau lainnya.Detail tag sensitivitas yang dihasilkan adalah sebagai berikut:
column: contact_number fields: infoTypes: displayName: DLP infoTypes stringValue: '[PHONE_NUMBER]' inspectTimestamp: displayName: Inspection run timestamp timestampValue: '2021-05-20T16:34:29.596Z' name: projects/auto-dlp/locations/asia-southeast1/entryGroups/sql_databases/entries/Contacts/tags/CbS0CtGSpZyJ template: projects/auto-dlp/locations/asia-southeast1/tagTemplates/auto_dlp_inspection templateDisplayName: Auto DLP sensitive categories --- column: person_name fields: infoTypes: displayName: DLP infoTypes stringValue: '[DATE, PERSON_NAME]' inspectTimestamp: displayName: Inspection run timestamp timestampValue: '2021-05-20T16:34:29.594Z' name: projects/auto-dlp/locations/asia-southeast1/entryGroups/sql_databases/entries/Contacts/tags/Cds1aiO8R0pT template: projects/auto-dlp/locations/asia-southeast1/tagTemplates/auto_dlp_inspection templateDisplayName: Auto DLP sensitive categories
Memverifikasi di BigQuery
Pipeline Dataflow menambahkan temuan gabungan ke tabel BigQuery yang disediakan. Kueri tersebut mencetak hasil pemeriksaan yang diambil dari tabel BigQuery.
Di Cloud Shell, periksa hasilnya:
bq query \ --location="${REGION_ID}" \ --project="${PROJECT_ID}" \ --use_legacy_sql=false \ 'SELECT input_pattern AS table_name, ColumnReport.column_name AS column_name, ColumnReport.info_types AS info_types FROM `inspection_results.SensitivityInspectionResults`, UNNEST(column_report) ColumnReport; WHERE column_name="$.topLevelRecord.contact_number"'
Outputnya adalah sebagai berikut:
+------------+---------------------------------+----------------------------------------------+ | table_name | column_name | info_types | +------------+---------------------------------+----------------------------------------------+ | Contacts | $.topLevelRecord.contact_number | [{"info_type":"PHONE_NUMBER","count":"990"}] | +------------+---------------------------------+----------------------------------------------+
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Baca dokumen pendamping tentang solusi serupa yang menggunakan file sebagai input: Membuat token data berbasis file sensitif secara otomatis dengan Sensitive Data Protection, Cloud Key Management Service, dan Dataflow.
- Pelajari cara memeriksa penyimpanan dan database untuk menemukan data sensitif.
- Pelajari cara menangani de-identifikasi dan identifikasi ulang PII dalam set data berskala besar menggunakan Perlindungan Data Sensitif.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.