Halaman ini memberikan contoh kueri yang dapat Anda gunakan untuk menganalisis temuan Perlindungan Data Sensitif yang diekspor ke BigQuery.
Anda dapat mengonfigurasi tugas pemeriksaan atau pemicu tugas untuk menyimpan temuan ke BigQuery. Dengan begitu, Anda dapat mengkueri temuan untuk analisis lebih lanjut. Saat temuan Anda diekspor ke BigQuery, data tersebut akan ditulis ke tabel baru atau yang sudah ada.
Untuk informasi selengkapnya tentang semua tindakan yang dapat dilakukan Perlindungan Data Sensitif setelah inspeksi, lihat topik konseptual Tindakan.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat artikel berikut:
Kolom tabel BigQuery
Kolom tabel temuan yang diekspor didasarkan pada atribut objek Finding
.
Menautkan hasil kembali ke baris yang berisi temuan
Jika mengonfigurasi pemeriksaan tabel BigQuery, Anda dapat menyiapkan tugas atau pemicu tugas sehingga temuan yang diekspor akan berisi ID baris. Dengan demikian, Anda dapat menautkan temuan inspeksi kembali ke baris yang berisinya.
Dalam tugas inspeksi atau pemicu tugas, tetapkan kolom berikut ke nama kolom yang secara unik mengidentifikasi setiap baris dalam tabel, yaitu kolom yang berfungsi sebagai kunci utama:
- Jika Anda menggunakan konsol Google Cloud, tetapkan kolom Kolom identifikasi (dipisahkan koma).
- Jika Anda menggunakan DLP API, tetapkan properti
identifyingFields
.
Setelah pemeriksaan selesai dan temuan diekspor ke
BigQuery, setiap temuan akan berisi nilai kolom yang sesuai dengan kolom yang Anda tentukan. Nilai tersebut akan berada di
kolom location.content_locations.record_location.record_key.id_values
. Kemudian, Anda dapat menggunakan nilai tersebut untuk menautkan temuan kembali ke baris tertentu dalam tabel BigQuery yang diperiksa.
Sampel kueri
Anda dapat menggunakan contoh kueri berikut untuk menganalisis temuan Anda. Anda juga dapat menggunakan kueri dalam alat visualisasi seperti Looker Studio. Kueri ini disediakan untuk membantu Anda mulai membuat kueri data temuan.
Di setiap kueri berikut, ganti hal berikut:
PROJECT_ID
: ID projectDATASET
: nama set data BigQueryTABLE_ID
: ID tabel
Memilih jumlah setiap infoType
Konsol Google Cloud
SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;
Command-line
bq query --use_legacy_sql=false ' SELECT info_type.name, COUNT(info_type.name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID` GROUP BY info_type.name ORDER BY count DESC;'
Memilih jumlah setiap infoType menurut hari
Konsol Google Cloud
SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;
Command-line
bq query --use_legacy_sql=false ' SELECT info_type.name, cast(TIMESTAMP_SECONDS(create_time.seconds) as date) as day, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY info_type.name, day ORDER BY count DESC;'
Memilih jumlah setiap infoType di setiap penampung
Konsol Google Cloud
SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name, info_type.name ORDER BY count DESC;
Command-line
bq query --use_legacy_sql=false ' SELECT info_type.name, locations.container_name, COUNT(locations.container_name) AS count FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations GROUP BY locations.container_name,info_type.name ORDER BY count DESC;'
Memilih jenis temuan yang ditemukan untuk setiap kolom tabel
Kueri ini akan mengelompokkan semua temuan berdasarkan nama kolom dan dimaksudkan untuk menangani temuan dari tugas inspeksi BigQuery. Kueri ini berguna jika Anda mencoba mengidentifikasi kemungkinan jenis untuk kolom tertentu. Anda dapat menyesuaikan setelan dengan mengubah klausa WHERE dan HAVING. Misalnya, jika beberapa hasil tabel disertakan dalam tabel temuan, Anda dapat membatasinya hanya ke satu tugas yang dijalankan atau satu nama tabel.
Konsol Google Cloud
SELECT table_counts.field_name, STRING_AGG( CONCAT(" ",table_counts.name," [count: ",CAST(table_counts.count_total AS String),"]") ORDER BY table_counts.count_total DESC) AS infoTypes FROM ( SELECT locations.record_location.field_id.name AS field_name, info_type.name, COUNT(*) AS count_total FROM `PROJECT_ID.DATASET.TABLE_ID`, UNNEST(location.content_locations) AS locations WHERE (likelihood = 'LIKELY' OR likelihood = 'VERY_LIKELY' OR likelihood = 'POSSIBLE') GROUP BY locations.record_location.field_id.name, info_type.name HAVING count_total>200 ) AS table_counts GROUP BY table_counts.field_name ORDER BY table_counts.field_name
Kueri di atas mungkin menghasilkan hasil seperti ini untuk tabel contoh, dengan kolom infoTypes memberi tahu kita jumlah instance setiap infoType yang ditemukan untuk kolom tertentu tersebut.
field_name | infoTypes |
---|---|
field1 |
CUSTOM_USER_US [count: 7004] , CUSTOM_USER_EU [count: 2996] |
field2 |
US_VEHICLE_IDENTIFICATION_NUMBER [count: 9597] |
field3 |
EMAIL_ADDRESS [count: 10000] |
field4 |
IP_ADDRESS [count: 10000] |
field5 |
PHONE_NUMBER [count: 7815] |
field6 |
US_SOCIAL_SECURITY_NUMBER [count: 10000] |
field7 |
CREDIT_CARD_NUMBER [count: 10000] |