Mengumpulkan log Snowflake

Didukung di:

Dokumen ini menjelaskan cara menyerap log Snowflake ke Google Security Operations. Anda dapat mengonfigurasi penyerapan menggunakan dua metode: Cloud Storage V2 (direkomendasikan) atau Amazon S3 V2. Kedua metode menggunakan mekanisme yang sama di sisi Snowflake: tugas terjadwal membongkar data penggunaan akun ke tahap eksternal, dan Google SecOps membaca file yang diekspor dengan feed.

Snowflake adalah platform data cloud yang menyimpan aktivitas akun dalam skema SNOWFLAKE.ACCOUNT_USAGE. Tampilan LOGIN_HISTORY mencatat upaya autentikasi, termasuk alamat IP klien, faktor autentikasi, dan alasan kegagalan. Tampilan QUERY_HISTORY mencatat setiap pernyataan yang dijalankan di akun, termasuk pengguna, peran, gudang, dan objek yang diakses.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Akses ke Snowflake dengan peran yang dapat membuat integrasi penyimpanan (hanya ACCOUNTADMIN yang memiliki hak istimewa ini secara default), database, warehouse, tahap, dan tugas
  • Untuk Cloud Storage V2: a Google Cloud project dengan Cloud Storage API yang diaktifkan, dan izin untuk membuat bucket, membuat peran Identity and Access Management (IAM), dan mengelola kebijakan IAM bucket
  • Untuk Amazon S3 V2: akses istimewa ke AWS untuk membuat bucket S3, kebijakan IAM, peran IAM, dan pengguna IAM

Memberikan akses ke data penggunaan akun Snowflake

Tampilan SNOWFLAKE.ACCOUNT_USAGE hanya dapat dibaca oleh ACCOUNTADMIN hingga akses diberikan secara eksplisit. Buat peran khusus untuk ekspor dan berikan dua peran database yang mencakup tampilan yang diekspor dokumen ini.

  1. Login ke Snowflake dan buka worksheet.
  2. Buat peran ekspor dan berikan akses baca ke tampilan penggunaan akun sebagai berikut:

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE IF NOT EXISTS SECOPS_EXPORTER;
    
    GRANT DATABASE ROLE SNOWFLAKE.SECURITY_VIEWER TO ROLE SECOPS_EXPORTER;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE SECOPS_EXPORTER;
    
  3. Buat database, skema, dan data warehouse yang digunakan ekspor, lalu berikan akses ke peran tersebut sebagai berikut:

    CREATE DATABASE IF NOT EXISTS SECOPS_EXPORT;
    CREATE SCHEMA IF NOT EXISTS SECOPS_EXPORT.ACTIVITY;
    
    CREATE WAREHOUSE IF NOT EXISTS SECOPS_EXPORT_WH
        WITH WAREHOUSE_SIZE = 'XSMALL'
        AUTO_SUSPEND = 60
        AUTO_RESUME = TRUE
        INITIALLY_SUSPENDED = TRUE;
    
    GRANT USAGE ON DATABASE SECOPS_EXPORT TO ROLE SECOPS_EXPORTER;
    GRANT USAGE, CREATE STAGE, CREATE TABLE, CREATE PROCEDURE, CREATE TASK, CREATE FILE FORMAT
        ON SCHEMA SECOPS_EXPORT.ACTIVITY TO ROLE SECOPS_EXPORTER;
    GRANT USAGE, OPERATE ON WAREHOUSE SECOPS_EXPORT_WH TO ROLE SECOPS_EXPORTER;
    GRANT EXECUTE TASK ON ACCOUNT TO ROLE SECOPS_EXPORTER;
    GRANT ROLE SECOPS_EXPORTER TO USER <YOUR_USER>;
    
    • Ganti <YOUR_USER> dengan pengguna Snowflake yang memiliki ekspor.

Membuat bucket Cloud Storage

  1. Buka Google Cloud console.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, snowflake-activity-logs)
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region)
    Location Pilih lokasi (misalnya, us-central1)
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses)
    Kontrol akses Seragam (direkomendasikan)
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi
  6. Klik Create.

Membuat peran Cloud Storage kustom untuk Snowflake

  1. Di konsol Google Cloud , buka IAM & Admin > Roles.
  2. Klik Buat peran.
  3. Berikan detail konfigurasi berikut:
    • Judul: Masukkan Snowflake Unload
    • ID: Masukkan snowflake_unload
    • Tahap peluncuran peran: Pilih Ketersediaan Umum
  4. Klik Add permissions dan tambahkan izin berikut:
    • storage.buckets.get
    • storage.objects.create
    • storage.objects.delete
    • storage.objects.list
  5. Klik Create.

Membuat integrasi penyimpanan Snowflake untuk Cloud Storage

  1. Di worksheet Snowflake, buat integrasi penyimpanan sebagai berikut:

    USE ROLE ACCOUNTADMIN;
    
    CREATE STORAGE INTEGRATION SECOPS_GCS_INT
        TYPE = EXTERNAL_STAGE
        STORAGE_PROVIDER = 'GCS'
        ENABLED = TRUE
        STORAGE_ALLOWED_LOCATIONS = ('gcs://snowflake-activity-logs/snowflake/');
    
    GRANT USAGE ON INTEGRATION SECOPS_GCS_INT TO ROLE SECOPS_EXPORTER;
    
    • Ganti snowflake-activity-logs dengan nama bucket Anda.
  2. Ambil akun layanan yang dibuat Snowflake untuk integrasi sebagai berikut:

    DESC STORAGE INTEGRATION SECOPS_GCS_INT;
    
  3. Salin nilai properti STORAGE_GCP_SERVICE_ACCOUNT. Nilai memiliki format berikut:

    service-account-id@project1-123456.iam.gserviceaccount.com
    

Memberi akun layanan Snowflake akses ke bucket

  1. Di konsol Google Cloud , buka Cloud Storage > Buckets.
  2. Klik bucket yang Anda buat (misalnya, snowflake-activity-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Tambahkan prinsipal: Tempelkan nilai STORAGE_GCP_SERVICE_ACCOUNT
    • Tetapkan peran: Pilih Snowflake Unload
  6. Klik Simpan.

Buat format file dan tahap eksternal

  1. Di worksheet Snowflake, buat format file dan tahap yang menulis ke bucket sebagai berikut:

    USE ROLE SECOPS_EXPORTER;
    USE SCHEMA SECOPS_EXPORT.ACTIVITY;
    
    CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT
        TYPE = JSON;
    
    CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE
        URL = 'gcs://snowflake-activity-logs/snowflake/'
        STORAGE_INTEGRATION = SECOPS_GCS_INT
        FILE_FORMAT = SECOPS_JSON_FORMAT;
    

Buat tabel status ekspor

Ekspor melacak seberapa jauh data telah dibaca di setiap tampilan. Tanpa tanda air tersebut, setiap proses akan mengekspor ulang seluruh tampilan dan peristiwa yang sama akan diproses lagi.

  1. Buat tabel status dan isi seperti berikut:

    CREATE TABLE IF NOT EXISTS SECOPS_EXPORT_STATE (
        VIEW_NAME STRING NOT NULL,
        LAST_EXPORTED TIMESTAMP_LTZ NOT NULL,
        WINDOW_END TIMESTAMP_LTZ
    );
    
    INSERT INTO SECOPS_EXPORT_STATE (VIEW_NAME, LAST_EXPORTED)
        SELECT 'LOGIN_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP())
        UNION ALL
        SELECT 'QUERY_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP());
    

Buat prosedur ekspor

  1. Buat prosedur yang membongkar kedua tampilan dan memajukan tanda air sebagai berikut:

    CREATE OR REPLACE PROCEDURE SECOPS_EXPORT_ACTIVITY()
    RETURNS STRING
    LANGUAGE SQL
    AS
    $$
    BEGIN
        UPDATE SECOPS_EXPORT_STATE
            SET WINDOW_END = DATEADD('hour', -3, CURRENT_TIMESTAMP());
    
        COPY INTO @SECOPS_EXPORT_STAGE/login_history/
            FROM (
                SELECT OBJECT_CONSTRUCT(
                    'application', 'snowflake',
                    'log_type', 'login_history',
                    'EVENT_TIMESTAMP', EVENT_TIMESTAMP,
                    'EVENT_TYPE', EVENT_TYPE,
                    'USER_NAME', USER_NAME,
                    'CLIENT_IP', CLIENT_IP,
                    'REPORTED_CLIENT_TYPE', REPORTED_CLIENT_TYPE,
                    'REPORTED_CLIENT_VERSION', REPORTED_CLIENT_VERSION,
                    'FIRST_AUTHENTICATION_FACTOR', FIRST_AUTHENTICATION_FACTOR,
                    'SECOND_AUTHENTICATION_FACTOR', SECOND_AUTHENTICATION_FACTOR,
                    'IS_SUCCESS', IS_SUCCESS,
                    'ERROR_CODE', ERROR_CODE,
                    'ERROR_MESSAGE', ERROR_MESSAGE)
                FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
                WHERE EVENT_TIMESTAMP > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY')
                    AND EVENT_TIMESTAMP <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY')
            )
            FILE_FORMAT = (TYPE = JSON)
            INCLUDE_QUERY_ID = TRUE;
    
        UPDATE SECOPS_EXPORT_STATE
            SET LAST_EXPORTED = WINDOW_END
            WHERE VIEW_NAME = 'LOGIN_HISTORY';
    
        COPY INTO @SECOPS_EXPORT_STAGE/query_history/
            FROM (
                SELECT OBJECT_CONSTRUCT(
                    'application', 'snowflake',
                    'log_type', 'query_history',
                    'START_TIME', START_TIME,
                    'END_TIME', END_TIME,
                    'QUERY_ID', QUERY_ID,
                    'QUERY_TYPE', QUERY_TYPE,
                    'EXECUTION_STATUS', EXECUTION_STATUS,
                    'ERROR_MESSAGE', ERROR_MESSAGE,
                    'USER_NAME', USER_NAME,
                    'ROLE_NAME', ROLE_NAME,
                    'WAREHOUSE_NAME', WAREHOUSE_NAME,
                    'WAREHOUSE_SIZE', WAREHOUSE_SIZE,
                    'DATABASE_NAME', DATABASE_NAME,
                    'SCHEMA_NAME', SCHEMA_NAME,
                    'SESSION_ID', SESSION_ID,
                    'BYTES_SCANNED', BYTES_SCANNED,
                    'ROWS_PRODUCED', ROWS_PRODUCED,
                    'TOTAL_ELAPSED_TIME', TOTAL_ELAPSED_TIME)
                FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
                WHERE START_TIME > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY')
                    AND START_TIME <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY')
            )
            FILE_FORMAT = (TYPE = JSON)
            INCLUDE_QUERY_ID = TRUE;
    
        UPDATE SECOPS_EXPORT_STATE
            SET LAST_EXPORTED = WINDOW_END
            WHERE VIEW_NAME = 'QUERY_HISTORY';
    
        RETURN 'Export completed';
    END;
    $$;
    

Setiap elemen prosedur ada karena suatu alasan:

  • Jendela ditutup tiga jam setelah waktu saat ini. Snowflake mengisi LOGIN_HISTORY dengan latensi hingga dua jam dan QUERY_HISTORY dengan latensi hingga 45 menit, sehingga jendela yang berakhir sekarang akan melewati baris yang belum diwujudkan oleh tampilan. Oleh karena itu, peristiwa akan mencapai Google SecOps sekitar tiga jam setelah terjadi. Memperpendek jeda akan mengorbankan kelengkapan demi keaktualan.
  • WINDOW_END ditulis ke tabel sebelum pelepasan, sehingga nilai yang digunakan oleh pernyataan COPY INTO dan nilai yang ditulis kembali ke LAST_EXPORTED identik. Menghitung ulang waktu saat ini dalam pernyataan kedua akan melewati semua yang terjadi di antaranya.
  • Setiap pembaruan LAST_EXPORTED berjalan setelah pernyataan COPY INTO-nya sendiri. Jika pelepasan gagal, prosedur akan berhenti, tanda air tetap berada di tempatnya, dan proses berikutnya akan mengulangi jendela tersebut, bukan melewatinya.
  • INCLUDE_QUERY_ID = TRUE menambahkan UUID ke setiap nama file. Tanpa opsi ini, file yang tidak dimuat akan diberi nama data_0_0_0 dan ekspor berulang ke jalur yang sama akan bertabrakan, yang didokumentasikan Snowflake sebagai sumber data duplikat di tahap.

Jadwalkan tugas ekspor

  1. Buat dan mulai tugas sebagai berikut:

    CREATE OR REPLACE TASK SECOPS_EXPORT_TASK
        WAREHOUSE = SECOPS_EXPORT_WH
        SCHEDULE = 'USING CRON 0 * * * * UTC'
        AS CALL SECOPS_EXPORT_ACTIVITY();
    
    ALTER TASK SECOPS_EXPORT_TASK RESUME;
    
  2. Jalankan tugas satu kali untuk memverifikasi penyiapan tanpa menunggu jadwal sebagai berikut:

    EXECUTE TASK SECOPS_EXPORT_TASK;
    
  3. Periksa hasil eksekusi dan file yang mencapai tahap tersebut sebagai berikut:

    SELECT NAME, STATE, ERROR_MESSAGE, SCHEDULED_TIME
    FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(TASK_NAME => 'SECOPS_EXPORT_TASK'))
    ORDER BY SCHEDULED_TIME DESC
    LIMIT 5;
    
    LIST @SECOPS_EXPORT_STAGE;
    

Mengambil akun layanan Google SecOps

Google SecOps menggunakan akun layanan unik untuk membaca data dari bucket Cloud Storage Anda. Anda harus memberi akun layanan ini akses ke bucket Anda.

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Snowflake activity logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih Snowflake sebagai Jenis log.
  7. Klik Get Service Account.
  8. Email akun layanan yang unik akan ditampilkan, misalnya:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Salin alamat email ini untuk digunakan di langkah berikutnya.

  10. Klik Berikutnya.

  11. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket Cloud Storage dengan jalur awalan:

      gs://snowflake-activity-logs/snowflake/
      
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah menghapus file: Jangan pernah menghapus file dari sumber (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong dari sumber setelah pengambilan yang berhasil selesai.
    • Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir (default adalah 180 hari)

    • Namespace aset: Namespace aset

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini

  12. Klik Berikutnya.

  13. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Memberikan izin IAM ke akun layanan Google SecOps

Akun layanan Google SecOps memerlukan dua peran di bucket Cloud Storage Anda: Storage Object Viewer untuk membaca objek log, dan peran tingkat bucket untuk membaca metadata bucket.

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda.
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempel email akun layanan Google SecOps
    • Tetapkan peran: Pilih kedua opsi berikut:
      • Storage Object Viewer: membaca objek log.
      • Storage Legacy Bucket Reader: membaca metadata bucket. Jika Anda memilih opsi penghapusan Hapus file yang ditransfer dan direktori kosong, pilih Storage Legacy Bucket Writer, yang juga memberikan izin penghapusan.
  6. Klik Simpan.

Metode 2: Amazon S3 V2

Gunakan metode ini jika log harus berada di Amazon S3. Sisi Snowflake identik, kecuali integrasi penyimpanan dan tahapannya, sehingga prosedur dan tugas ekspor dari Metode 1 digunakan kembali tanpa perubahan.

Mengonfigurasi bucket Amazon S3

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Nama dan Region bucket untuk referensi di masa mendatang. Misalnya, snowflake-activity-logs.

Mengonfigurasi kebijakan IAM AWS Snowflake

  1. Login ke AWS Management Console.
  2. Telusuri dan pilih IAM.
  3. Pilih Setelan akun.
  4. Di bagian Security Token Service (STS) dalam daftar Endpoints, temukan region Snowflake tempat akun Anda berada.
  5. Jika status STS tidak aktif, geser tombol ke Aktif.
  6. Pilih Kebijakan.
  7. Pilih Create Policy.
  8. Di Policy editor, pilih JSON.
  9. Salin dan tempel kebijakan berikut, yang memberikan izin yang diperlukan Snowflake untuk menghapus muatan data ke satu bucket dan jalur folder:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:GetObjectVersion",
                    "s3:DeleteObject",
                    "s3:DeleteObjectVersion"
                ],
                "Resource": "arn:aws:s3:::snowflake-activity-logs/snowflake/*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::snowflake-activity-logs",
                "Condition": {
                    "StringLike": {
                        "s3:prefix": [
                            "snowflake/*"
                        ]
                    }
                }
            }
        ]
    }
    
  10. Klik Berikutnya.

  11. Masukkan Nama kebijakan (misalnya, snowflake_access) dan deskripsi opsional.

  12. Klik Create policy.

Mengonfigurasi peran IAM AWS Snowflake

  1. Di IAM, pilih Roles.
  2. Klik Buat peran.
  3. Pilih Akun AWS sebagai jenis entitas tepercaya.
  4. Pilih Another AWS account.
  5. Di kolom Account ID, masukkan ID akun AWS Anda sendiri untuk sementara. Anda dapat mengubah hubungan kepercayaan nanti dan memberikan akses ke Snowflake.
  6. Pilih opsi Require external ID.
  7. Masukkan ID placeholder seperti 0000. Anda akan menggantinya dengan ID eksternal integrasi penyimpanan nanti.
  8. Klik Berikutnya.
  9. Pilih kebijakan IAM yang Anda buat sebelumnya.
  10. Klik Berikutnya.
  11. Masukkan nama dan deskripsi peran.
  12. Klik Buat peran.
  13. Di halaman ringkasan peran, salin dan simpan nilai Role ARN.

Buat integrasi penyimpanan Snowflake untuk Amazon S3

  1. Di worksheet Snowflake, buat integrasi penyimpanan sebagai berikut:

    USE ROLE ACCOUNTADMIN;
    
    CREATE STORAGE INTEGRATION SECOPS_S3_INT
        TYPE = EXTERNAL_STAGE
        STORAGE_PROVIDER = 'S3'
        ENABLED = TRUE
        STORAGE_AWS_ROLE_ARN = '<IAM_ROLE_ARN>'
        STORAGE_ALLOWED_LOCATIONS = ('s3://snowflake-activity-logs/snowflake/');
    
    GRANT USAGE ON INTEGRATION SECOPS_S3_INT TO ROLE SECOPS_EXPORTER;
    
    • Ganti <IAM_ROLE_ARN> dengan ARN Peran yang Anda simpan.
  2. Ambil identitas AWS yang dibuat Snowflake untuk integrasi sebagai berikut:

    DESC INTEGRATION SECOPS_S3_INT;
    
  3. Salin dan simpan nilai properti berikut sebagai berikut:

    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID

Memberi pengguna IAM Snowflake akses ke bucket

  1. Buka AWS Management Console.
  2. Pilih IAM > Roles.
  3. Pilih peran yang Anda buat sebelumnya.
  4. Pilih tab Hubungan kepercayaan.
  5. Klik Edit trust policy.
  6. Perbarui dokumen kebijakan dengan nilai output DESC INTEGRATION sebagai berikut:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "<STORAGE_AWS_IAM_USER_ARN>"
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "sts:ExternalId": "<STORAGE_AWS_EXTERNAL_ID>"
                    }
                }
            }
        ]
    }
    
  7. Klik Update policy.

Membuat format file, tahap, dan objek ekspor

  1. Di worksheet Snowflake, buat format file dan tahap yang menulis ke bucket sebagai berikut:

    USE ROLE SECOPS_EXPORTER;
    USE SCHEMA SECOPS_EXPORT.ACTIVITY;
    
    CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT
        TYPE = JSON;
    
    CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE
        URL = 's3://snowflake-activity-logs/snowflake/'
        STORAGE_INTEGRATION = SECOPS_S3_INT
        FILE_FORMAT = SECOPS_JSON_FORMAT;
    
  2. Buat tabel status, prosedur, dan tugas persis seperti yang dijelaskan dalam Metode 1, di bagian Buat tabel status ekspor, Buat prosedur ekspor, dan Jadwalkan tugas ekspor. Pernyataan merujuk ke tahap berdasarkan nama, sehingga tidak perlu diubah.

Mengonfigurasi AWS IAM untuk Google SecOps

  1. Login ke AWS Management Console.
  2. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  3. Pilih Pengguna yang dibuat.
  4. Pilih tab Kredensial keamanan.
  5. Klik Create Access Key di bagian Access Keys.
  6. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  7. Klik Berikutnya.
  8. Opsional: Tambahkan tag deskripsi.
  9. Klik Create access key.
  10. Klik Download file .csv untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  11. Klik Done.
  12. Pilih tab Izin.
  13. Klik Add permissions di bagian Permissions policies.
  14. Pilih Tambahkan izin.
  15. Pilih Lampirkan kebijakan secara langsung.
  16. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  17. Klik Berikutnya.
  18. Klik Add permissions.

Mengonfigurasi feed di Google SecOps untuk menyerap log Snowflake

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Snowflake activity logs).
  5. Pilih Amazon S3 V2 sebagai Jenis sumber.
  6. Pilih Snowflake sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut sebagai berikut:

    • URI S3: s3://snowflake-activity-logs/snowflake/
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda
    • Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir (default adalah 180 hari)
    • Access Key ID: Kunci akses pengguna dengan akses ke bucket S3
    • Secret Access Key: Kunci rahasia pengguna dengan akses ke bucket S3
    • Namespace aset: Namespace aset
    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini
  9. Klik Berikutnya.

  10. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
column4_label additional.fields Digabung
column7_label additional.fields Digabung
first_authentication_factor_label additional.fields Digabung
host_list additional.fields Digabung
query_text_label additional.fields Digabung
query_type_label additional.fields Digabung
roleIds_list additional.fields Digabung
roleNames_list additional.fields Digabung
rolecount_label additional.fields Digabung
user_count_label additional.fields Digabung
has_principal extensions.auth.type Dipetakan: true → AUTHTYPE_UNSPECIFIED
START_TIME metadata.event_timestamp Diuraikan sebagai yyyy-MM-dd HH:mm:ss.SSS Z
column2 metadata.event_timestamp Diuraikan sebagai yyyy-MM-dd HH:mm:ss.SSS Z
column20 metadata.event_timestamp Diuraikan sebagai yyyy-MM-dd HH:mm:ss.SSS Z
ts metadata.event_timestamp Diuraikan sebagai ISO8601
event_type metadata.event_type Dipetakan secara langsung
has_principal metadata.event_type Dipetakan: true → NETWORK_CONNECTION, true → STATUS_UPDATE, true → USER_LOGIN
has_principal_user metadata.event_type Dipetakan: true → USER_UNCATEGORIZED
column10 metadata.product_event_type Dipetakan secara langsung
QUERY_ID metadata.product_log_id Dipetakan secara langsung
column1 metadata.product_log_id Dipetakan secara langsung
column6 metadata.product_version Dipetakan secara langsung
SESSION_ID network.http.session_id Dipetakan secara langsung
RECEIVED_BYTES network.received_bytes Diganti nama/dipetakan
BYTES_SENT_OVER_THE_NETWORK network.sent_bytes Diganti nama/dipetakan
SENT_BYTES network.sent_bytes Diganti nama/dipetakan
APPLICATION principal.application Dipetakan secara langsung
data.user_name principal.asset.hostname Dipetakan secara langsung
CLIENT_IP principal.asset.ip Digabung
IP principal.asset.ip Digabung
column5 principal.asset.ip Digabung
SOURCE_REGION principal.cloud.availability_zone Dipetakan secara langsung
SOURCE_CLOUD principal.cloud.environment Dipetakan: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google ...
data.user_name principal.hostname Dipetakan secara langsung
CLIENT_IP principal.ip Digabung
IP principal.ip Digabung
column5 principal.ip Digabung
OS principal.platform Dipetakan: (?i)Linux → LINUX, (?i)windows → WINDOWS, (?i)mac/ios → MAC
OS_VERSION principal.platform_version Dipetakan secara langsung
SOURCE_CLOUD_label principal.resource.attribute.labels Digabung
roles principal.user.attribute.roles Digabung
data.role_name principal.user.role_name Dipetakan secara langsung
column9 principal.user.user_display_name Dipetakan secara langsung
USER_NAME principal.user.userid Dipetakan secara langsung
column10 principal.user.userid Dipetakan secara langsung
column3 principal.user.userid Dipetakan secara langsung
EXECUTION_STATUS security_result.action Dipetakan: (?i)success → action, (?i)fail → security_result_action_block
STATUS security_result.action Dipetakan: (?i)success → action, (?i)fail → action
action security_result.action Digabung
security_result_action_block security_result.action Digabung
OCSP_MODE security_result.action_details Dipetakan secara langsung
column11 security_result.action_details Dipetakan secara langsung
column3 security_result.action_details Dipetakan secara langsung
BYTES_DELETED_label security_result.detection_fields Digabung
BYTES_READ_FROM_RESULT_label security_result.detection_fields Digabung
BYTES_SCANNED_label security_result.detection_fields Digabung
BYTES_SPILLED_TO_LOCAL_STORAGE_label security_result.detection_fields Digabung
BYTES_SPILLED_TO_REMOTE_STORAGE_label security_result.detection_fields Digabung
BYTES_WRITTEN_TO_RESULT_label security_result.detection_fields Digabung
BYTES_WRITTEN_label security_result.detection_fields Digabung
CHILD_QUERIES_WAIT_TIME_label security_result.detection_fields Digabung
CLUSTER_NUMBER_label security_result.detection_fields Digabung
COMPILATION_TIME_label security_result.detection_fields Digabung
CREDITS_USED_CLOUD_SERVICES_label security_result.detection_fields Digabung
DATABASE_ID_label security_result.detection_fields Digabung
DATABASE_NAME_label security_result.detection_fields Digabung
END_TIME_label security_result.detection_fields Digabung
ERROR_MESSAGE_label security_result.detection_fields Digabung
EXECUTION_TIME_label security_result.detection_fields Digabung
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS_label security_result.detection_fields Digabung
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES_label security_result.detection_fields Digabung
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS_label security_result.detection_fields Digabung
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES_label security_result.detection_fields Digabung
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS_label security_result.detection_fields Digabung
INBOUND_DATA_TRANSFER_BYTES_label security_result.detection_fields Digabung
IS_CLIENT_GENERATED_STATEMENT_label security_result.detection_fields Digabung
LIST_EXTERNAL_FILES_TIME_label security_result.detection_fields Digabung
OUTBOUND_DATA_TRANSFER_BYTES_label security_result.detection_fields Digabung
PARTITIONS_SCANNED_label security_result.detection_fields Digabung
PARTITIONS_TOTAL_label security_result.detection_fields Digabung
PERCENTAGE_SCANNED_FROM_CACHE_label security_result.detection_fields Digabung
QUERY_ACCELERATION_BYTES_SCANNED_label security_result.detection_fields Digabung
QUERY_ACCELERATION_PARTITIONS_SCANNED_label security_result.detection_fields Digabung
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR_label security_result.detection_fields Digabung
QUERY_HASH_VERSION_label security_result.detection_fields Digabung
QUERY_HASH_label security_result.detection_fields Digabung
QUERY_LOAD_PERCENT_label security_result.detection_fields Digabung
QUERY_PARAMETERIZED_HASH_VERSION_label security_result.detection_fields Digabung
QUERY_TAG_label security_result.detection_fields Digabung
QUERY_TYPE_label security_result.detection_fields Digabung
QUEUED_OVERLOAD_TIME_label security_result.detection_fields Digabung
QUEUED_PROVISIONING_TIME_label security_result.detection_fields Digabung
QUEUED_REPAIR_TIME_label security_result.detection_fields Digabung
RELEASE_VERSION_label security_result.detection_fields Digabung
ROLE_TYPE_label security_result.detection_fields Digabung
ROWS_DELETED_label security_result.detection_fields Digabung
ROWS_INSERTED_label security_result.detection_fields Digabung
ROWS_PRODUCED_label security_result.detection_fields Digabung
ROWS_UNLOADED_label security_result.detection_fields Digabung
ROWS_UPDATED_label security_result.detection_fields Digabung
ROWS_WRITTEN_TO_RESULT_label security_result.detection_fields Digabung
SCHEMA_ID_label security_result.detection_fields Digabung
SCHEMA_NAME_label security_result.detection_fields Digabung
TOTAL_ELAPSED_TIME_label security_result.detection_fields Digabung
TRANSACTION_BLOCKED_TIME_label security_result.detection_fields Digabung
TRANSACTION_ID_label security_result.detection_fields Digabung
WAREHOUSE_ID_label security_result.detection_fields Digabung
WAREHOUSE_NAME_label security_result.detection_fields Digabung
WAREHOUSE_SIZE_label security_result.detection_fields Digabung
WAREHOUSE_TYPE_label security_result.detection_fields Digabung
authentication_factor_label security_result.detection_fields Digabung
column4_label security_result.detection_fields Digabung
column6_label security_result.detection_fields Digabung
column7_label security_result.detection_fields Digabung
column8_label security_result.detection_fields Digabung
event_id_label security_result.detection_fields Digabung
event_type_label security_result.detection_fields Digabung
is_success_label security_result.detection_fields Digabung
python_compiler_label security_result.detection_fields Digabung
python_runtime_label security_result.detection_fields Digabung
python_version_label security_result.detection_fields Digabung
reported_client_type_label security_result.detection_fields Digabung
reported_client_version_label security_result.detection_fields Digabung
tracing_label security_result.detection_fields Digabung
EXECUTION_STATUS security_result.summary Dipetakan secara langsung
STATUS security_result.summary Dipetakan secara langsung
column17 security_result.summary Dipetakan secara langsung
TARGET_REGION target.cloud.availability_zone Dipetakan secara langsung
TARGET_CLOUD target.cloud.environment Dipetakan: (?i)azure → MICROSOFT_AZURE, (?i)amazon → AMAZON_WEB_SERVICES, (?i)google ...
TARGET_CLOUD_label target.resource.attribute.labels Digabung
column2_label target.resource.attribute.labels Digabung
column7_label target.resource.attribute.labels Digabung
USER_NAME target.user.userid Dipetakan secara langsung
column4 target.user.userid Dipetakan secara langsung
T/A extensions.auth.type Konstanta: AUTHTYPE_UNSPECIFIED
T/A metadata.event_type Konstanta: NETWORK_CONNECTION
T/A metadata.product_name Konstanta: SNOWFLAKE
T/A metadata.vendor_name Konstanta: SNOWFLAKE
T/A principal.cloud.environment Konstanta: MICROSOFT_AZURE
T/A principal.platform Konstanta: LINUX
T/A target.cloud.environment Konstanta: MICROSOFT_AZURE

Log Perubahan

Melihat Log Perubahan untuk parser ini

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.