Vault の監査(Audit)は、全 API リクエストとレスポンスを耐改ざん性を意識した JSON で記録します。Ops では、これを Syslog に集約し、SIEM やログ基盤に連携する設計が定番です。
本稿は、公式仕様に沿って「ファイル監査デバイス」「ソケット監査デバイス」を使い分け、rsyslog/syslog-ng で集約する実装をまとめます。バージョン差異が出やすい箇所は注意書きを添え、認定試験(運用系)で問われやすい要点も押さえます。
Vault は 1 台に複数の監査デバイスを同時に有効化できます。一般的には、各ノードで JSON 監査ログを出力し、ローカルの syslog デーモン(rsyslog/syslog-ng)で収集・転送します。これにより、Vault の可用性とログ収集の責務を疎結合にできます。
Syslog への集約パターンは大きく 2 つです。1) ファイル監査デバイスでローカルに書き出し、syslog のファイル入力モジュールで収集。2) ソケット監査デバイスで /dev/log(unixgram)に直接書き込み、syslog に即時取り込み。どちらも公式ドキュメントに沿った安定パターンです。
| 方式 | 長所 | 注意点 | 代表的設定 |
|---|---|---|---|
| ファイル監査デバイス + rsyslog imfile | 安定・デバッグ容易。ファイル監視で取りこぼしに強い。 | ローテーションと I/O 監視が必要。権限と SELinux に注意。 | vault audit enable file file_path=/var/log/vault_audit.log |
| ソケット監査デバイス → /dev/log (unixgram) | カーネルバッファで低レイテンシ。ディスク不要。 | syslog が停止するとバックプレッシャ。/dev/log の型に注意。 | vault audit enable socket type=unixgram path=/dev/log |
| ソケット監査デバイス → 127.0.0.1:1514 (UDP/TCP) | ローカル以外にも転送可能。フォワーダと直結。 | ネットワーク途絶の影響を受けやすい。信頼区画で利用。 | vault audit enable socket type=udp address=127.0.0.1:1514 |
Vault 監査ログの Syslog 集約(代表パターン)
Alternative: Vault (socket unixgram) → /dev/log → rsyslog → SIEM
監査デバイスの一覧確認(詳細)
vault audit list -detailed最も移植性が高いのが、ファイル監査デバイスで JSON を出力し、rsyslog の imfile で収集する方式です。I/O とローテーションを適切に設計すれば、取りこぼしに強く、トラブル時の切り分けも容易です。
rsyslog 側では、入力(imfile)→ 必要に応じて整形 → リモートへ転送(TLS 推奨)という直列構成にします。Vault からは JSON が出力されるため、整形は不要なことが多いです。
Vault と rsyslog の代表構成(例)
# Vault: ファイル監査デバイスを有効化(本番で log_raw は使わない)
vault audit enable -path=file file file_path=/var/log/vault_audit.log mode=0600
# 動作確認(エントリ生成)
vault kv put secret/demo foo=bar
tail -n1 /var/log/vault_audit.log
# rsyslog: imfile で取り込み、TLS で中央へ転送(/etc/rsyslog.d/50-vault.conf)
module(load="imfile")
input(type="imfile" File="/var/log/vault_audit.log" Tag="vault" Severity="info" Facility="local6")
action(type="omfwd" Target="syslog.example.com" Port="6514" Protocol="tcp" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="syslog.example.com")
# 必要に応じてキューを有効化
# action(type="omfwd" ... queue.type="LinkedList" queue.size="10000" queue.filename="vault_audit")ディスクを経由せずに syslog に渡したい場合は、ソケット監査デバイスで /dev/log(unixgram)へ送ります。多くの Linux で /dev/log は datagram(unixgram)です。rsyslog や syslog-ng はこれを受けて標準のフィルタ・転送ルールを適用します。
バージョンによりオプション名やサポートが異なる場合があります。以下は代表的な指定例です。unix ドメインソケットは path、UDP/TCP は address と type を使います。運用投入前に開発者ドキュメントの該当バージョンを必ず確認してください。
ソケット監査デバイスの設定例
# /dev/log に送る(多くの Linux の syslog が受ける)
vault audit enable -path=syslog socket type=unixgram path=/dev/log
# ローカル rsyslog の UDP ポートへ送る
vault audit enable -path=udp1514 socket type=udp address=127.0.0.1:1514
# 確認
vault audit list -detailed
# 障害切り分け(例:ローカルで UDP 1514 を仮受信)
sudo nc -ul 1514ファイル方式では、ログローテーションの方式を明確化します。copytruncate はプロセスの再オープン不要ですが、極端な高負荷で一時的な取りこぼしの可能性があります。安全側に振るなら、十分なディスク余裕とキューを設けて転送を安定化します。
ソケット方式はディスクを介さない一方で、受け側が詰まると Vault にバックプレッシャが返り、最悪リクエスト処理に影響します。Syslog デーモン側のキュー、リモートへの堅牢な TCP/TLS 転送、再送設定が重要です。
logrotate の雛形(copytruncate 例。環境に合わせて調整)
/var/log/vault_audit.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
create 0600 vault vault
}Vault の監査ログは、シークレット値やトークン ID などの機密は HMAC 化されます。これによりログからの漏えいリスクを抑えつつ、同一値は同一ハッシュになる性質を使った相関が可能です。試験でも「監査ログに平文は残るか?」が定番です。答えは、log_raw=true にしない限り平文は出ません。
調査時にハッシュ値を逆算することはできませんが、vault audit hash コマンドで入力値を同じアルゴリズムで HMAC し、ログ中の値と突き合わせることができます。
ハッシュ照合の例(調査時のワークフロー)
# 例: file/ という監査デバイス上で 'bar' の HMAC を得る
vault audit hash file/ value=bar
# 出力されたハッシュが、監査ログの request.data.foo に対応していれば一致
# jq 等でログを検索
jq -r 'select(.request.data.foo=="<ハッシュ>")' /var/log/vault_audit.logOps 系の出題では「どの監査デバイスを選ぶべきか」「機密を平文で残さないための設定」「HA と複数デバイスの併用」「syslog 取りこぼし時の影響」などが狙われます。選択肢に log_raw=true が紛れていたら、まず除外してください。
トラブル時は、1) vault audit list -detailed、2) syslog 側の受信確認(/dev/log, UDP/TCP ポート)、3) 一時的に file を追加して比較、という順で最小切り分けを行うと迅速です。
即席の切り分け手順
# 監査デバイスの状態
vault audit list -detailed
# 追加で一時ファイル出力を有効化
aud_path=$(date +%s)
vault audit enable -path=file-$aud_path file file_path=/var/log/vault_audit_$aud_path.log mode=0600
# イベント生成と双方での到達確認
vault login -method=token token=<your-token>
tail -n1 /var/log/vault_audit_$aud_path.logOps
問題 1
本番の Vault クラスタで、機密を平文で残さず、ローカルの syslog に取り込みやすい構成として最も適切なのはどれか。
正解: A
監査ログは監査デバイスでのみ生成されます。機密の平文出力を避けるには log_raw を使わず、/dev/log への unixgram 送信は syslog 取り込みに適しています。Telemetry はメトリクスであり監査の代替にはなりません。
Vault に「syslog 監査デバイス」はありますか?
Vault の監査デバイスは公式に file と socket が安定的に提供されます。バージョンによっては直接の syslog デバイスが提供されない/推奨されない場合があるため、一般には file + rsyslog もしくは socket で /dev/log(unixgram)に送る構成を選びます。導入前に使用中バージョンのドキュメントを確認してください。
HA クラスタでは各ノードで個別設定が必要ですか?
監査デバイスはデフォルトでクラスタに複製され、すべてのノードに反映されます。個別ノード限定にしたい場合のみ local=true を指定します(デバッグ用途)。
ログローテーションはどう設計すべきですか?
ファイル方式では copytruncate を使うとプロセスの再オープン不要で安定しやすい一方、超高負荷時に一時取りこぼしのリスクがあります。十分なディスク余裕、rsyslog のキュー、リモート側の TCP/TLS での再送を組み合わせ、ローテーションはオフピークに実施すると安全です。ソケット方式ではローテーションは不要ですが、受け側のキューと可用性設計が重要です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token
HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...
Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる
HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...
Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く
HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...
Vault Tokens の基礎: 認証の起点となる概念
HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...
Vault のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...