Mengumpulkan log audit HashiCorp Vault

Didukung di:

Dokumen ini menjelaskan cara menyerap log audit HashiCorp Vault ke Google Security Operations menggunakan Bindplane.

HashiCorp Vault adalah platform pengelolaan secret dan perlindungan data yang menyediakan penyimpanan aman, pembuatan secret dinamis, enkripsi data, dan kontrol akses berbasis identitas. Vault menghasilkan log audit yang mencatat semua permintaan dan respons ke Vault, termasuk autentikasi, akses secret, dan perubahan kebijakan. Log audit ini dapat diteruskan menggunakan syslog ke SIEM untuk pemantauan keamanan dan kepatuhan.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps.
  • Windows Server 2016 atau yang lebih baru, atau host Linux dengan systemd.
  • Konektivitas jaringan antara agen Bindplane dan server HashiCorp Vault.
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane.
  • Akses istimewa ke server HashiCorp Vault (token root atau izin kebijakan yang memadai untuk mengaktifkan perangkat audit).

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan.
  4. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quiet
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

Layanan akan ditampilkan sebagai RUNNING.

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. Jalankan perintah berikut:

    sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.sh
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sudo systemctl status observiq-otel-collector
    

Layanan akan ditampilkan sebagai aktif (berjalan).

Referensi penginstalan tambahan

Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.

Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps

Cari file konfigurasi

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:1514"
    
    exporters:
      chronicle/vault:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'your-customer-id-here'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: HASHICORP
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/vault_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/vault
    

Parameter konfigurasi

Ganti placeholder berikut:

  • Konfigurasi penerima:

    • listen_address: Alamat IP dan port yang akan diproses. Gunakan 0.0.0.0 untuk memproses semua antarmuka. Port 1514 direkomendasikan untuk menghindari kebutuhan akan hak istimewa root di Linux.
  • Konfigurasi eksportir:

    • creds_file_path: Jalur lengkap ke file autentikasi penyerapan:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: ID pelanggan Google SecOps Anda.
    • endpoint: URL endpoint regional:
      • Amerika Serikat: malachiteingestion-pa.googleapis.com
      • Eropa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.
    • ingestion_labels: Label opsional dalam format YAML (misalnya, env: production).

Simpan file konfigurasi

Setelah mengedit, simpan file:

  • Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
  • Windows: Klik File > Save

Mulai ulang agen Bindplane untuk menerapkan perubahan

Untuk memulai ulang agen Bindplane di Linux:

  1. Jalankan perintah berikut:

    sudo systemctl restart observiq-otel-collector
    
  2. Pastikan layanan sedang berjalan:

    sudo systemctl status observiq-otel-collector
    
  3. Periksa log untuk mengetahui error:

    sudo journalctl -u observiq-otel-collector -f
    

Untuk memulai ulang agen Bindplane di Windows:

  1. Pilih salah satu opsi berikut:

    • Command Prompt atau PowerShell sebagai administrator:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Konsol layanan:
      1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
      2. Temukan observIQ OpenTelemetry Collector.
      3. Klik kanan, lalu pilih Mulai Ulang.
  2. Pastikan layanan sedang berjalan:

    sc query observiq-otel-collector
    
  3. Periksa log untuk mengetahui error:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Mengonfigurasi penerusan log audit HashiCorp Vault melalui syslog

Perangkat audit Vault mencatat semua permintaan dan respons. Anda dapat mengaktifkan perangkat audit syslog untuk meneruskan log audit ke agen Bindplane.

Mengaktifkan perangkat audit syslog

  1. Buka terminal dengan akses ke Vault CLI dan token Vault yang valid.
  2. Jalankan perintah berikut untuk mengaktifkan perangkat audit syslog:

    vault audit enable syslog tag="vault" facility="AUTH"
    
  3. Pastikan perangkat audit diaktifkan:

    vault audit list
    

Output akan menampilkan perangkat audit syslog sebagai enabled.

Mengonfigurasi penerusan syslog ke agen BindPlane

Setelah mengaktifkan perangkat audit syslog Vault, konfigurasikan daemon syslog sistem (rsyslog atau syslog-ng) untuk meneruskan log audit Vault ke agen BindPlane.

Opsi - konfigurasi rsyslog

  1. Buat file konfigurasi rsyslog baru:

    sudo nano /etc/rsyslog.d/50-vault-forward.conf
    
  2. Tambahkan konfigurasi berikut:

    # Forward Vault audit logs to Bindplane agent
    if $programname == 'vault' then @@BINDPLANE_IP:1514
    

    Ganti BINDPLANE_IP dengan alamat IP host agen Bindplane.

  3. Mulai ulang rsyslog:

    sudo systemctl restart rsyslog
    

Opsi - konfigurasi syslog-ng

  1. Edit file konfigurasi syslog-ng:

    sudo nano /etc/syslog-ng/conf.d/vault-forward.conf
    
  2. Tambahkan konfigurasi berikut:

    destination d_bindplane {
        network("BINDPLANE_IP" port(1514) transport("tcp"));
    };
    
    filter f_vault {
        program("vault");
    };
    
    log {
        source(s_src);
        filter(f_vault);
        destination(d_bindplane);
    };
    

    Ganti BINDPLANE_IP dengan alamat IP host agen Bindplane.

  3. Mulai ulang syslog-ng:

    sudo systemctl restart syslog-ng
    

Alternatif - audit berbasis file dengan penerusan log

Jika audit syslog tidak diinginkan, Anda dapat mengaktifkan perangkat audit file dan meneruskan konten file:

  1. Aktifkan perangkat audit file:

    vault audit enable file file_path=/var/log/vault/audit.log
    
  2. Konfigurasi rsyslog untuk memantau dan meneruskan file:

    sudo nano /etc/rsyslog.d/50-vault-file-forward.conf
    
    module(load="imfile")
    input(type="imfile"
        File="/var/log/vault/audit.log"
        Tag="vault-audit"
        Severity="info"
        Facility="auth")
    
    if $syslogtag == 'vault-audit' then @@BINDPLANE_IP:1514
    

    Ganti BINDPLANE_IP dengan alamat IP host agen Bindplane.

  3. Mulai ulang rsyslog:

    sudo systemctl restart rsyslog
    

Memverifikasi penerusan log

  1. Lakukan operasi Vault (misalnya, login atau membaca rahasia):

    vault login token=<YOUR_TOKEN>
    
  2. Periksa log agen BindPlane untuk mengonfirmasi bahwa log diterima.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi perangkat audit HashiCorp Vault.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
auth.client_token network.session_id Nilai diambil dari auth.client_token (di-hash).
auth.display_name principal.user.user_display_name Nilai diambil dari auth.display_name.
auth.metadata.role_name principal.user.attribute.roles.name Nilai diambil dari auth.metadata.role_name.
auth.policies principal.user.attribute.permissions.name Nilai yang diambil dari array auth.policies.
auth.token_type additional.fields Nilai diambil dari auth.token_type dan ditambahkan dengan kunci token_type.
request.id metadata.product_log_id Nilai diambil dari request.id.
request.operation metadata.product_event_type Nilai diambil dari request.operation.
request.path target.resource.name Nilai diambil dari request.path.
request.remote_address principal.ip Nilai diambil dari request.remote_address.
request.namespace.id target.namespace Nilai diambil dari request.namespace.id.
response.auth.client_token network.session_id Nilai diambil dari respons client_token (di-hash).
type metadata.product_event_type Ditambahkan ke operasi (misalnya, request atau response).
time metadata.event_timestamp Diuraikan sebagai stempel waktu RFC 3339.
error security_result.description Nilai diambil dari error jika ada.
metadata.vendor_name Tetapkan ke HashiCorp.
metadata.product_name Tetapkan ke Vault.
metadata.event_type Disetel ke USER_RESOURCE_ACCESS untuk operasi rahasia, USER_LOGIN untuk operasi autentikasi, GENERIC_EVENT untuk operasi lainnya.
response.auth.metadata.username event.idm.read_only_udm.target.user.userid Dipetakan dari log perubahan
appname event.idm.read_only_udm.target.application Dipetakan dari log perubahan
priority event.idm.read_only_udm.security_result.priority_details Dipetakan dari log perubahan
proc_id event.idm.read_only_udm.observer.process.pid Dipetakan dari log perubahan
auth.policies event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
auth.token_policies event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
request.policy_override event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.admin_password event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.admin_token event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.admin_user event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.certificate event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.check_url event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.keystore event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.keystore_password event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
response.data.private_key event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
auth.identity_policies event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
request.data event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
facility event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
task event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
jsonPayload.auth.policy_results.granting_policies.type", "jsonPayload.auth.policy_results.granting_policies.name", and "jsonPayload.auth.policy_results.granting_policies.namespace_id additional.fields Dipetakan dari log perubahan
jsonPayload.request.namespace.id target.namespace Dipetakan dari log perubahan
jsonPayload.cos.googleapis.com/container_id", "jsonPayload.cos.googleapis.com/container_name", "jsonPayload.cos.googleapis.com/stream additional.fields Dipetakan dari log perubahan
resource.labels.instance_id principal.resource.product_object_id Dipetakan dari log perubahan
principal.resource.attribute.cloud.availability_zone resource.labels.zone Dipetakan dari log perubahan
logName security_result.category_details Dipetakan dari log perubahan
resource.labels.namespace_name target.namespace Dipetakan dari log perubahan
resource.labels.pod_name", "resource.labels.container_name additional.fields Dipetakan dari log perubahan
resource.labels.project_id target.cloud.project.name Dipetakan dari log perubahan
resource.labels.location target.location.name Dipetakan dari log perubahan
insertId metadata.product_log_id Dipetakan dari log perubahan
labels.k8s-pod/app_kubernetes_io/instance", "labels.k8s-pod/app_kubernetes_io/name", "labels.k8s-pod/component", "labels.k8s-pod/helm_sh/chart", "labels.k8s-pod/controller-revision-hash", "labels.k8s-pod/vault-initialized", "labels.k8s-pod/vault-version", "labels.k8s-pod/vault-sealed", "labels.k8s-pod/vault-perf-standby", and "labels.k8s-pod/vault-active target.resource.attribute.labels Dipetakan dari log perubahan
labels.compute.googleapis.com/resource_name target.resource.name Dipetakan dari log perubahan
status network.http.response_code Dipetakan dari log perubahan
runner principal.user.userid Dipetakan dari log perubahan
job_id", "job_status additional.fields Dipetakan dari log perubahan
host observer.hostname Dipetakan dari log perubahan
cluster observer.resource.name Dipetakan dari log perubahan
cluster observer.resource.resource_type Dipetakan dari log perubahan

Log Perubahan

Melihat Log Perubahan untuk parser ini

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