收集 HashiCorp 稽核記錄

支援的國家/地區:

這個剖析器會處理 JSON、Syslog 或合併格式的 HashiCorp 稽核記錄。這項功能會擷取欄位、對標準和「執行器」類型的訊息執行 Grok 和 KV 剖析、處理 JSON 酬載,以及將擷取的資料對應至 UDM。剖析器也會處理錯誤,並捨棄格式錯誤的記錄。

事前準備

  • 確認您有 Google Security Operations 執行個體。
  • 確認您有 Windows 2016 以上版本,或是搭載 systemd 的 Linux 主機。
  • 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟。
  • 確認您具備 HCP 的特殊權限。

取得 Google SecOps 擷取驗證檔案

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」
  3. 下載擷取驗證檔案

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「設定檔」
  3. 複製並儲存「機構詳細資料」專區中的客戶 ID

安裝 Bindplane 代理程式

  1. 如要在 Windows 上安裝,請執行下列指令碼:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 如要在 Linux 上安裝,請執行下列指令碼:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 如需其他安裝選項,請參閱這份安裝指南

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps

  1. 存取安裝 Bindplane 代理程式的機器。
  2. 按照下列方式編輯 config.yaml 檔案:

    receivers:
        udplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: auditd
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 重新啟動 Bindplane 代理程式,以套用變更:

    sudo systemctl restart bindplane
    

為 HCP Vault 啟用 Syslog

  1. 登入 HCP 入口網站
  2. 前往「Vault Clusters」
  3. 已部署的叢集清單中選取 Vault 叢集。
  4. 在「Cluster Overview」(叢集總覽) 中,找出並複製「Vault Address」(Vault 位址) (例如:https://vault-cluster-name.hashicorpcloud.com:8200)。
  5. 前往「Access Details」部分,然後複製「Root Token」

安裝 Vault CLI

  • Linux 系統:

    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install vault
    
  • macOS (使用 Homebrew):

    brew tap hashicorp/tap
    brew install hashicorp/tap/vault
    
  • Windows 系統:

    Download the executable file.
    Extract it and add the Vault binary to your system's PATH.
    
  • 執行下列指令,驗證 Vault CLI 安裝狀態:

    vault --version
    

使用 CLI 設定 HCP Vault,將稽核記錄傳送至 Bindplane

  1. 開啟終端機或命令提示字元。
  2. 使用環境變數設定 Vault 伺服器位址:

    export VAULT_ADDR="https://vault-cluster-name.hashicorpcloud.com:8200"
    
  3. 使用根權杖登入 Vault:

    vault login <root-token>
    

將系統記錄檔路徑設定為外部系統記錄檔通訊端

  1. 執行下列指令,啟用系統記錄並傳送至 Bindplane 代理程式:

    vault audit enable socket address="udp://<bindplane-ip>:<bindplane-port>" socket_type="udp" tag="vault"
    
  2. 確認新設定:

    vault audit list
    
  3. 輸出結果應會顯示新的通訊端設定。

  4. 選用:使用 Terraform 自動設定:

    • 建立 Terraform 設定檔 (audit.tf):
    resource "vault_audit" "syslog" {
      type        = "syslog"
      description = "Syslog audit logs"
      options = {
        tag      = "vault"
        facility = "LOCAL0"
      }
    }
    
    resource "vault_audit" "socket" {
      type        = "socket"
      description = "Remote syslog socket"
      options = {
        address     = "udp://<syslog-server-ip>:514"
        socket_type = "udp"
        tag         = "vault"
      }
    }
    
    • 套用設定:
    terraform init
    terraform apply
    

排解未收到記錄的問題

  • 確認 Syslog 伺服器可連線:

    ping <syslog-server-ip>
    

UDM 對應表

記錄欄位 UDM 對應 邏輯
auth.accessor security_result.about.resource.attribute.labels.value 原始記錄中的 auth.accessor 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「auth_accessor」的標籤。
auth.client_token security_result.about.resource.attribute.labels.value 原始記錄中的 auth.client_token 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「auth_client_token」的標籤。
auth.display_name target.user.user_display_name 原始記錄中的 auth.display_name 值會對應至 UDM 中的 target.user.user_display_name
auth.entity_id target.resource.product_object_id 原始記錄中的 auth.entity_id 值會對應至 UDM 中的 target.resource.product_object_id
auth.metadata.account_id target.user.userid 原始記錄中的 auth.metadata.account_id 值會對應至 UDM 中的 target.user.userid
auth.metadata.auth_type security_result.about.resource.attribute.labels.value 原始記錄中的 auth.metadata.auth_type 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方,鍵為「auth_type」的標籤。
auth.metadata.role_id security_result.about.resource.attribute.labels.value 原始記錄中的 auth.metadata.role_id 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「role_id」的標籤。
auth.metadata.role_name target.resource.attribute.roles.name 原始記錄中的 auth.metadata.role_name 值會對應至 UDM 中的 target.resource.attribute.roles.name
auth.token_ttl security_result.about.resource.attribute.labels.value 原始記錄中的 auth.token_ttl 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「auth_token_ttl」的標籤。
auth.token_type security_result.about.resource.attribute.labels.value 原始記錄中的 auth.token_type 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方,鍵為「auth_token_type」的標籤。
cluster observer.resource.name 原始記錄中的 cluster 值會對應至 UDM 中的 observer.resource.name
error security_result.description 原始記錄中的 error 值會對應至 UDM 中的 security_result.description
headers.accept security_result.about.resource.attribute.labels.value 原始記錄中的 headers.accept 值會對應至 UDM 中 security_result.about.resource.attribute.labels 底下,鍵為「httpHeaders accept」的標籤。
headers.httpHeaders.cache-control additional.fields.value.string_value 原始記錄中的 headers.httpHeaders.cache-control 值會對應至 UDM 中 additional.fields 下方鍵為「httpHeaders cache control」的欄位。
headers.snyk-acting-org-public-id principal.resource.attribute.labels.value 原始記錄中的 headers.snyk-acting-org-public-id 值會對應至 UDM 中 principal.resource.attribute.labels 下方,鍵為「snyk-acting-org-public-id」的標籤。
headers.snyk-flow-name principal.resource.attribute.labels.value 原始記錄中的 headers.snyk-flow-name 值會對應至 UDM 中 principal.resource.attribute.labels 下方鍵為「snyk-flow-name」的標籤。
headers.snyk-request-id principal.resource.attribute.labels.value 原始記錄中的 headers.snyk-request-id 值會對應至 UDM 中 principal.resource.attribute.labels 下方鍵為「snyk-request-id」的標籤。
headers.user-agent network.http.parsed_user_agent 原始記錄中的 headers.user-agent 值會剖析為使用者代理程式,並對應至 UDM 中的 network.http.parsed_user_agent
headers.x-forwarded-host principal.hostname 原始記錄中的 headers.x-forwarded-host 值會對應至 UDM 中的 principal.hostname
headers.x-forwarded-port principal.port 原始記錄中的 headers.x-forwarded-port 值會對應至 UDM 中的 principal.port
headers.x-real-ip principal.ip 原始記錄中的 headers.x-real-ip 值會對應至 UDM 中的 principal.ip
hostname observer.hostname 原始記錄中的 hostname 值會對應至 UDM 中的 observer.hostname
httpHeaders.cf-cache-status target.resource.attribute.labels.value 原始記錄中的 httpHeaders.cf-cache-status 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「cf-cache-status」的標籤。
httpHeaders.cf-ray target.resource.attribute.labels.value 原始記錄中的 httpHeaders.cf-ray 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「cf-ray」的標籤。
httpHeaders.content-length security_result.about.resource.attribute.labels.value 原始記錄中的 httpHeaders.content-length 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「httpHeaders Content-Length」的標籤。
httpHeaders.content-type security_result.about.resource.attribute.labels.value 原始記錄中的 httpHeaders.content-type 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「httpHeaders Content-Type」的標籤。
httpHeaders.gitlab-lb target.resource.attribute.labels.value 原始記錄中的 httpHeaders.gitlab-lb 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「gitlab-lb」的標籤。
httpHeaders.gitlab-sv target.resource.attribute.labels.value 原始記錄中的 httpHeaders.gitlab-sv 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「gitlab-sv」的標籤。
httpHeaders.ratelimit-limit target.resource.attribute.labels.value 原始記錄中的 httpHeaders.ratelimit-limit 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「ratelimit-limit」的標籤。
httpHeaders.ratelimit-observed target.resource.attribute.labels.value 原始記錄中的 httpHeaders.ratelimit-observed 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「ratelimit-observed」的標籤。
httpHeaders.ratelimit-remaining target.resource.attribute.labels.value 原始記錄中的 httpHeaders.ratelimit-remaining 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「ratelimit-remaining」的標籤。
httpHeaders.ratelimit-reset target.resource.attribute.labels.value 原始記錄中的 httpHeaders.ratelimit-reset 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「ratelimit-reset」的標籤。
httpHeaders.ratelimit-resettime target.resource.attribute.labels.value 原始記錄中的 httpHeaders.ratelimit-resettime 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「ratelimit-resettime」的標籤。
httpHeaders.referrer-policy target.resource.attribute.labels.value 原始記錄中的 httpHeaders.referrer-policy 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「referrer-policy」的標籤。
httpHeaders.server target.resource.attribute.labels.value 原始記錄中的 httpHeaders.server 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「server」的標籤。
httpHeaders.x-content-type-options target.resource.attribute.labels.value 原始記錄中的 httpHeaders.x-content-type-options 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「x-content-type-options」的標籤。
httpHeaders.x-frame-options target.resource.attribute.labels.value 原始記錄中的 httpHeaders.x-frame-options 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「x-frame-options」的標籤。
httpHeaders.x-request-id target.resource.attribute.labels.value 原始記錄中的 httpHeaders.x-request-id 值會對應至 UDM 中 target.resource.attribute.labels 底下,鍵為「x-request-id」的標籤。
httpStatus network.http.response_code 原始記錄中的 httpStatus 值會對應至 UDM 中的 network.http.response_code
httpUrl target.url 原始記錄中的 httpUrl 值會對應至 UDM 中的 target.url
insertId metadata.product_log_id 原始記錄中的 insertId 值會對應至 UDM 中的 metadata.product_log_id
job additional.fields.value.string_value 原始記錄中的 job 值會對應至 UDM 中 additional.fields 底下鍵為「job id」的欄位。
job_status additional.fields.value.string_value 原始記錄中的 job_status 值會對應至 UDM 中 additional.fields 下方鍵為「job_status」的欄位。
labels.compute.googleapis.com/resource_name target.resource.name 原始記錄中的 labels.compute.googleapis.com/resource_name 值會對應至 UDM 中的 target.resource.name
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/app_kubernetes_io/instance 值會對應至 UDM 中 target.resource.attribute.labels 下方,索引鍵為「Kubernetes IO Instance」的標籤。
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/app_kubernetes_io/name 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「Kubernetes IO Instance Name」的標籤。
labels.k8s-pod/component target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/component 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「component」的標籤。
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/controller-revision-hash 值會對應至 UDM 中 target.resource.attribute.labels 下方,索引鍵為「Controller Revision Hash」的標籤。
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/helm_sh/chart 值會對應至 UDM 中 target.resource.attribute.labels 下方,索引鍵為「Kubernetes IO Instance Manager SH」的標籤。
labels.k8s-pod/vault-active target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/vault-active 值會對應至 UDM 中 target.resource.attribute.labels 底下,鍵為「Vault active」的標籤。
labels.k8s-pod/vault-initialized target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/vault-initialized 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「Vault initialized」的標籤。
labels.k8s-pod/vault-perf-standby target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/vault-perf-standby 值會對應至 UDM 中 target.resource.attribute.labels 底下,鍵為「vault perf standby」的標籤。
labels.k8s-pod/vault-sealed target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/vault-sealed 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「Vault sealed」的標籤。
labels.k8s-pod/vault-version target.resource.attribute.labels.value 原始記錄中的 labels.k8s-pod/vault-version 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「Vault version」的標籤。
maskedToken security_result.about.resource.attribute.labels.value 原始記錄中的 maskedToken 值會對應至 UDM 中 security_result.about.resource.attribute.labels 下方鍵為「maskedToken」的標籤。
method network.http.methodoperation 原始記錄中的 method 值會對應至 operation。如果 operation 不為空白,則 network.application_protocol 會設為「HTTP」。network.http.method 是根據 operation 的值衍生而來。
msg metadata.description 原始記錄中的 msg 值會對應至 UDM 中的 metadata.description
pid target.process.pid 原始記錄中的 pid 值會對應至 UDM 中的 target.process.pid
request.client_token target.resource.attribute.labels.value 原始記錄中的 request.client_token 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「request_client_token」的標籤。
request.client_token_accessor target.resource.attribute.labels.value 原始記錄中的 request.client_token_accessor 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「request_client_token_accessor」的標籤。
request.data.role_id target.resource.attribute.labels.value 原始記錄中的 request.data.role_id 值會對應至 UDM 中 target.resource.attribute.labels 底下,鍵為「request_data_role_id」的標籤。
request.data.secret_id target.resource.attribute.labels.value 原始記錄中的 request.data.secret_id 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「request_data_secret_id」的標籤。
request.id network.session_id 原始記錄中的 request.id 值會對應至 UDM 中的 network.session_id
request.mount_accessor target.resource.attribute.labels.value 原始記錄中的 request.mount_accessor 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「request_mount_accessor」的標籤。
request.mount_type target.resource.attribute.labels.value 原始記錄中的 request.mount_type 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「request_mount_type」的標籤。
request.namespace.id target.namespace 原始記錄中的 request.namespace.id 值會對應至 UDM 中的 target.namespace
request.operation target.resource.attribute.labels.valuenetwork.http.methodoperation 原始記錄中的 request.operation 值會對應至 operation。如果 operation 不為空白,則 network.application_protocol 會設為「HTTP」。network.http.method 是根據 operation 的值衍生而來。request.operation 的值也會對應至 UDM 中 target.resource.attribute.labels 底下,鍵為「capabilities」的標籤。
request.path target.url 原始記錄中的 request.path 值會對應至 UDM 中的 target.url
request.remote_address principal.ip 原始記錄中的 request.remote_address 值會對應至 UDM 中的 principal.ip
request.remote_port principal.port 原始記錄中的 request.remote_port 值會對應至 UDM 中的 principal.port
request.wrap_ttl target.resource.attribute.labels.value 原始記錄中的 request.wrap_ttl 值會對應至 UDM 中 target.resource.attribute.labels 下方鍵為「request_wrap_ttl」的標籤。
resource.labels.container_name additional.fields.value.string_value 原始記錄中的 resource.labels.container_name 值會對應至 UDM 中 additional.fields 下方索引鍵為「容器名稱」的欄位。
resource.labels.location target.location.name 原始記錄中的 resource.labels.location 值會對應至 UDM 中的 target.location.name
resource.labels.namespace_name target.namespace 原始記錄中的 resource.labels.namespace_name 值會對應至 UDM 中的 target.namespace
resource.labels.pod_name additional.fields.value.string_value 原始記錄中的 resource.labels.pod_name 值會對應至 UDM 中 additional.fields 下方索引鍵為「pod_name」的欄位。
resource.labels.project_id target.cloud.project.name 原始記錄中的 resource.labels.project_id 值會對應至 UDM 中的 target.cloud.project.name
response.data.num_uses target.resource.attribute.labels.value 原始記錄中的 response.data.num_uses 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_data_num_uses」的標籤。
response.data.orphan target.resource.attribute.labels.value 原始記錄中的 response.data.orphan 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_data_orphan」的標籤。
response.data.renewable target.resource.attribute.labels.value 原始記錄中的 response.data.renewable 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_data_renewable」的標籤。
response.data.ttl target.resource.attribute.labels.value 原始記錄中的 response.data.ttl 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_data_ttl」的標籤。
response.wrap_info.accessor target.resource.attribute.labels.value 原始記錄中的 response.wrap_info.accessor 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_wrap_info_accessor」的標籤。
response.wrap_info.token target.resource.attribute.labels.value 原始記錄中的 response.wrap_info.token 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_wrap_info_token」的標籤。
response.wrap_info.ttl target.resource.attribute.labels.value 原始記錄中的 response.wrap_info.ttl 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_wrap_info_ttl」的標籤。
response.wrap_info.wrapped_accessor target.resource.attribute.labels.value 原始記錄中的 response.wrap_info.wrapped_accessor 值會對應至 UDM 中 target.resource.attribute.labels 下方,鍵為「response_wrap_info_wrapped_accessor」的標籤。
runner principal.user.userid 原始記錄中的 runner 值會對應至 UDM 中的 principal.user.userid
status network.http.response_code 原始記錄中的 status 值會對應至 UDM 中的 network.http.response_code
streamingID target.resource.attribute.labels.value 原始記錄中的 streamingID 值會對應至 UDM 中 target.resource.attribute.labels 底下鍵為「streamingID」的標籤。
time metadata.event_timestamp.secondsmetadata.event_timestamp.nanos 系統會剖析原始記錄中的 time 值,並用來填入 UDM 中的 metadata.event_timestamp 欄位。
type metadata.product_event_type 原始記錄中的 type 值會對應至 UDM 中的 metadata.product_event_type
url principal.url 原始記錄中的 url 值會對應至 UDM 中的 principal.url。「MACHINE」值會指派給 UDM 中的 extensions.auth.type。系統會在 UDM 中將「USER_LOGIN」值指派給 metadata.event_type。UDM 中的 metadata.log_type 會指派「HASHICORP」值。UDM 中的 metadata.product_name 會指派「HASHICORP」值。UDM 中的 metadata.vendor_name 會指派「HASHICORP」值。系統會將「SERVICE_ACCOUNT」值指派給 UDM 中的 target.resource.attribute.roles.type

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。