HashiCorp 監査ログを収集する
このパーサーは、JSON、Syslog、または結合形式の HashiCorp 監査ログを処理します。フィールドを抽出し、標準タイプと「ランナー」タイプの両方のメッセージに対して Grok と KV の解析を行い、JSON ペイロードを処理して、抽出されたデータを UDM にマッピングします。パーサーには、エラー処理と形式が不正なログの削除も含まれています。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降または systemd を使用する Linux ホストがあることを確認します。
- プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- HCP に対する特権アクセス権があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM Settings] > [Collection Agents] に移動します。
- Ingestion Authentication File をダウンロードします。
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
- その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane Agent を構成する
- 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 クラスタ] に移動します。
- デプロイされたクラスタのリストから Vault クラスタを選択します。
- [クラスタの概要] で、[Vault アドレス](https://vault-cluster-name.hashicorpcloud.com:8200 など)を見つけてコピーします。
- [アクセス詳細] セクションに移動し、ルートトークンをコピーします。
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>
外部 Syslog ソケットへの Syslog パスを構成する
次のコマンドを実行して syslog を有効にし、Bindplane Agent に送信します。
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」に設定されます。operation の値に基づいて、network.http.method が導出されます。 |
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」に設定されます。operation の値に基づいて、network.http.method が導出されます。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 の下にあるキー「container name」のフィールドにマッピングされます。 |
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 にマッピングされます。UDM の extensions.auth.type には「MACHINE」という値が割り当てられます。UDM の metadata.event_type には「USER_LOGIN」という値が割り当てられます。UDM の metadata.log_type には「HASHICORP」という値が割り当てられます。UDM の metadata.product_name には「HASHICORP」という値が割り当てられます。UDM の metadata.vendor_name には「HASHICORP」という値が割り当てられます。UDM の target.resource.attribute.roles.type には「SERVICE_ACCOUNT」という値が割り当てられます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。