Mengumpulkan Log Aliran VPC AWS

Versi Parser: 17.0

Didukung di:

Dokumen ini menjelaskan cara menyerap Log Aliran VPC AWS ke Google Security Operations menggunakan tiga metode berbeda: Amazon S3 (format Teks), Amazon CloudWatch Logs dengan Kinesis Data Firehose, dan format CSV di Amazon S3. AWS VPC Flow Logs adalah fitur yang memungkinkan Anda merekam informasi tentang traffic IP yang menuju ke dan keluar dari antarmuka jaringan di VPC Anda. Integrasi ini memungkinkan Anda mengirimkan log ini ke Google SecOps untuk dianalisis dan dipantau.

Format Log Aliran VPC AWS yang didukung

Google SecOps mendukung penyerapan Log Aliran Traffic VPC AWS dalam dua format teks utama:

  • Format JSON: Jenis log AWS_VPC_FLOW mengurai log dalam format JSON. Dalam format ini, setiap entri log menyertakan kunci dan nilai yang sesuai, sehingga data dapat mendeskripsikan dirinya sendiri.
  • Format CSV: Google SecOps juga menyediakan parser untuk AWS VPC Flow Logs dalam format CSV. Format ini mencantumkan kunci kolom hanya sekali di baris header, dengan baris berikutnya hanya berisi nilai yang dipisahkan koma.

Karena format CSV tidak menyertakan kunci kolom di setiap entri log, parser AWS_VPC_FLOW_CSV mengandalkan urutan nilai yang ketat dan telah ditentukan sebelumnya. File CSV Anda harus mematuhi urutan kolom berikut agar dapat diuraikan dengan benar:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

Berikut adalah contoh baris log CSV:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

Untuk kolom yang tidak memiliki nilai, nilai kosong (misalnya, , ,) harus diteruskan untuk mempertahankan urutan posisi yang benar dalam baris CSV.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps.
  • Akses istimewa ke AWS.

Opsi 1: Mengonfigurasi ekspor Log Aliran VPC AWS menggunakan AWS S3 (Format teks)

Bagian berikut menguraikan cara mengonfigurasi izin Amazon S3 dan Identity and Access Management untuk mengaktifkan ekspor Log Aliran Traffic VPC untuk dianalisis oleh Google SecOps.

Mengonfigurasi bucket AWS S3 dan IAM untuk Google SecOps

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya, aws-vpc-flowlogs).
  3. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  4. Pilih Pengguna yang dibuat.
  5. Pilih tab Kredensial keamanan.
  6. Klik Create Access Key di bagian Access Keys.
  7. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  8. Klik Berikutnya.
  9. Opsional: Tambahkan tag deskripsi.
  10. Klik Create access key.
  11. Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  12. Klik Done.
  13. Pilih tab Izin.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Attach policies directly.
  17. Cari kebijakan AmazonS3FullAccess.
  18. Pilih kebijakan.
  19. Klik Berikutnya.
  20. Klik Add permissions.

Membuat Log Aliran Traffic VPC (tujuan: Amazon S3, Format teks)

  1. Buka AWS Console > VPC > Your VPCs/Subnets/Network interfaces, lalu pilih cakupan yang ingin Anda catat.
  2. Klik Actions > Create flow log.
  3. Berikan detail konfigurasi berikut:
    • Filter: Pilih Semua (atau Terima / Tolak) sesuai kebijakan Anda.
    • Interval penggabungan maksimum: Pilih 1 menit (direkomendasikan) atau 10 menit.
    • Tujuan: Kirim ke bucket Amazon S3.
    • S3 bucket ARN: Masukkan nama bucket yang dibuat di bagian sebelumnya dalam format berikut: arn:aws:s3:::<your-bucket>.
    • Log record format: Pilih AWS default format.
    • Format file log: Pilih Teks (Plain).
    • Opsional: Nonaktifkan Awalan yang kompatibel dengan Hive dan Partisi per jam kecuali jika Anda membutuhkannya.
  4. Klik Create flow log.

Mengonfigurasi feed di Google SecOps untuk memproses Log Aliran VPC AWS (Teks S3)

  1. Buka SIEM Settings > Feeds.
  2. Klik + Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, AWS VPC Flow Logs - S3 (Text)).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih AWS VPC Flow sebagai Log type.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • URI S3: Masukkan alamat bucket S3 (misalnya, s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/).
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
    • Usia File Maksimum: Default 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 diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Opsi 2: Mengonfigurasi ekspor Log Aliran Traffic VPC AWS menggunakan Amazon CloudWatch Logs dan Kinesis Data Firehose

Setelah menyiapkan log alur untuk dikirim ke CloudWatch, opsi ini memberikan lapisan ekspor data tambahan dengan melakukan streaming data log tersebut ke tujuan pilihan Anda menggunakan Kinesis Data Firehose.

Membuat Log Aliran Traffic VPC (tujuan: Amazon CloudWatch Logs)

  1. Buka AWS Console > VPC > Your VPCs/Subnets/Network interfaces.
  2. Klik Actions > Create flow log.
  3. Berikan detail konfigurasi berikut:
    • Filter: Pilih Semua (atau Terima/Tolak) sesuai kebijakan Anda.
    • Maximum aggregation interval: Pilih 1 minute (direkomendasikan) atau 10 minutes.
    • Tujuan: Pilih Kirim ke CloudWatch Logs.
    • Grup log tujuan: Pilih atau buat grup log (misalnya, /aws/vpc/flowlogs).
    • Peran IAM: Pilih peran yang dapat menulis ke CloudWatch Logs.
    • Format catatan log: Pilih Default AWS (versi 2) atau Kustom (mencakup kolom tambahan).
  4. Klik Create flow log.

Buat feed di Google SecOps untuk mendapatkan URL Endpoint dan Kunci Rahasia

  1. Buka Setelan SIEM > Feed.
  2. Klik + Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, AWS VPC Flow Logs - CloudWatch via Firehose).
  4. Pilih Amazon Data Firehose sebagai Source type.
  5. Pilih AWS VPC Flow sebagai Log type.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • Split delimiter: Opsional n.
    • Namespace aset: Namespace aset (misalnya, aws.vpc.flowlogs.cwl).
    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini (misalnya, source=vpc_flow_firehose).
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed, lalu klik Kirim.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia karena Anda tidak dapat melihat rahasia ini lagi.
  12. Buka tab Detail.
  13. Salin URL endpoint feed dari kolom Endpoint Information.
  14. Klik Done.

Membuat kunci API untuk feed Amazon Data Firehose

  1. Buka halaman Credentials di konsol Google Cloud.
  2. Klik Create kredensial, lalu pilih kunci API.
  3. Salin dan simpan kunci di lokasi yang aman.
  4. Batasi akses kunci API ke Google SecOps API.

Mengonfigurasi izin IAM untuk CloudWatch Logs ke Firehose

  1. Di AWS Console, buka IAM > Policies > Create policy > JSON.
  2. Tempel JSON kebijakan berikut, dengan mengganti <region> dan <account-id> dengan Region AWS dan ID akun Anda:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
       }
    ]
    }
    
  3. Beri nama kebijakan CWLtoFirehoseWrite dan klik Create policy.

  4. Buka IAM > Roles > Create role.

  5. Pilih Custom trust policy dan tempel:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Principal": {
          "Service": "logs.<region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
       }
    ]
    }
    
  6. Lampirkan kebijakan CWLtoFirehoseWrite ke peran.

  7. Beri nama peran CWLtoFirehoseRole, lalu klik Buat peran.

Mengonfigurasi Amazon Kinesis Data Firehose ke Google SecOps

  1. Di AWS Console, buka Kinesis > Data Firehose > Create delivery stream.
  2. Berikan detail konfigurasi berikut:
    • Sumber: Pilih PUT langsung atau sumber lainnya.
    • Tujuan: Pilih Endpoint HTTP.
    • Nama: cwlogs-to-secops
    • HTTP endpoint URL: Masukkan Feed HTTPS endpoint URL dari Google SecOps dengan Kunci API yang ditambahkan: <ENDPOINT_URL>?key=<API_KEY>
    • Metode HTTP: Pilih POST.
  3. Di bagian Access key:
    • Masukkan Kunci rahasia yang dibuat di feed Google SecOps (ini akan menjadi header X-Amz-Firehose-Access-Key).
    • Petunjuk buffering: tetapkan Ukuran buffer = 1 MiB, Interval buffer = 60 detik.
    • Compression: pilih Disabled.
    • Pencadangan S3: pilih Nonaktif.
    • Biarkan setelan retry dan logging sebagai default.
  4. Klik Create delivery stream.

Berlangganan grup CloudWatch Logs ke aliran Firehose

  1. Buka CloudWatch > Logs > Log groups.
  2. Pilih grup log target (misalnya, /aws/vpc/flowlogs).
  3. Buka tab Filter langganan, lalu klik Buat.
  4. Pilih Create Amazon Kinesis Data Firehose subscription filter.
  5. Berikan detail konfigurasi berikut:
    • Tujuan: Pilih aliran penayangan cwlogs-to-secops.
    • Grant permission: Pilih peran CWLtoFirehoseRole.
    • Nama filter: Masukkan all-events.
    • Pola filter: Biarkan kosong untuk mengirim semua peristiwa.
  6. Klik Mulai streaming.

Opsi 3: Mengonfigurasi AWS VPC Flow Logs dalam format CSV menggunakan Amazon S3

Mengubah log ke format CSV (opsional)

  1. Pastikan baris CSV Anda mengikuti urutan kolom yang ketat dan konsisten yang cocok dengan kolom yang Anda pilih dalam format kustom Log Aliran Traffic VPC (misalnya, set kolom v2 kanonis, atau set v5/v7 Anda). Jangan menyertakan baris header dalam file produksi kecuali jika opsi parser Anda mengharapkannya.
  2. Tulis file CSV ke awalan yang stabil, misalnya: s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/.

Mengonfigurasi feed di Google SecOps untuk memproses Log Aliran Traffic VPC AWS (CSV)

  1. Buka Setelan SIEM > Feed.
  2. Klik + Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, AWS VPC Flow Logs - S3 (CSV)).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih AWS VPC Flow (CSV) sebagai Log type.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • S3 URI: Masukkan alamat bucket S3 (misalnya, s3://<your-bucket>/vpcflowlogs-csv/<region>/).
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
    • Usia File Maksimum: Default 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 diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Tabel pemetaan UDM

Contoh log Kolom Log Pemetaan UDM
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.1.1,2.2.2.2,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1aa,subnet-1aa1a1a1a1aa1a1,i-1aa1a1a1a1aa1a,0,IPv4,1.1.1.1,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159282 nanos: 254633949 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
1.1.1.1 principal.ip
2.2.2.2 target.ip
51256 principal.port
16020 target.port
6 network.ip_protocol
14 network.sent_packets
3881 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-a1a1a1a1a1 principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
1.1.1.1 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped-
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,5.5.5.5,2.2.2.2,53102,16020,6,8,2112,1723542839,1723542871,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,5.5.5.5,2.2.2.2,ap-northeast-1,masked_zone,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-"" collection_time: { seconds: 1741159390 nanos: 374934225 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a principal.user.product_object_id
5.5.5.5 principal.ip
2.2.2.2 target.ip
53102 principal.port
16020 target.port
6 network.ip_protocol
8 network.sent_packets
2112 network.received_bytes
1723542839 metadata.event_timestamp about.resource.attribute.labels(start_time)
1723542871 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 about.resource.attribute.labels (type)
IPv4 additional.fields (pkt-srcaddr-ip)
5.5.5.5 intermediary.ip
2.2.2.2 additional.fields (tcp_flags)
ap-northeast-1 not getting mapped
masked_zone not getting mapped
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
ingress network.direction
additional.fields (traffic_path)
- not getting mapped
- not getting mapped1
"entries: { data: ""7,11111111111,eni-11aa1a1a1a1aa1a,1.1.2.2,1.1.2.1,36358,42659,6,1091,3.754327e+06,1747981553,1747981582,ACCEPT,OK,vpc-1aa1a1a1a1aa1a,subnet-1aa1a1a1a1aa1a,i-1aa1a1a1a1aa1a,0,IPv4,1.1.2.2,1.1.2.1,ap-northeast-1,apne1-az1,-,-,-,-,egress,1,-,-,-,-,-,-,-,-,-,-,604249"" collection_time: { seconds: 1748238552 nanos: 479960397 } }" 7 metadata.product_version
11111111111 metadata.product_log_id
eni-11aa1a1a1a1aa1a about.resource.attribute.labels
1.1.2.2 principal.ip
1.1.2.1 target.ip
36358 principal.port
42659 target.port
6 network.ip_protocol
1091 network.sent_packets
3.75E+06 network.sent_bytes
1747981553 metadata.event_timestamp about.resource.attribute.labels(start_time)
1747981582 metadata.ingested_timestamp about.resource.attribute.labels(end_time)
ACCEPT security_result.action security_result.action_details
OK about.resource.attribute.labels (log-status)
vpc-1aa1a1a1a1aa1a principal.resource.attribute.labels (vpcID)
subnet-1aa1a1a1a1aa1a principal.asset_id
i-1aa1a1a1a1aa1a principal.resource_ancestors.product_object_id
0 additional.fields (tcp_flags)
IPv4 about.resource.attribute.labels(type)
1.1.2.2 "additional.fields (pkt-srcaddr-ip)
Kondisi:
if [pkt_dstaddr_ip] != [dstaddr] will map to intermediary.ip"
1.1.2.1 "additional.fields (pkt-dstaddr-ip)
Kondisi:
if [pkt_srcaddr_ip] != [srcaddr] will map to intermediary.ip"
ap-northeast-1 principal.location.country_or_region
apne1-az1 principal.location.name
- about.resource.attribute.labels (sublocation_type)
- about.resource.attribute.labels (sublocation_id)
- about.resource.attribute.labels (pkt_src_aws_service)
- about.resource.attribute.labels (pkt_dst_aws_service)
egress network.direction
1 additional.fields (traffic_path)
- not getting mapped
604249 not getting mapped
Connection_info.Tcp_flags additional.fields
connection_info.tcp_flags additional.fields
Dst_endpoint.Interface_uid target.user.product_object_id
Log_status additional.fields
Src_endpoint.Instance_uid principal.user.product_object_id
Tcp_flags additional.fields
tcp_flags additional.fields
tgw_dst_az_id target.resource.attribute.cloud.availability_zone
tgw_id target.resource.product_object_id
tgw_src_az_id principal.location.name
Traffic_Bytes network.sent_bytes
Traffic_Packets network.sent_packets

Delta rilis

Google SecOps merilis parser Log Aliran VPC AWS versi 16.0, yang mencakup perubahan signifikan pada pemetaan kolom log Parser_Name ke kolom UDM dan perubahan pada pemetaan jenis peristiwa.

Delta pemetaan kolom log

Kolom log Pemetaan lama Pemetaan saat ini
bytes network.sent_bytes Removed
Connection_info.Tcp_flags network.dhcp.flags additional.fields
connection_info.tcp_flags network.dhcp.flags additional.fields
Dst_endpoint.Interface_uid additional.fields target.user.product_object_id
flow_direction about.resource.attribute.labels Removed
Log_status about.resource.attribute.labels additional.fields
Src_endpoint.Instance_uid additional.fields principal.user.product_object_id
Tcp_flags network.dhcp.flags additional.fields
tcp_flags network.dhcp.flags additional.fields
tgw_dst_az_id target.resource.attribute.labels target.resource.attribute.cloud.availability_zone
tgw_id additional.fields target.resource.product_object_id
tgw_src_az_id principal.resource.attribute.labels principal.location.name
Traffic_Bytes additional.fields network.sent_bytes
Traffic_Packets additional.fields network.sent_packets

Delta pemetaan jenis peristiwa

Beberapa peristiwa yang diklasifikasikan secara umum kini diklasifikasikan dengan benar menggunakan jenis peristiwa yang bermakna.

Jenis peristiwa Kolom dari log Alasan
FILE_UNCATEGORIZED Bytes Peristiwa ini baru ditangani dalam permintaan pull ini dan dipetakan ke jenis peristiwa tertentu yang sesuai
NETWORK_CONNECTION protocol Error ini baru ditangani dalam PR ini yang dipetakan ke jenis peristiwa spesifik yang sesuai
NETWORK_UNCATEGORIZED Class_name Error ini baru ditangani dalam PR ini yang dipetakan ke jenis peristiwa spesifik yang sesuai
NETWORK_UNCATEGORIZED flow_direction Peristiwa ini baru ditangani dalam permintaan pull ini dan dipetakan ke jenis peristiwa tertentu yang sesuai
STATUS_UPDATE [src_endpoint][ip] Peristiwa ini baru ditangani dalam permintaan pull ini yang dipetakan ke jenis peristiwa tertentu yang sesuai

Log Perubahan

Melihat Log Perubahan untuk parser ini

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