Temuan Perlindungan Data Sensitif Kueri di BigQuery

Halaman ini menyediakan 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 tersebut ke BigQuery. Dengan begitu, Anda dapat mengkueri temuan tersebut untuk dianalisis lebih lanjut. Ketika temuan Anda diekspor ke BigQuery, data itu ditulis ke tabel baru atau yang sudah ada.

Untuk mengetahui informasi selengkapnya tentang semua tindakan yang dapat dilakukan oleh Perlindungan Data Sensitif setelah pemeriksaan, lihat topik konseptual Tindakan.

Untuk informasi selengkapnya tentang menjalankan kueri, lihat referensi berikut:

Kolom di tabel BigQuery

Kolom tabel temuan yang diekspor didasarkan pada atribut objek Finding.

Jika mengonfigurasi pemeriksaan tabel BigQuery, Anda dapat menyiapkan tugas atau pemicu tugas sehingga temuan yang diekspor akan berisi ID baris. Dengan begitu, Anda dapat menautkan temuan pemeriksaan kembali ke baris yang memuatnya.

Pada tugas pemeriksaan atau pemicu tugas, tetapkan kolom berikut ke nama kolom yang secara unik mengidentifikasi setiap baris dalam tabel—yaitu, kolom yang memiliki fungsi kunci utama:

  • Jika Anda menggunakan konsol Google Cloud, tetapkan kolom Identifying fields (comma separated).
  • Jika Anda menggunakan DLP API, tetapkan properti identifyingFields.

Setelah pemeriksaan selesai dan temuannya diekspor ke BigQuery, setiap temuan akan berisi nilai yang sesuai dari kolom yang Anda tentukan. Nilai tersebut akan berada di kolom location.content_locations.record_location.record_key.id_values. Kemudian, Anda dapat menggunakan nilai-nilai tersebut untuk menautkan kembali temuan 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 pada data temuan.

Di setiap kueri berikut, ganti kode berikut:

  • PROJECT_ID: ID project
  • DATASET: nama set data BigQuery
  • TABLE_ID: ID tabel

Pilih 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;'

Pilih 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 ditujukan untuk mengerjakan temuan dari tugas pemeriksaan BigQuery. Kueri ini berguna jika Anda mencoba mengidentifikasi jenis kemungkinan untuk kolom tertentu. Anda dapat menyesuaikan setelan dengan memodifikasi klausa WHERE dan HAVING. Misalnya, jika beberapa hasil tabel disertakan dalam tabel temuan, Anda dapat membatasinya hanya pada 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 memberikan hasil seperti ini untuk tabel contoh, dengan kolom infoTypes memberi tahu kita berapa banyak instance setiap infoType yang ditemukan untuk kolom 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]