HashiCorp 監査ログを収集する

以下でサポートされています。

このパーサーは、JSON、Syslog、または結合形式の HashiCorp 監査ログを処理します。フィールドを抽出し、標準タイプと「ランナー」タイプの両方のメッセージに対して Grok と KV の解析を行い、JSON ペイロードを処理して、抽出されたデータを UDM にマッピングします。パーサーには、エラー処理と形式が不正なログの削除も含まれています。

始める前に

  • Google Security Operations インスタンスがあることを確認します。
  • Windows 2016 以降または systemd を使用する Linux ホストがあることを確認します。
  • プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
  • HCP に対する特権アクセス権があることを確認します。

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM Settings] > [Collection Agents] に移動します。
  3. Ingestion Authentication File をダウンロードします。

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. その他のインストール オプションについては、インストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane Agent を構成する

  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 クラスタ] に移動します。
  3. デプロイされたクラスタのリストから Vault クラスタを選択します。
  4. [クラスタの概要] で、[Vault アドレス](https://vault-cluster-name.hashicorpcloud.com:8200 など)を見つけてコピーします。
  5. [アクセス詳細] セクションに移動し、ルートトークンをコピーします。

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>
    

外部 Syslog ソケットへの Syslog パスを構成する

  1. 次のコマンドを実行して syslog を有効にし、Bindplane Agent に送信します。

    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」に設定されます。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.valuenetwork.http.methodoperation 未加工ログの 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.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 にマッピングされます。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 のプロフェッショナルから回答を得ることができます。