Mengalirkan temuan ke BigQuery untuk dianalisis

Halaman ini menjelaskan cara melakukan streaming temuan baru dan yang diperbarui ke set data BigQuery menggunakan fungsi ekspor Security Command Center untuk BigQuery. Temuan yang ada tidak dikirim ke BigQuery kecuali jika diperbarui.

BigQuery adalah data warehouse analisis dari Google Cloud yang terkelola sepenuhnya, berskala petabyte, dan hemat biaya yang dapat Anda gunakan untuk menjalankan analisis dalam jumlah besar data hampir secara real time. Anda dapat menggunakan BigQuery untuk menjalankan kueri berdasarkan temuan baru dan yang diperbarui, memfilter data untuk menemukan hal yang Anda butuhkan, dan menghasilkan laporan kustom. Untuk mempelajari BigQuery lebih lanjut, baca dokumentasi BigQuery.

Ringkasan

Saat Anda mengaktifkan fitur ini, temuan baru yang ditulis ke Security Command Center akan diekspor ke tabel BigQuery hampir secara real time. Kemudian, Anda dapat mengintegrasikan data ke dalam alur kerja yang ada dan membuat analisis kustom. Anda dapat mengaktifkan fitur ini di tingkat organisasi, folder, dan project untuk mengekspor temuan berdasarkan persyaratan Anda.

Fitur ini adalah cara yang direkomendasikan untuk mengekspor temuan Security Command Center ke BigQuery, karena fitur ini terkelola sepenuhnya dan tidak memerlukan operasi manual atau penulisan kode kustom.

Struktur set data

Fitur ini menambahkan setiap temuan baru dan pembaruan berikutnya sebagai baris baru dalam tabel findings, yang dikelompokkan berdasarkan source_id, finding_id, dan event_time.

Saat temuan diperbarui, fitur ini akan membuat beberapa catatan temuan dengan nilai source_id dan finding_id yang sama, tetapi dengan nilai event_time yang berbeda. Struktur set data ini memungkinkan Anda melihat perubahan status setiap temuan dari waktu ke waktu.

Perhatikan bahwa entri duplikat mungkin ada di {i>dataset<i} Anda. Untuk mengurainya, Anda dapat menggunakan klausa DISTINCT, seperti yang ditunjukkan pada contoh kueri pertama.

Setiap set data berisi tabel findings, yang memiliki kolom berikut:

Kolom Deskripsi
source_id ID unik yang ditetapkan Security Command Center ke sumber penemuan. Misalnya, semua temuan dari sumber Deteksi Anomali Cloud memiliki nilai source_id yang sama.

Contoh: 1234567890
finding_id ID unik yang merepresentasikan temuan. ID ini bersifat unik di dalam sumber untuk organisasi. Kode ini alfanumerik dan memiliki kurang dari atau sama dengan 32 karakter.
event_time Waktu terjadinya peristiwa atau waktu saat pembaruan temuan terjadi. Misalnya, jika temuan tersebut merepresentasikan firewall terbuka, maka `event_time` akan merekam waktu yang dipercaya detektor bahwa firewall dibuka. Jika temuan itu diselesaikan setelahnya, maka kali ini mencerminkan kapan temuan itu diselesaikan.

Contoh: 2019-09-26 12:48:00.985000 UTC
menemukan Kumpulan data penilaian seperti keamanan, risiko, kondisi, atau privasi, yang diserap ke dalam Security Command Center untuk presentasi, notifikasi, analisis, pengujian kebijakan, dan penegakan. Misalnya, kerentanan pembuatan skrip lintas situs (XSS) dalam aplikasi App Engine adalah temuannya.

Untuk informasi selengkapnya tentang kolom bertingkat, lihat referensi API untuk objek Finding.
resource Informasi terkait resource Google Cloud yang terkait dengan temuan ini.

Untuk informasi selengkapnya tentang kolom bertingkat, lihat referensi API untuk objek Resource.

Biaya

Anda akan dikenai biaya BigQuery terkait fitur ini. Untuk informasi lebih lanjut, lihat harga BigQuery.

Sebelum memulai

Anda harus menyelesaikan langkah-langkah ini sebelum mengaktifkan fitur ini.

Siapkan izin

Untuk menyelesaikan panduan ini, Anda harus memiliki peran Identity and Access Management (IAM) berikut:

Membuat set data BigQuery

Membuat set data BigQuery. Untuk mengetahui informasi selengkapnya, lihat Membuat set data.

Merencanakan residensi data

Jika residensi data diaktifkan untuk Security Command Center, konfigurasi yang menentukan ekspor streaming ke BigQuery—resource BigQueryExport—akan tunduk pada kontrol residensi data dan disimpan di lokasi Security Command Center yang Anda pilih.

Untuk mengekspor temuan di lokasi Security Command Center ke BigQuery, Anda harus mengonfigurasi BigQuery Export di lokasi Security Command Center yang sama dengan temuan tersebut.

Karena filter yang digunakan dalam ekspor BigQuery dapat berisi data yang tunduk pada kontrol residensi, pastikan Anda menentukan lokasi yang benar sebelum membuatnya. Security Command Center tidak membatasi lokasi tempat Anda membuat ekspor.

Ekspor BigQuery hanya disimpan di lokasi tempatnya dibuat dan tidak dapat dilihat atau diedit di lokasi lain.

Setelah membuat BigQuery Export, Anda tidak dapat mengubah lokasinya. Untuk mengubah lokasi, Anda harus menghapus BigQuery Export dan membuatnya kembali di lokasi baru.

Untuk mengambil BigQuery Export dengan menggunakan panggilan API, Anda harus menentukan lokasi dalam nama resource lengkap bigQueryExport. Contoh:

GET https://securitycenter.googleapis.com/v2/{name=organizations/123/locations/eu/bigQueryExports/my-export-01}

Demikian pula, untuk mengambil ekspor BigQuery dengan menggunakan gcloud CLI, Anda harus menentukan lokasi dalam nama resource lengkap konfigurasi atau dengan menggunakan flag --locations. Contoh:

gcloud scc scc bqexports get myBigQueryExport organizations/123 \
    --location=locations/us

Mengekspor temuan dari Security Command Center ke BigQuery

Untuk mengekspor temuan, aktifkan Security Command Center API terlebih dahulu.

Mengaktifkan Security Command Center API

Untuk mengaktifkan Security Command Center API:

  1. Buka halaman API Library di Konsol Google Cloud.

    Buka API Library

  2. Pilih project tempat Anda ingin mengaktifkan Security Command Center API.

  3. Di kotak Search, masukkan Security Command Center, lalu klik Security Command Center di hasil penelusuran.

  4. Pada halaman API yang muncul, klik Enable.

Security Command Center API diaktifkan untuk project Anda. Selanjutnya, Anda akan menggunakan gcloud CLI untuk membuat konfigurasi ekspor baru ke BigQuery.

Memberikan akses perimeter di Kontrol Layanan VPC

Jika Anda menggunakan Kontrol Layanan VPC dan set data BigQuery Anda adalah bagian dari project di dalam perimeter layanan, Anda harus memberikan akses ke project agar dapat mengekspor temuan.

Untuk memberikan akses ke project, buat aturan masuk dan keluar untuk akun utama dan project tempat Anda mengekspor temuannya. Aturan tersebut mengizinkan akses ke resource yang dilindungi dan memungkinkan BigQuery memverifikasi bahwa pengguna memiliki izin setIamPolicy di set data BigQuery.

Sebelum menyiapkan ekspor baru ke BigQuery

  1. Buka halaman Kontrol Layanan VPC di Konsol Google Cloud.

    Buka Kontrol Layanan VPC

  2. Jika perlu, pilih organisasi Anda.

  3. Klik nama perimeter layanan yang ingin Anda ubah.

    Untuk menemukan perimeter layanan yang perlu diubah, Anda dapat memeriksa log untuk menemukan entri yang menunjukkan pelanggaran RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER. Dalam entri tersebut, periksa kolom servicePerimeterName: accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME.

  4. Klik Edit Perimeter.

  5. Di menu navigasi, klik Ingress Policy.

  6. Untuk mengonfigurasi aturan ingress bagi pengguna atau akun layanan, gunakan parameter berikut:

    • Atribut FROM klien API:
      • Di menu drop-down Identities, pilih Selected identities.'
      • Di menu drop-down Sumber, pilih Semua Sumber.
      • Klik Select, lalu masukkan akun utama yang digunakan untuk memanggil Security Command Center API.
    • Atribut TO layanan/resource Google Cloud:
      • Di menu drop-down Project, pilih Selected projects.
      • Klik Select, lalu masukkan project yang berisi set data BigQuery .
      • Di menu drop-down Layanan, pilih Layanan yang dipilih, lalu pilih BigQuery API.
      • Di menu drop-down Metode, pilih Semua tindakan.
  7. Klik Save.

  8. Pada menu navigasi, klik Kebijakan Keluar.

  9. Klik Add Rule.

  10. Untuk mengonfigurasi aturan traffic keluar untuk akun pengguna atau layanan, masukkan parameter berikut:

    • Atribut FROM klien API:
      • Di menu drop-down Identities, pilih Selected identities.
      • Klik Select, lalu masukkan akun utama yang digunakan untuk memanggil Security Command Center API.
    • Atribut TO layanan/resource Google Cloud:
      • Di menu drop-down Project, pilih All projects.
      • Di menu drop-down Layanan, pilih Layanan yang dipilih, lalu pilih BigQuery API.
      • Di menu drop-down Metode, pilih Semua tindakan.
  11. Klik Save.

Menyiapkan ekspor baru ke BigQuery

Pada langkah ini, Anda akan membuat konfigurasi ekspor untuk mengekspor temuan ke instance BigQuery. Anda dapat membuat konfigurasi ekspor di level project, folder, atau organisasi. Misalnya, jika Anda ingin mengekspor temuan dari project ke set data BigQuery, Anda harus membuat konfigurasi ekspor pada level project untuk mengekspor hanya temuan yang terkait dengan project tersebut. Atau, Anda dapat menentukan filter untuk mengekspor temuan tertentu saja.

Pastikan untuk membuat konfigurasi ekspor pada tingkat yang sesuai. Misalnya, jika Anda membuat konfigurasi ekspor di Project B untuk mengekspor temuan dari Project A dan menentukan filter seperti resource.project_display_name: project-a-id, konfigurasi tersebut tidak akan mengekspor temuan apa pun.

Anda dapat membuat maksimum 500 konfigurasi ekspor ke BigQuery untuk organisasi Anda. Anda dapat menggunakan set data yang sama untuk beberapa konfigurasi ekspor. Jika Anda menggunakan {i>dataset<i} yang sama, semua pembaruan akan dilakukan pada tabel temuan yang sama.

Saat Anda membuat konfigurasi ekspor pertama, akun layanan akan otomatis dibuat untuk Anda. Akun layanan ini diperlukan untuk membuat atau memperbarui tabel temuan dalam set data dan untuk mengekspor temuan ke tabel. URL tersebut memiliki format service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gservicaccount.com dan diberi peran BigQuery Data Editor (roles/bigquery.dataEditor) di level set data BigQuery.

gcloud

  1. Buka Konsol Google Cloud.

    Buka konsol Google Cloud.

  2. Pilih project tempat Anda mengaktifkan Security Command Center API.

  3. Klik Activate Cloud Shell.

  4. Untuk membuat konfigurasi ekspor baru, jalankan perintah berikut:

    gcloud scc bqexports create BIG_QUERY_EXPORT \
      --dataset=DATASET_NAME \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--description=DESCRIPTION] \
      [--filter=FILTER]
    

    Ganti kode berikut:

    • BIG_QUERY_EXPORT yang memiliki nama untuk konfigurasi ekspor ini.

    • DATASET_NAME dengan nama set data BigQuery—misalnya, projects/<PROJECT_ID>/datasets/<DATASET_ID>.

    • FOLDER_ID, ORGANIZATION_ID, atau PROJECT_ID dengan nama folder, organisasi, atau project Anda. Anda harus menetapkan salah satu opsi ini. Untuk folder dan organisasi, namanya adalah ID folder atau ID organisasi. Untuk project, namanya adalah nomor project atau ID project.

    • LOCATION: Jika residensi data diaktifkan, tentukan lokasi Security Command Center untuk membuat BigQuery Export. Konfigurasi BigQuery Export disimpan di lokasi ini. Hanya temuan dari lokasi ini yang disertakan dalam ekspor.

      Jika residensi data tidak diaktifkan, penetapan flag --location akan membuat BigQuery Export menggunakan Security Command Center API v2 dan satu-satunya nilai yang valid untuk flag tersebut adalah global.

    • DESCRIPTION dengan deskripsi konfigurasi ekspor yang dapat dibaca manusia. Variabel ini bersifat opsional.

    • FILTER dengan ekspresi yang menentukan temuan apa yang akan disertakan dalam ekspor. Misalnya, jika Anda ingin memfilter pada kategori XSS_SCRIPTING, ketik "category=\"XSS_SCRIPTING\". Variabel ini bersifat opsional.

Java

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.


import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.CreateBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;
import java.util.UUID;

public class CreateBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // filter: Expression that defines the filter to apply across create/update events of findings.
    String filter =
        "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
            + "category=\"Persistence: IAM Anomalous Grant\" AND "
            + "-resource.type:\"compute\"";

    // bigQueryDatasetId: The BigQuery dataset to write findings' updates to.
    String bigQueryDatasetId = "your-bigquery-dataset-id";

    // bigQueryExportId: Unique identifier provided by the client.
    // For more info, see:
    // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    String bigQueryExportId = "default-" + UUID.randomUUID().toString().split("-")[0];

    createBigQueryExport(parent, filter, bigQueryDatasetId, bigQueryExportId);
  }

  // Create export configuration to export findings from a project to a BigQuery dataset.
  // Optionally specify filter to export certain findings only.
  public static void createBigQueryExport(
      String parent, String filter, String bigQueryDatasetId, String bigQueryExportId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      // Create the BigQuery export configuration.
      BigQueryExport bigQueryExport =
          BigQueryExport.newBuilder()
              .setDescription(
                  "Export low and medium findings if the compute resource "
                      + "has an IAM anomalous grant")
              .setFilter(filter)
              .setDataset(String.format("%s/datasets/%s", parent, bigQueryDatasetId))
              .build();

      CreateBigQueryExportRequest bigQueryExportRequest =
          CreateBigQueryExportRequest.newBuilder()
              .setParent(parent)
              .setBigQueryExport(bigQueryExport)
              .setBigQueryExportId(bigQueryExportId)
              .build();

      // Create the export request.
      BigQueryExport response = client.createBigQueryExport(bigQueryExportRequest);

      System.out.printf("BigQuery export request created successfully: %s\n", response.getName());
    }
  }
}

Python

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.



def create_bigquery_export(
    parent: str, export_filter: str, bigquery_dataset_id: str, bigquery_export_id: str
):
    from google.cloud import securitycenter

    """
    Create export configuration to export findings from a project to a BigQuery dataset.
    Optionally specify filter to export certain findings only.

    Args:
        parent: Use any one of the following resource paths:
             - organizations/{organization_id}
             - folders/{folder_id}
             - projects/{project_id}
        export_filter: Expression that defines the filter to apply across create/update events of findings.
        bigquery_dataset_id: The BigQuery dataset to write findings' updates to.
        bigquery_export_id: Unique identifier provided by the client.
             - example id: f"default-{str(uuid.uuid4()).split('-')[0]}"
        For more info, see:
        https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    """
    client = securitycenter.SecurityCenterClient()

    # Create the BigQuery export configuration.
    bigquery_export = securitycenter.BigQueryExport()
    bigquery_export.description = "Export low and medium findings if the compute resource has an IAM anomalous grant"
    bigquery_export.filter = export_filter
    bigquery_export.dataset = f"{parent}/datasets/{bigquery_dataset_id}"

    request = securitycenter.CreateBigQueryExportRequest()
    request.parent = parent
    request.big_query_export = bigquery_export
    request.big_query_export_id = bigquery_export_id

    # Create the export request.
    response = client.create_big_query_export(request)

    print(f"BigQuery export request created successfully: {response.name}\n")

Anda akan melihat temuan di set data BigQuery dalam waktu sekitar 15 menit setelah membuat konfigurasi ekspor. Setelah tabel BigQuery dibuat, temuan baru dan yang diperbarui yang cocok dengan filter dan cakupan Anda akan muncul di tabel hampir secara real time.

Untuk meninjau temuan Anda, lihat Meninjau temuan.

Buat aturan masuk untuk ekspor baru ke BigQuery

Jika Anda menggunakan Kontrol Layanan VPC dan set data BigQuery Anda adalah bagian dari project di dalam perimeter layanan, Anda harus membuat aturan masuk untuk ekspor baru ke BigQuery.

  1. Buka kembali perimeter layanan dari Siapkan ekspor baru ke BigQuery.

    Buka Kontrol Layanan VPC

  2. Klik Kebijakan Ingress.

  3. Klik Add Rule.

  4. Guna mengonfigurasi aturan ingress untuk konfigurasi ekspor, masukkan parameter berikut:

    • Atribut FROM klien API:
      • Di menu drop-down Sumber, pilih Semua Sumber.
      • Di menu drop-down Identities, pilih Selected identities.
      • Klik Select, lalu masukkan nama akun layanan konfigurasi BigQuery Export: service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
    • KE atribut layanan/resource GCP:
      • Di menu drop-down Project, pilih Selected projects.
      • Klik Select, lalu pilih project yang berisi set data BigQuery.
      • Di menu drop-down Layanan, pilih Layanan yang dipilih, lalu pilih BigQuery API.
      • Di menu drop-down Metode, pilih Semua tindakan.
  5. Di menu navigasi, klik Simpan.

Project, pengguna, dan akun layanan yang dipilih kini dapat mengakses resource yang dilindungi dan mengekspor temuan.

Jika Anda mengikuti semua langkah dalam panduan ini dan ekspor berfungsi dengan baik, Anda kini dapat menghapus hal berikut:

  • Aturan masuk untuk akun utama
  • Aturan keluar untuk akun utama

Aturan tersebut hanya diperlukan untuk mengonfigurasi konfigurasi ekspor. Namun, agar konfigurasi ekspor terus berfungsi, Anda harus mempertahankan aturan ingress yang Anda buat di atas, yang memungkinkan Security Command Center mengekspor temuan ke set data BigQuery Anda di balik perimeter layanan.

Melihat detail konfigurasi ekspor

gcloud

  1. Buka Konsol Google Cloud.

    Buka konsol Google Cloud.

  2. Pilih project tempat Anda mengaktifkan Security Command Center API.

  3. Klik Activate Cloud Shell.

  4. Untuk memverifikasi detail konfigurasi ekspor, jalankan perintah berikut:

    gcloud scc bqexports get BIG_QUERY_EXPORT \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION
    

    Ganti kode berikut:

    • BIG_QUERY_EXPORT dengan nama untuk konfigurasi ekspor ini.

    • FOLDER_ID, ORGANIZATION_ID, atau PROJECT_ID dengan nama folder, organisasi, atau project Anda. Anda harus menetapkan salah satu opsi ini. Untuk folder dan organisasi, namanya adalah ID folder atau ID organisasi. Untuk project, namanya adalah nomor project atau ID project.

    • LOCATION: diperlukan jika residensi data diaktifkan atau resource BigQueryExport dibuat menggunakan API v2.

      Jika residensi data diaktifkan, tentukan lokasi Security Command Center tempat ekspor disimpan.

      Jika residensi data tidak diaktifkan, sertakan /locations/LOCATION hanya jika resource BigQueryExport dibuat menggunakan Security Command Center API v2. Dalam hal ini, satu-satunya lokasi yang valid adalah global.

    Misalnya, untuk mendapatkan konfigurasi ekspor bernama my-bq-export dari organisasi dengan ID organisasi yang ditetapkan ke 123, jalankan:

    gcloud scc bqexports get my-bq-export --organization=123
    

Java

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.


import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.GetBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class GetBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // bigQueryExportId: Unique identifier that is used to identify the export.
    String bigQueryExportId = "export-id";

    getBigQueryExport(parent, bigQueryExportId);
  }

  // Retrieve an existing BigQuery export.
  public static void getBigQueryExport(String parent, String bigQueryExportId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      GetBigQueryExportRequest bigQueryExportRequest =
          GetBigQueryExportRequest.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .build();

      BigQueryExport response = client.getBigQueryExport(bigQueryExportRequest);
      System.out.printf("Retrieved the BigQuery export: %s", response.getName());
    }
  }
}

Python

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.

def get_bigquery_export(parent: str, bigquery_export_id: str):
    from google.cloud import securitycenter

    """
    Retrieve an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        bigquery_export_id: Unique identifier that is used to identify the export.
    """

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.GetBigQueryExportRequest()
    request.name = f"{parent}/bigQueryExports/{bigquery_export_id}"

    response = client.get_big_query_export(request)
    print(f"Retrieved the BigQuery export: {response.name}")

Memperbarui konfigurasi ekspor

Jika perlu, Anda dapat mengubah filter, set data, dan deskripsi konfigurasi ekspor yang ada. Anda tidak dapat mengubah nama konfigurasi ekspor.

gcloud

  1. Buka Konsol Google Cloud.

    Buka konsol Google Cloud.

  2. Pilih project tempat Anda mengaktifkan Security Command Center API.

  3. Klik Activate Cloud Shell.

  4. Untuk memperbarui konfigurasi ekspor, jalankan perintah berikut:

    gcloud scc bqexports update BIG_QUERY_EXPORT \
      --dataset=DATASET_NAME \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--description=DESCRIPTION] \
      [--filter=FILTER]
    

    Ganti kode berikut:

    • BIG_QUERY_EXPORT dengan nama untuk konfigurasi ekspor yang ingin Anda perbarui.

    • DATASET_NAME dengan nama set data BigQuery—misalnya, projects/<PROJECT_ID>/datasets/<DATASET_ID>.

    • FOLDER_ID, ORGANIZATION_ID, atau PROJECT_ID dengan nama folder, organisasi, atau project Anda. Anda harus menetapkan salah satu opsi ini. Untuk folder dan organisasi, namanya adalah ID folder atau ID organisasi. Untuk project, namanya adalah nomor project atau ID project.

    • LOCATION: diperlukan jika residensi data diaktifkan atau resource BigQueryExport dibuat menggunakan API v2.

      Jika residensi data diaktifkan, tentukan lokasi Security Command Center tempat ekspor disimpan.

      Jika residensi data tidak diaktifkan, sertakan /locations/LOCATION dalam nama lengkap atau tentukan flag --location hanya jika resource BigQueryExport dibuat menggunakan Security Command Center API v2. Dalam hal ini, satu-satunya lokasi yang valid adalah global.

    • DESCRIPTION dengan deskripsi konfigurasi ekspor yang dapat dibaca manusia. Variabel ini bersifat opsional.

    • FILTER dengan ekspresi yang menentukan temuan apa yang akan disertakan dalam ekspor. Misalnya, jika Anda ingin memfilter pada kategori XSS_SCRIPTING, ketik "category=\"XSS_SCRIPTING\". Variabel ini bersifat opsional.

Java

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.


import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // filter: Expression that defines the filter to apply across create/update events of findings.
    String filter =
        "severity=\"LOW\" OR severity=\"MEDIUM\" AND "
            + "category=\"Persistence: IAM Anomalous Grant\" AND "
            + "-resource.type:\"compute\"";

    // bigQueryExportId: Unique identifier provided by the client.
    // For more info, see:
    // https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    String bigQueryExportId = "big-query-export-id";

    updateBigQueryExport(parent, filter, bigQueryExportId);
  }

  // Updates an existing BigQuery export.
  public static void updateBigQueryExport(String parent, String filter, String bigQueryExportId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      //  Set the new values for export configuration.
      BigQueryExport bigQueryExport =
          BigQueryExport.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .setFilter(filter)
              .build();

      UpdateBigQueryExportRequest request =
          UpdateBigQueryExportRequest.newBuilder()
              .setBigQueryExport(bigQueryExport)
              // Set the update mask to specify which properties should be updated.
              // If empty, all mutable fields will be updated.
              // For more info on constructing field mask path, see the proto or:
              // https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.FieldMask
              .setUpdateMask(FieldMask.newBuilder().addPaths("filter").build())
              .build();

      BigQueryExport response = client.updateBigQueryExport(request);
      if (!response.getFilter().equalsIgnoreCase(filter)) {
        System.out.println("Failed to update BigQueryExport!");
        return;
      }
      System.out.println("BigQueryExport updated successfully!");
    }
  }
}

Python

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.

def update_bigquery_export(parent: str, export_filter: str, bigquery_export_id: str):
    """
    Updates an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        export_filter: Expression that defines the filter to apply across create/update events of findings.
        bigquery_export_id: Unique identifier provided by the client.
        For more info, see:
        https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query#export_findings_from_to
    """
    from google.cloud import securitycenter
    from google.protobuf import field_mask_pb2

    client = securitycenter.SecurityCenterClient()

    # Set the new values for export configuration.
    bigquery_export = securitycenter.BigQueryExport()
    bigquery_export.name = f"{parent}/bigQueryExports/{bigquery_export_id}"
    bigquery_export.filter = export_filter

    # Field mask to only update the export filter.
    # Set the update mask to specify which properties should be updated.
    # If empty, all mutable fields will be updated.
    # For more info on constructing field mask path, see the proto or:
    # https://googleapis.dev/python/protobuf/latest/google/protobuf/field_mask_pb2.html
    field_mask = field_mask_pb2.FieldMask(paths=["filter"])

    request = securitycenter.UpdateBigQueryExportRequest()
    request.big_query_export = bigquery_export
    request.update_mask = field_mask

    response = client.update_big_query_export(request)

    if response.filter != export_filter:
        print("Failed to update BigQueryExport!")
        return
    print("BigQueryExport updated successfully!")

Lihat semua konfigurasi ekspor

Anda dapat melihat semua konfigurasi ekspor dalam organisasi, folder, atau project Anda.

gcloud

  1. Buka Konsol Google Cloud.

    Buka konsol Google Cloud.

  2. Pilih project tempat Anda mengaktifkan Security Command Center API.

  3. Klik Activate Cloud Shell.

  4. Untuk menampilkan konfigurasi ekspor, jalankan perintah berikut:

    gcloud scc bqexports list \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION \
      [--limit=LIMIT] \
      [--page-size=PAGE_SIZE]
    

    Ganti kode berikut:

    • FOLDER_ID, ORGANIZATION_ID, atau PROJECT_ID dengan nama folder, organisasi, atau project Anda. Anda harus menetapkan salah satu opsi ini. Untuk folder dan organisasi, namanya adalah ID folder atau ID organisasi. Untuk project, namanya adalah nomor project atau ID project.

      Jika Anda menentukan ID organisasi, daftar akan mencakup semua konfigurasi ekspor yang ditentukan dalam organisasi tersebut, termasuk konfigurasi di tingkat folder dan project. Jika Anda menentukan ID folder, daftar tersebut akan menyertakan semua konfigurasi ekspor yang ditentukan di level folder dan dalam project di dalam folder tersebut. Jika Anda menentukan nomor project atau ID project, daftar akan menyertakan semua konfigurasi ekspor hanya untuk project tersebut.

    • LOCATION: diperlukan jika residensi data diaktifkan atau resource BigQueryExport dibuat menggunakan API v2.

      Jika residensi data diaktifkan, tentukan lokasi Security Command Center tempat ekspor disimpan.

      Jika residensi data tidak diaktifkan, termasuk flag --location hanya akan mencantumkan resource BigQueryExport yang dibuat menggunakan Security Command Center API v2 dan satu-satunya lokasi yang valid adalah global.

    • LIMIT dengan jumlah konfigurasi ekspor yang ingin Anda lihat. Variabel ini bersifat opsional.

    • PAGE_SIZE dengan nilai ukuran halaman. Variabel ini bersifat opsional.

Java

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.


import com.google.cloud.securitycenter.v1.BigQueryExport;
import com.google.cloud.securitycenter.v1.ListBigQueryExportsRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import com.google.cloud.securitycenter.v1.SecurityCenterClient.ListBigQueryExportsPagedResponse;
import java.io.IOException;

public class ListBigQueryExports {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: The parent, which owns the collection of BigQuery exports.
    //         Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    listBigQueryExports(parent);
  }

  // List BigQuery exports in the given parent.
  public static void listBigQueryExports(String parent) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      ListBigQueryExportsRequest request =
          ListBigQueryExportsRequest.newBuilder().setParent(parent).build();

      ListBigQueryExportsPagedResponse response = client.listBigQueryExports(request);

      System.out.println("Listing BigQuery exports:");
      for (BigQueryExport bigQueryExport : response.iterateAll()) {
        System.out.println(bigQueryExport.getName());
      }
    }
  }
}

Python

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.

def list_bigquery_exports(parent: str):
    from google.cloud import securitycenter

    """
    List BigQuery exports in the given parent.
    Args:
         parent: The parent which owns the collection of BigQuery exports.
             Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
    """

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.ListBigQueryExportsRequest()
    request.parent = parent

    response = client.list_big_query_exports(request)

    print("Listing BigQuery exports:")
    for bigquery_export in response:
        print(bigquery_export.name)

Menghapus konfigurasi ekspor

Jika tidak lagi memerlukan konfigurasi ekspor, Anda dapat menghapusnya.

gcloud

  1. Buka Konsol Google Cloud.

    Buka konsol Google Cloud.

  2. Pilih project tempat Anda mengaktifkan Security Command Center API.

  3. Klik Activate Cloud Shell.

  4. Untuk menghapus konfigurasi ekspor, jalankan perintah berikut:

    gcloud scc bqexports delete BIG_QUERY_EXPORT \
      --folder=FOLDER_ID | --organization=ORGANIZATION_ID | --project=PROJECT_ID \
      --location=LOCATION
    

    Ganti kode berikut:

    • BIG_QUERY_EXPORT dengan nama untuk konfigurasi ekspor yang ingin Anda hapus.

    • FOLDER_ID, ORGANIZATION_ID, atau PROJECT_ID dengan nama folder, organisasi, atau project Anda. Anda harus menetapkan salah satu opsi ini. Untuk folder dan organisasi, namanya adalah ID folder atau ID organisasi. Untuk project, namanya adalah nomor project atau ID project.

    • LOCATION: diperlukan jika residensi data diaktifkan atau resource BigQueryExport dibuat menggunakan API v2.

      Jika residensi data diaktifkan, tentukan lokasi Security Command Center tempat ekspor disimpan.

      Jika residensi data tidak diaktifkan, sertakan /locations/LOCATION hanya jika resource BigQueryExport dibuat menggunakan Security Command Center API v2. Dalam hal ini, satu-satunya lokasi yang valid adalah global.

    Misalnya, untuk menghapus konfigurasi ekspor bernama my-bq-export dari organisasi dengan ID organisasi yang ditetapkan ke 123, jalankan:

    gcloud scc bqexports delete my-bq-export --organization=123
    

Java

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.


import com.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest;
import com.google.cloud.securitycenter.v1.SecurityCenterClient;
import java.io.IOException;

public class DeleteBigQueryExport {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Modify the following variable values.

    // parent: Use any one of the following resource paths:
    //              - organizations/{organization_id}
    //              - folders/{folder_id}
    //              - projects/{project_id}
    String parent = String.format("projects/%s", "your-google-cloud-project-id");

    // bigQueryExportId: Unique identifier that is used to identify the export.
    String bigQueryExportId = "export-id";

    deleteBigQueryExport(parent, bigQueryExportId);
  }

  // Delete an existing BigQuery export.
  public static void deleteBigQueryExport(String parent, String bigQueryExportId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      DeleteBigQueryExportRequest bigQueryExportRequest =
          DeleteBigQueryExportRequest.newBuilder()
              .setName(String.format("%s/bigQueryExports/%s", parent, bigQueryExportId))
              .build();

      client.deleteBigQueryExport(bigQueryExportRequest);
      System.out.printf("BigQuery export request deleted successfully: %s", bigQueryExportId);
    }
  }
}

Python

Untuk melakukan autentikasi ke Security Command Center, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh berikut menggunakan API v1. Guna memodifikasi contoh untuk v2, ganti v1 dengan v2 dan tambahkan /locations/LOCATION ke nama resource.

Untuk sebagian besar resource, tambahkan /locations/LOCATION ke nama resource setelah /PARENT/PARENT_ID, dengan PARENT adalah organizations, folders, atau projects.

Untuk temuan, tambahkan /locations/LOCATION ke nama resource setelah /sources/SOURCE_ID, dengan SOURCE_ID adalah ID layanan Security Command Center yang mengeluarkan temuan tersebut.

def delete_bigquery_export(parent: str, bigquery_export_id: str):
    """
    Delete an existing BigQuery export.
    Args:
        parent: Use any one of the following resource paths:
                 - organizations/{organization_id}
                 - folders/{folder_id}
                 - projects/{project_id}
        bigquery_export_id: Unique identifier that is used to identify the export.
    """
    from google.cloud import securitycenter

    client = securitycenter.SecurityCenterClient()

    request = securitycenter.DeleteBigQueryExportRequest()
    request.name = f"{parent}/bigQueryExports/{bigquery_export_id}"

    client.delete_big_query_export(request)
    print(f"BigQuery export request deleted successfully: {bigquery_export_id}")

Setelah menghapus konfigurasi ekspor, Anda dapat menghapus data dari Looker Studio. Untuk mengetahui informasi selengkapnya, lihat Menghapus, menghapus, dan memulihkan sumber data.

Meninjau temuan di BigQuery

Setelah Anda membuat konfigurasi ekspor, temuan baru akan diekspor ke set data BigQuery dalam project yang Anda tentukan.

Untuk meninjau temuan di BigQuery, lakukan langkah berikut:

  1. Buka project di BigQuery.

    Buka BigQuery

  2. Jika Anda tidak berada di project yang tepat, ikuti langkah-langkah berikut:

    1. Pada toolbar, klik pemilih project .
    2. Di samping Pilih dari, pilih organisasi Anda.
    3. Dalam daftar project, pilih project Anda.
  3. Di panel Explorer, luaskan node untuk project Anda.

  4. Perluas set data Anda.

  5. Klik tabel temuan.

  6. Pada tab yang terbuka, klik Preview. Contoh set data akan ditampilkan.

Kueri yang berguna

Bagian ini memberikan contoh kueri untuk menganalisis data temuan. Pada contoh berikut, ganti DATASET dengan nama yang ditetapkan untuk set data Anda dan PROJECT_ID dengan nama project untuk set data Anda.

Untuk memecahkan masalah error yang Anda alami, lihat Pesan error.

Jumlah temuan baru yang dibuat dan diperbarui setiap hari

SELECT
    FORMAT_DATETIME("%Y-%m-%d", event_time) AS date,
    count(DISTINCT finding_id)
FROM `PROJECT_ID.DATASET.findings`
GROUP BY date
ORDER BY date DESC

Catatan temuan terbaru untuk setiap temuan

SELECT
    * EXCEPT(row)
FROM (
    SELECT *, ROW_NUMBER() OVER(
        PARTITION BY finding_id
        ORDER BY event_time DESC, finding.mute_update_time DESC
    ) AS row
    FROM `PROJECT_ID.DATASET.findings`
)
WHERE row = 1

Temuan saat ini yang aktif, diurutkan menurut waktu

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
WHERE finding.state = "ACTIVE"
ORDER BY event_time DESC

Temuan saat ini yang ada dalam sebuah project

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding, resource
FROM latestFindings
WHERE resource.project_display_name = 'PROJECT'

Ganti PROJECT dengan nama project.

Temuan saat ini yang ada di folder

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding, resource
FROM latestFindings
CROSS JOIN UNNEST(resource.folders) AS folder
WHERE folder.resource_folder_display_name = 'FOLDER'

Ganti FOLDER dengan nama folder.

Temuan terbaru dari pemindai Logging Scanner

WITH latestFindings AS (
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
CROSS JOIN UNNEST(finding.source_properties) AS source_property
WHERE source_property.key = "ScannerName"
  AND source_property.value = "LOGGING_SCANNER"

Temuan aktif saat ini dari jenis Persistence: IAM Anomalous Grant

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT finding_id, event_time, finding
FROM latestFindings
WHERE finding.state = "ACTIVE"
  AND finding.category = "Persistence: IAM Anomalous Grant"

Menghubungkan temuan aktif dari jenis tertentu dengan Cloud Audit Logs

Contoh kueri ini membantu menyelidiki temuan pemberian IAM yang tidak wajar dari Event Threat Detection menggunakan Cloud Audit Logs dengan menampilkan urutan pemberi hibah tindakan Aktivitas Admin selama jangka waktu sebelumnya dan berhasil menyelesaikan tindakan pemberian IAM yang tidak wajar. Kueri berikut menghubungkan log Aktivitas Admin antara 1 jam sebelum dan 1 jam setelah stempel waktu temuan.

WITH latestFindings AS(
    SELECT * EXCEPT(row)
    FROM (
        SELECT *, ROW_NUMBER() OVER(
            PARTITION BY finding_id
            ORDER BY event_time DESC, finding.mute_update_time DESC
        ) AS row
        FROM `PROJECT_ID.DATASET.findings`
    ) WHERE row = 1
)
SELECT
  finding_id,
  ANY_VALUE(event_time) as event_time,
  ANY_VALUE(finding.access.principal_email) as grantor,
  JSON_VALUE_ARRAY(ANY_VALUE(finding.source_properties_json), '$.properties.sensitiveRoleGrant.members') as grantees,
  ARRAY_AGG(
    STRUCT(
      timestamp,
      IF(timestamp < event_time, 'before', 'after') as timeline,
      protopayload_auditlog.methodName,
      protopayload_auditlog.resourceName,
      protopayload_auditlog.serviceName
    )
    ORDER BY timestamp ASC
  ) AS recent_activity
FROM (
  SELECT
    f.*,
    a.*,
  FROM latestFindings AS f
  LEFT JOIN `PROJECT_ID.DATASET.cloudaudit_googleapis_com_activity` AS a
  ON a.protopayload_auditlog.authenticationInfo.principalEmail = f.finding.access.principal_email
  WHERE f.finding.state = "ACTIVE"
    AND f.finding.category = "Persistence: IAM Anomalous Grant"
    AND a.timestamp >= TIMESTAMP_SUB(f.event_time, INTERVAL 1 HOUR)
    AND a.timestamp <= TIMESTAMP_ADD(f.event_time, INTERVAL 1 HOUR)
  )
GROUP BY
  finding_id
ORDER BY
  event_time DESC

Outputnya mirip dengan hal berikut ini:

Screenshot hasil kueri yang menunjukkan temuan dengan log audit yang berkorelasi

Membuat diagram di Looker Studio

Looker Studio memungkinkan Anda membuat dasbor dan laporan interaktif.

Secara umum, Anda dikenai biaya penggunaan BigQuery saat mengakses BigQuery melalui Looker Studio. Untuk informasi selengkapnya, lihat Memvisualisasikan data BigQuery menggunakan Looker Studio.

Untuk membuat diagram yang memvisualisasikan data temuan berdasarkan tingkat keparahan dan kategori, lakukan hal berikut:

  1. Buka Looker Studio dan login.
  2. Jika diminta, berikan informasi tambahan dan siapkan preferensi lainnya. Baca persyaratan layanan dan, jika Anda puas, lanjutkan.
  3. Klik Laporan Kosong.
  4. Pada tab Hubungkan ke data, klik kartu BigQuery.
  5. Jika diminta, izinkan Looker Studio untuk mengakses project BigQuery.
  6. Hubungkan ke data temuan Anda:
    1. Untuk Project, pilih project tersebut untuk set data Anda. Atau, di tab My projects, masukkan project ID Anda untuk menelusurinya.
    2. Untuk Dataset, klik nama set data Anda.
    3. Untuk Table, klik findings.
    4. Klik Tambahkan.
    5. Pada dialog, klik Tambahkan ke laporan.
  7. Setelah laporan ditambahkan, klik Tambahkan diagram.
  8. Klik Stacked column chart, lalu klik area tempat Anda ingin menempatkannya.

    Screenshot pilihan diagram

  9. Di panel Chart > Bar, pada tab Data, tetapkan kolom berikut:

    1. Di kolom Dimensi, pilih finding.severity.
    2. Di kolom Dimensi Perincian, pilih finding.category.
    Screenshot diagram temuan yang dikategorikan berdasarkan tingkat keparahan dan disubkategorikan berdasarkan kategori

Laporan diperbarui untuk menampilkan beberapa kolom dengan temuan yang dipisahkan berdasarkan tingkat keparahan dan kategori.

Langkah selanjutnya

Pelajari cara menjalankan kueri di BigQuery.