收集 HashiCorp 稽核記錄
支援的國家/地區:
Google SecOps
SIEM
這個剖析器會處理 JSON、Syslog 或合併格式的 HashiCorp 稽核記錄。這項功能會擷取欄位、對標準和「執行器」類型的訊息執行 Grok 和 KV 剖析、處理 JSON 酬載,以及將擷取的資料對應至 UDM。剖析器也會處理錯誤,並捨棄格式錯誤的記錄。
事前準備
- 確認您有 Google Security Operations 執行個體。
- 確認您有 Windows 2016 以上版本,或是搭載 systemd 的 Linux 主機。
- 如果透過 Proxy 執行,請確認防火牆通訊埠已開啟。
- 確認您具備 HCP 的特殊權限。
取得 Google SecOps 擷取驗證檔案
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「收集代理程式」。
- 下載擷取驗證檔案。
取得 Google SecOps 客戶 ID
- 登入 Google SecOps 控制台。
- 依序前往「SIEM 設定」>「設定檔」。
- 複製並儲存「機構詳細資料」專區中的客戶 ID。
安裝 Bindplane 代理程式
- 如要在 Windows 上安裝,請執行下列指令碼:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- 如要在 Linux 上安裝,請執行下列指令碼:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- 如需其他安裝選項,請參閱這份安裝指南。
設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps
- 存取安裝 Bindplane 代理程式的機器。
按照下列方式編輯
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
重新啟動 Bindplane 代理程式,以套用變更:
sudo systemctl restart bindplane
為 HCP Vault 啟用 Syslog
- 登入 HCP 入口網站。
- 前往「Vault Clusters」。
- 從已部署的叢集清單中選取 Vault 叢集。
- 在「Cluster Overview」(叢集總覽) 中,找出並複製「Vault Address」(Vault 位址) (例如:https://vault-cluster-name.hashicorpcloud.com:8200)。
- 前往「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
- 開啟終端機或命令提示字元。
使用環境變數設定 Vault 伺服器位址:
export VAULT_ADDR="https://vault-cluster-name.hashicorpcloud.com:8200"
使用根權杖登入 Vault:
vault login <root-token>
將系統記錄檔路徑設定為外部系統記錄檔通訊端
執行下列指令,啟用系統記錄並傳送至 Bindplane 代理程式:
vault audit enable socket address="udp://<bindplane-ip>:<bindplane-port>" socket_type="udp" tag="vault"
確認新設定:
vault audit list
輸出結果應會顯示新的通訊端設定。
選用:使用 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.method 、operation |
原始記錄中的 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.value 、network.http.method 、operation |
原始記錄中的 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.seconds 、metadata.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 專業人員尋求答案。