Mengumpulkan log Snowflake

Didukung di:

Dokumen ini menjelaskan cara menyerap log Snowflake ke Google Security Operations menggunakan AWS S3. Parser mengekstrak kolom dari pesan log menggunakan serangkaian aturan pencocokan pola Grok dan KV, yang dirancang khusus untuk menangani format log Snowflake. Kemudian, kolom yang diekstrak dipetakan ke Model Data Terpadu (UDM), memperkaya data dengan konteks tambahan dan menstandardisasi representasi untuk analisis lebih lanjut.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps
  • Akses istimewa ke AWS
  • Akses istimewa ke Snowflake (ACCOUNTADMIN)

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.

Mengonfigurasi Kebijakan IAM AWS Snowflake

  1. Login ke Konsol Pengelolaan AWS.
  2. Telusuri dan pilih IAM.
  3. Pilih Setelan akun.
  4. Di bagian Security Token Service (STS) dalam daftar Endpoints, temukan Snowflake region tempat akun Anda berada.
  5. Jika status STS adalah tidak aktif, pindahkan tombol ke Aktif.
  6. Pilih Kebijakan.
  7. Pilih Create Policy.
  8. Di Policy editor, pilih JSON.
  9. Salin dan tempel kebijakan berikut (dalam format JSON) untuk memberi Snowflake izin yang diperlukan untuk memuat atau membatalkan muatan data menggunakan satu jalur bucket dan folder. Anda juga dapat menghapus file data menggunakan opsi salin PURGE.

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

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

  12. Klik Create policy.

Mengonfigurasi Peran IAM AWS Snowflake

  1. Di AWS Identity and Access Management (IAM), pilih Roles.
  2. Klik Buat peran.
  3. Pilih Akun AWS sebagai jenis entitas tepercaya.
  4. Pilih Akun AWS lain.
  5. Di kolom Account ID, masukkan ID akun AWS Anda sendiri untuk sementara. Selanjutnya, Anda mengubah hubungan tepercaya dan memberikan akses ke Snowflake.
  6. Pilih opsi Wajibkan ID eksternal.
  7. Masukkan ID placeholder seperti 0000. Pada langkah selanjutnya, Anda akan mengubah hubungan tepercaya untuk peran IAM dan menentukan ID eksternal untuk integrasi penyimpanan.
  8. Klik Berikutnya.
  9. Pilih kebijakan IAM yang Anda buat sebelumnya.
  10. Klik Berikutnya.
  11. Masukkan nama dan deskripsi untuk peran.
  12. Klik Buat peran.
  13. Di halaman ringkasan peran, salin dan simpan nilai ARN Peran.

Mengonfigurasi Integrasi Snowflake S3

  1. Hubungkan ke db Snowflake.
  2. Ganti kolom berikut dan jalankan perintah:

    • <integration_name> adalah nama integrasi baru (misalnya, s3_integration).
    • <iam_role> adalah Amazon Resource Name (ARN) peran yang Anda buat sebelumnya.
    • <aws_s3_bucket_path> adalah jalur ke bucket yang Anda buat sebelumnya (misalnya, s3://your-log-bucket-name/).
    CREATE OR REPLACE STORAGE INTEGRATION <integration_name>
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'S3'
      ENABLED = TRUE
      STORAGE_AWS_ROLE_ARN = '<iam_role>'
      STORAGE_ALLOWED_LOCATIONS = ('<aws_s3_bucket_path>')
    

Mengonfigurasi Izin Pengguna IAM AWS untuk Mengakses Bucket

  1. Ambil ARN untuk pengguna IAM yang dibuat secara otomatis untuk akun Snowflake Anda, ganti <integration_name> dengan nama sebenarnya dari integrasi yang Anda buat sebelumnya: none DESC INTEGRATION <integration_name>;
  • Contoh: none DESC INTEGRATION s3_integration; +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq= | | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+
  1. Salin dan simpan nilai untuk properti berikut:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Buka AWS Management Console.
  3. Pilih IAM > Roles.
  4. Pilih peran yang Anda buat sebelumnya.
  5. Pilih tab Hubungan kepercayaan.
  6. Klik Edit kebijakan kepercayaan.
  7. Perbarui dokumen kebijakan dengan nilai output DESC INTEGRATION:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<snowflake_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<snowflake_external_id>"
            }
          }
        }
      ]
    }
    
  8. Ganti:

    • snowflake_user_arn adalah nilai STORAGE_AWS_IAM_USER_ARN yang Anda catat.
    • snowflake_external_id adalah nilai STORAGE_AWS_EXTERNAL_ID yang Anda catat.
  9. Klik Update policy.

Mengonfigurasi Format File JSON di Snowflake

  1. Di Snowflake, masukkan perintah berikut:

    CREATE OR REPLACE FILE FORMAT my_json_format
      type = json
      COMPRESSION = 'gzip'
      null_if = ('NULL', 'null');
    

Membuat Stage S3 di Snowflake

  1. Di Snowflake, ganti kolom berikut dan masukkan perintah:

    • <DB_NAME>
    • <DB_SCHEMA_NAME>
    • <AWS_S3_BUCKET_PATH>
    use database '<DB_NAME>';
    use schema '<DB_SCHEMA_NAME>';
    CREATE OR REPLACE STAGE my_s3_stage
    storage_integration = s3_integration
    url = '<AWS_S3_BUCKET_PATH>'
    file_format = my_json_format;
    

Mengonfigurasi Snowflake untuk mengekspor data

  1. Jalankan perintah unload untuk mengekspor data dari tabel ke tahap dan selanjutnya ke AWS S3:

    use database '<DB_NAME>';
    use WAREHOUSE '<WAREHOUSE_NAME>';
    
    copy into @my_s3_stage/login_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_ENV_NAME>', '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, 'FIRST_AUTHENTICATION_FACTOR',FIRST_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) from snowflake.account_usage.Login_history) FILE_FORMAT = (TYPE = JSON) ;
    
    copy into @my_s3_stage/access_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_DB_NAME>', 'log_type', 'access_history', 'QUERY_START_TIME',QUERY_START_TIME, 'USER_NAME', USER_NAME, 'DIRECT_OBJECTS_ACCESSED',DIRECT_OBJECTS_ACCESSED, 'BASE_OBJECTS_ACCESSED', BASE_OBJECTS_ACCESSED, 'OBJECTS_MODIFIED', OBJECTS_MODIFIED) from snowflake.account_usage.Access_History ) FILE_FORMAT = (TYPE = JSON);
    
  2. Ulangi proses ekspor untuk semua tabel berikut tempat Snowflake menyimpan data terkait log dan audit:

    Databases ;
    WAREHOUSE_EVENTS_HISTORY ;
    WAREHOUSE_LOAD_HISTORY ;
    WAREHOUSE_METERING_HISTORY ;
    DATABASE_STORAGE_USAGE_HISTORY ;
    DATA_TRANSFER_HISTORY ;
    GRANTS_TO_ROLES ;
    GRANTS_TO_USERS ;
    METERING_DAILY_HISTORY ;
    PIPE_USAGE_HISTORY ;
    REPLICATION_USAGE_HISTORY ;
    STAGE_STORAGE_USAGE_HISTORY ;
    STORAGE_USAGE ;
    TASK_HISTORY ;
    COPY_HISTORY ;
    

Mengonfigurasi AWS IAM untuk Google SecOps

  1. Login ke Konsol Pengelolaan AWS.
  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 CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  11. Klik Selesai.
  12. Pilih tab Permissions.
  13. Klik Tambahkan izin di bagian Kebijakan izin.
  14. Pilih Tambahkan izin.
  15. Pilih Lampirkan kebijakan secara langsung.
  16. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  17. Klik Berikutnya.
  18. Klik Tambahkan izin.

Menyiapkan feed

Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:

  • Setelan SIEM > Feed
  • Hub Konten > Paket Konten

Menyiapkan feed dari Setelan SIEM > Feed

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

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

    • Region: Region tempat bucket Amazon S3 berada.
    • S3 URI: URI bucket (formatnya harus: s3://your-log-bucket-name/). Ganti berikut ini:
      • your-log-bucket-name: nama bucket.
    • URI adalah: Pilih Direktori atau Direktori yang menyertakan subdirektori.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3.
    • Kunci Akses Rahasia: kunci rahasia Pengguna dengan akses ke bucket S3.
  9. Klik Berikutnya.

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

Menyiapkan feed dari Hub Konten

Tentukan nilai untuk kolom berikut:

  • Region: Region tempat bucket Amazon S3 berada.

    • S3 URI: URI bucket (formatnya harus: s3://your-log-bucket-name/). Ganti berikut ini:
      • your-log-bucket-name: nama bucket.
    • URI adalah: Pilih Direktori atau Direktori yang menyertakan subdirektori.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3.
    • Kunci Akses Rahasia: kunci rahasia Pengguna dengan akses ke bucket S3.

Opsi lanjutan

  • Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
  • Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
  • Namespace Aset: Namespace yang terkait dengan feed.
  • Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.

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