Mengumpulkan log AWS Security Hub
Dokumen ini menjelaskan cara menyerap log AWS Security Hub ke Google Security Operations. AWS Security Hub memberikan gambaran menyeluruh tentang pemberitahuan dan temuan keamanan di seluruh akun AWS. Dengan mengirimkan temuan ini ke Google SecOps, Anda dapat menggunakan kemampuan Google SecOps untuk meningkatkan pemantauan dan deteksi ancaman.
Sebelum memulai
- Pastikan Anda memiliki instance Google Chronicle.
- Pastikan Anda memiliki akses dengan hak istimewa ke AWS.
Mengonfigurasi AWS IAM dan S3
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
- Simpan Nama dan Region bucket untuk digunakan nanti.
- Buat pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
- Pilih Pengguna yang dibuat.
- Pilih tab Kredensial keamanan.
- Klik Create Access Key di bagian Access Keys.
- Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
- Klik Berikutnya.
- Opsional: tambahkan tag deskripsi.
- Klik Create access key.
- Klik Download file CSV untuk menyimpan Kunci Akses dan Kunci Akses Rahasia untuk digunakan nanti.
- Klik Selesai.
- Pilih tab Izin.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Telusuri dan pilih kebijakan AmazonS3FullAccess.
- Klik Berikutnya.
- Klik Tambahkan izin.
Membuat fungsi Lambda
- Login ke AWS Management Console.
- Buka Lambda.
- Klik Create Function dan pilih Author from Scratch.
- Berikan nama untuk fungsi Anda; misalnya,
SecurityHubToS3
. - Pilih Python 3.x untuk runtime.
Masukkan kode Lambda yang mengambil temuan dari EventBridge dan menulisnya ke bucket S3 Anda:
import json import boto3 from datetime import datetime # Initialize the S3 client s3_client = boto3.client('s3') # S3 bucket where findings will be stored bucket_name = 'aws-security-hub-findings-stream' def lambda_handler(event, context): # Extract Security Hub findings from the event findings = event['detail']['findings'] # Generate a timestamp for the file name to avoid overwriting timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S') # Generate the S3 object key (file name) based on the timestamp object_key = f"security_hub_findings_{timestamp}.json" # Convert findings to JSON format findings_json = json.dumps(findings, indent=4) # Upload the findings to S3 try: response = s3_client.put_object( Bucket=bucket_name, Key=object_key, Body=findings_json, ContentType='application/json' ) print(f"Successfully uploaded findings to S3: {response}") except Exception as e: print(f"Error uploading findings to S3: {e}") raise e return { 'statusCode': 200, 'body': json.dumps('Successfully processed findings') }
Tetapkan izin untuk Lambda dengan menambahkan peran IAM ke fungsi Lambda dengan kebijakan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::aws-security-hub-findings-stream/*" } ] }
Mengonfigurasi AWS Security Hub untuk meneruskan temuan dengan EventBridge
- Login ke AWS Management Console.
- Di kotak penelusuran, ketik dan pilih Security Hub dari daftar layanan.
- Klik Setelan.
- Di bagian Integrasi, temukan EventBridge, lalu klik Aktifkan.
- Di kotak penelusuran, ketik dan pilih EventBridge dari daftar layanan.
- Di konsol EventBridge, klik Aturan > Buat aturan.
- Berikan konfigurasi Aturan berikut:
- Nama Aturan: berikan nama deskriptif untuk aturan; misalnya, SendSecurityHubFindingsToS3.
- Sumber Peristiwa: pilih layanan AWS.
- Nama Layanan: pilih Security Hub.
- Jenis Peristiwa: pilih Temuan Security Hub.
- Tetapkan Target: pilih Fungsi Lambda.
- Pilih fungsi Lambda yang baru saja Anda buat (
SecurityHubToS3
).
- Klik Buat.
Mengonfigurasi feed di Google SecOps untuk menyerap log AWS Security Hub
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed; misalnya, Log AWS Security Hub.
- Pilih Amazon S3 sebagai Source type.
- Pilih AWS Security Hub sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Region: region tempat bucket Amazon S3 berada.
- S3 URI: URI bucket.
s3://your-log-bucket-name/
- Ganti
your-log-bucket-name
dengan nama bucket yang sebenarnya.
- Ganti
- URI adalah: pilih Direktori atau Direktori yang menyertakan subdirektori.
Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
Access Key ID: Kunci akses pengguna dengan akses ke bucket S3.
Kunci Akses Rahasia: kunci rahasia Pengguna dengan akses ke bucket S3.
Namespace aset: namespace aset.
Label penyerapan: label yang akan diterapkan ke peristiwa dari feed ini.
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
account |
principal.group.product_object_id |
ID akun AWS yang terkait dengan temuan. |
configurationItem.ARN |
target.resource.id |
Amazon Resource Name (ARN) item konfigurasi. |
configurationItem.awsAccountId |
principal.user.userid |
ID akun AWS item konfigurasi. |
configurationItem.awsRegion |
target.asset.location.country_or_region |
Region AWS item konfigurasi. |
configurationItem.configuration.complianceType |
security_result.summary |
Jenis kepatuhan item konfigurasi. |
configurationItem.configuration.configRuleList[].complianceType |
security_result.summary |
Status kepatuhan untuk setiap aturan konfigurasi. |
configurationItem.configuration.configRuleList[].configRuleArn |
security_result.rule_id |
ARN aturan AWS Config. |
configurationItem.configuration.configRuleList[].configRuleId |
security_result.about.labels.configRuleId |
ID aturan AWS Config. |
configurationItem.configuration.configRuleList[].configRuleName |
security_result.rule_name |
Nama aturan AWS Config. |
configurationItem.configuration.privateIpAddress |
target.ip |
Alamat IP pribadi item konfigurasi. |
configurationItem.configuration.publicIpAddress |
target.ip |
Alamat IP publik item konfigurasi. |
configurationItem.configurationItemCaptureTime |
target.asset.attribute.creation_time |
Waktu pengambilan item konfigurasi, yang dikonversi menjadi stempel waktu. |
configurationItem.configurationItemStatus |
target.asset.attribute.labels.Configuration Item Status |
Status item konfigurasi. |
configurationItem.relationships[].resourceId |
target.asset.attribute.cloud.vpc.id |
ID resource dari resource terkait, yang digunakan untuk ID VPC jika cocok dengan vpc . |
configurationItem.resourceId |
target.resource.id |
ID resource item konfigurasi. |
configurationItem.resourceName |
target.resource.name |
Nama resource. |
configurationItem.resourceType |
target.resource.resource_subtype |
Jenis resource item konfigurasi. |
configurationItem.tags.Contact |
principal.user.user_display_name ATAU principal.user.email_addresses |
Detail kontak yang diekstrak dari tag, diuraikan untuk email dan nama pengguna. |
configurationItem.tags.OS /configurationItem.tags.Os |
target.asset.platform_software.platform |
Sistem operasi dari tag, yang dipetakan ke platform jika Windows atau Linux . |
configurationItemDiff.changeType |
metadata.event_type |
Jenis perubahan, yang dipetakan ke RESOURCE_WRITTEN atau RESOURCE_CREATION. |
detail.accountId |
principal.group.product_object_id |
ID akun AWS yang terkait dengan temuan. |
detail.actionDescription detail.actionName detail.description |
sec_result.description |
Deskripsi temuan. |
detail.findings[].AwsAccountId |
principal.group.product_object_id |
ID akun AWS yang terkait dengan temuan. |
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description |
sec_result.description |
Deskripsi temuan. |
detail.findings[].FindingProviderFields.Severity.Label |
sec_result.severity |
Label keparahan temuan, dikonversi menjadi huruf besar. |
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. |
Lihat di bawah | Berbagai kolom yang digunakan untuk kolom tambahan, informasi akun utama, dan target. |
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region |
target.location.name |
Region AWS temuan. |
detail.findings[].Resources[].Details. |
Lihat di bawah | Detail tentang resource yang terlibat dalam temuan. |
detail.findings[].Resources[].Id |
target.resource.product_object_id |
ID resource. |
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region |
target.location.name |
Region AWS resource. |
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type |
target.resource.resource_type , target.resource.resource_subtype , metadata.event_type |
Jenis resource, yang digunakan untuk pemetaan jenis resource, subjenis, dan jenis peristiwa. |
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title |
sec_result.summary |
Judul temuan. |
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type |
metadata.product_event_type |
Jenis detail peristiwa. |
id |
metadata.product_log_id |
ID peristiwa. |
region |
target.location.name |
Region AWS peristiwa. |
resources[] source time version (Logika Parser) |
metadata.event_timestamp |
Waktu pembuatan dari entri log asli, yang digunakan sebagai stempel waktu peristiwa. |
(Logika Parser) | metadata.log_type |
Tetapkan ke AWS_SECURITY_HUB . |
(Logika Parser) | metadata.product_name |
Tetapkan ke AWS Security Hub . |
(Logika Parser) | metadata.vendor_name |
Tetapkan ke AMAZON . |
(Logika Parser) | target.asset.attribute.cloud.environment |
Tetapkan ke AMAZON_WEB_SERVICES . |
(Logika Parser) | metadata.event_type |
Tetapkan ke USER_RESOURCE_ACCESS sebagai default jika tidak dipetakan dari Resources[].Type atau configurationItemDiff.changeType . Tetapkan ke STATUS_UPDATE jika configurationItems ada dan tidak ada jenis peristiwa lain yang ditetapkan. Tetapkan ke RESOURCE_READ jika configurationItem atau configurationItems ada dan statusnya adalah OK atau ResourceDiscovered . Tetapkan ke RESOURCE_DELETION jika configurationItem atau configurationItems ada dan statusnya ResourceDeleted . |
(Logika Parser) | metadata.description |
Tetapkan ke guardduty jika detail.findings[].ProductFields.aws/guardduty/service/serviceName ada. |
(Logika Parser) | target.asset.attribute.cloud.vpc.resource_type |
Tetapkan ke VPC_NETWORK jika configurationItems.relationships[].resourceId cocok dengan vpc . |
(Logika Parser) | target.resource.resource_type |
Tetapkan ke VIRTUAL_MACHINE jika configurationItem atau configurationItems ada. Tetapkan ke UNSPECIFIED jika tidak ada jenis resource lain yang ditetapkan. |
(Logika Parser) | target.asset.platform_software.platform |
Tetapkan ke WINDOWS atau LINUX berdasarkan keberadaan Windows atau (Linux|LINUX) dalam pesan untuk configurationItem . Untuk configurationItems , nilainya ditetapkan berdasarkan configItem.tags.OS atau configItem.tags.Os . |
(Logika Parser) | disambiguation_key |
Ditambahkan saat beberapa peristiwa dihasilkan dari satu entri log. |
Perubahan
2025-02-18
Peningkatan:
- Menambahkan dukungan untuk array format log JSON baru.
2025-01-20
Peningkatan:
- Menambahkan dukungan untuk format log baru.
2025-01-16
Peningkatan:
- Menambahkan dukungan untuk format log JSON baru.
2023-06-20
Peningkatan:
- Mengubah
metadata.event_type
dariGENERIC_EVENT
menjadiUSER_RESOURCE_ACCESS
.
24-03-2023
Peningkatan:
- Jika
detail.findings.0.Resources.0.Type
==AwsEcsTaskDefinition
- - Memetakan
target.resource.resource_type
keTASK
. - Memetakan
event_type
keUSER_RESOURCE_ACCESS
. - Memetakan
detail.findings.0.ProductFields.Resources:0/Id
keprincipal.asset_id
. - Mengurai semua log yang gagal lainnya sebagai GENERIC_EVENT karena STATUS_UPDATE bukan opsi penguraian yang baik untuk log tersebut.
2022-08-22
Peningkatan:
- Memperbarui vendor_name dari
AWS SECURITY HUB
menjadiAMAZON
. - Memperbarui product_name dari
AWS SECURITY HUB
menjadiAWS Security Hub
. - Me-parse log format JSON baru yang berisi
configurationItem
atauconfigurationItems
. - Menangani log yang diserap sebagai file impor dengan memisahkannya menggunakan loop for dan mengurai setiap log sebagai peristiwa terpisah.
2022-07-01
- Parser yang Baru Dibuat.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.