Mengumpulkan log AWS Security Hub

Didukung di:

Dokumen ini menjelaskan cara menyerap log AWS Security Hub ke Google Security Operations. AWS Security Hub memberikan tampilan komprehensif 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 prasyarat berikut:

  • Instance Google SecOps
  • Akses istimewa ke AWS

Mengonfigurasi AWS IAM dan S3

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Nama dan Region bucket untuk digunakan nanti.
  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 digunakan nanti.
  12. Klik Selesai.
  13. Pilih tab Izin.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Lampirkan kebijakan secara langsung.
  17. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  18. Klik Berikutnya.
  19. Klik Tambahkan izin.

Membuat fungsi Lambda

  1. Login ke AWS Management Console.
  2. Buka Lambda.
  3. Klik Create Function, lalu pilih Author from Scratch.
  4. Berikan nama untuk fungsi Anda; misalnya, SecurityHubToS3.
  5. Pilih Python 3.x untuk runtime.
  6. Masukkan kode Lambda yang mengambil temuan dari EventBridge dan menuliskannya 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)
    
       # 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')
       }
    
  7. 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/*"
          }
       ]
    }
    

Cara mengonfigurasi AWS Security Hub untuk meneruskan temuan dengan EventBridge

  1. Login ke AWS Management Console.
  2. Di kotak penelusuran, ketik dan pilih Security Hub dari daftar layanan.
  3. Klik Setelan.
  4. Di bagian Integrations, temukan EventBridge, lalu klik Enable.
  5. Di kotak penelusuran, ketik dan pilih EventBridge dari daftar layanan.
  6. Di konsol EventBridge, klik Rules > Create rule.
  7. Berikan konfigurasi Aturan berikut:
    1. Nama Aturan: Berikan nama deskriptif untuk aturan tersebut; misalnya, SendSecurityHubFindingsToS3.
    2. Sumber Peristiwa: Pilih Layanan AWS.
    3. Service Name: Pilih Security Hub.
    4. Event Type: Pilih Security Hub Findings.
    5. Tetapkan Target: Pilih Fungsi Lambda.
    6. Pilih fungsi Lambda yang baru saja Anda buat (SecurityHubToS3).
  8. Klik Buat.

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 beberapa feed untuk berbagai jenis log dalam rangkaian produk ini, lihat Mengonfigurasi beberapa feed.

Untuk mengonfigurasi satu 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, AWS Security Hub Logs.
  5. Pilih Amazon S3 sebagai Jenis sumber.
  6. Pilih AWS Security Hub sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • Region: Region tempat bucket Amazon S3 berada.
    • URI S3: URI bucket.
      • s3://your-log-bucket-name/
        • Ganti your-log-bucket-name dengan nama sebenarnya bucket S3 Anda.
    • URI adalah: Pilih Direktori atau Direktori yang menyertakan subdirektori, bergantung pada struktur bucket Anda.
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai dengan preferensi penyerapan Anda.

    • ID Kunci Akses: Kunci akses pengguna dengan izin untuk membaca dari bucket S3.

    • Kunci Akses Rahasia: Kunci rahasia pengguna dengan izin untuk membaca dari 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.

Menyiapkan feed dari Hub Konten

Tentukan nilai untuk kolom berikut:

  • Region: Region tempat bucket Amazon S3 berada.
  • URI S3: URI bucket.
    • s3://your-log-bucket-name/
      • Ganti your-log-bucket-name dengan nama sebenarnya bucket S3 Anda.
  • URI adalah: Pilih Direktori atau Direktori yang menyertakan subdirektori, bergantung pada struktur bucket Anda.
  • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai dengan preferensi penyerapan Anda.
  • ID Kunci Akses: Kunci akses pengguna dengan izin untuk membaca dari bucket S3.

  • Kunci Akses Rahasia: Kunci rahasia pengguna dengan izin untuk membaca dari 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.

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, 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, 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 diekstrak dari tag, diuraikan untuk email dan nama pengguna.
configurationItem.tags.OS/configurationItem.tags.Os target.asset.platform_software.platform Sistem operasi dari tag, dipetakan ke platform jika Windows atau Linux.
configurationItemDiff.changeType metadata.event_type Jenis perubahan, 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 tingkat 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 target, dan prinsipal.
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region target.location.name Region AWS tempat temuan berada.
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 dari resource.
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type target.resource.resource_type, target.resource.resource_subtype, metadata.event_type Jenis resource, 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 acara.
region target.location.name Region AWS tempat peristiwa terjadi.
resources[] source time version (Parser Logic) metadata.event_timestamp Waktu pembuatan dari entri log asli, 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 Disetel ke USER_RESOURCE_ACCESS sebagai default jika tidak dipetakan dari Resources[].Type atau configurationItemDiff.changeType. Disetel ke STATUS_UPDATE jika configurationItems ada dan tidak ada jenis peristiwa lain yang disetel. Tetapkan ke RESOURCE_READ jika configurationItem atau configurationItems ada dan statusnya adalah OK atau ResourceDiscovered. Disetel ke RESOURCE_DELETION jika configurationItem atau configurationItems ada dan statusnya adalah 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 Disetel ke VIRTUAL_MACHINE jika configurationItem atau configurationItems ada. Disetel 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, setel berdasarkan configItem.tags.OS atau configItem.tags.Os.
(Logika Parser) disambiguation_key Ditambahkan saat beberapa peristiwa dibuat dari satu entri log.

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