【後編】HashiCorp Vaultの監視: Auditログの管理
前編に続き、監視ツールにDatadogを使い、Auditログの管理方法を紹介します。Vaultはシステムを利用するためのユーザーID/パスワードやクラウドの認証情報など重要な秘密情報を管理しているため、クライアントからのアクセスや行動履歴を監視し、記録しておくことが求められます。
【前編】の記事ではTelemetryデータの監視について取り上げました。今回はその後編としてAuditログの管理について説明します。
Auditログの管理について
Auditログの管理は監査上問題が発生した時に原因を究明し解消する有効な手段であり、また組織内部の関係者でも権限のない重要情報へのアクセスなど不正行為の抑止力になりうるため、運用に欠かせない要素の一つです。Vaultには「誰が」、「いつ」、「何をしたか」を記録するAudit Devicesと呼ばれる機能があります。形式は次の3つをサポートしています。
- File
- Syslog
- Socket
DatadogではVaultのAuditログ管理にFile形式を利用するため、VaultでAuditログをファイルに出力するように設定します。
VaultのAuditログを管理する流れ
Datadogを使ってVaultのAuditログを管理する流れは次のようになります。前回のTelemetryデータの監視で紹介したVaultとDatadogの設定が済んでいるものとしています。
- Datadog Agent側でVaultのAuditログを読み込めるようにする設定
- Vault側でAuditログをファイルに出力する設定
- Datadog側でログのステータスを仕分ける設定
- ダッシュボードでログを表示
各ステップをかいつまんで見ていきます。
1. Datadog Agent側でVaultのAuditログを読み込めるようにする設定
Datadog AgentがVaultのAuditログファイルを読み込めるようにするために、Datadog Agentで次の2点を設定します。
①Datadog Agent自体の設定ファイル*1でログ収集を有効にする
②Vault用の監視ツールの設定でデータソースとAuditログファイルの場所(今回は/var/log/vault-audit.log)を指定する
*1 /etc/datadog-agent/datadog.yaml ファイル
2. Vault側でAuditログをファイルに出力する設定
Vault側では、Audit Devices機能を有効にしてAuditログファイル名と出力先を設定します。設定は下記のコマンドで行います。
Audit Devices設定後に、Datadog AgentとVaultのサービスを再起動して設定を反映させます。尚、vault-audit.logファイルはDatadog Agent(dd-agentユーザー)が読み出せるよう権限を与える必要があります。AuditログがDatadogに正しく転送されていることを確認するため、意図的にVaultの認証を失敗させる操作を行います。ここでは、Vaultのトークン認証でトークンの代わりに任意の文字列を入れます。
Vault側では/var/log/vault-audit.logファイルにログが書き込まれていることを確認します。Datadog側ではDatadogにアクセスして、Logs画面でログが取得できていれば正しく動作しています。
Datadogで収集したログのステータスを見ると全て[INFO]になっています。今回はPermission deniedエラーを [ERROR]のステータスに仕分けることを行います。
3. Datadog側でログのステータスを仕分ける設定
Datadogではテキストで列挙されたログの場合、全て強制的にステータスが[INFO]で仕分けされます。ログのステータスを変更するために、パースするログのパイプライン上でステータスの再割り当てを行います。方法は何通りかありますが、今回はFacetとCategory Processorと呼ばれる機能を使って仕分けしました。Facetはログを検索するときのインデックスのような使い方ができます。Datadogで次の2点を設定します。
①Permission deniedエラーに対しFacetを作成する
②Vaultのログのパイプラインにステータスを再割り当てする処理を追加する*2
*2 Category ProcessorとStatus Remapperを使用
①Facetの作成
Permission deniedになったログをクリックしてJSONメッセージを表示させ、errorの左横にカーソルを当てると歯車アイコンが表示されますので、それをクリックしてCreate facetを選択します。また、作成するFacetはLogs画面でVAULTのカテゴリに入れるためグループをVaultにしました。
②ログのパイプライン編集
Vaultのログのパイプラインで、ステータスを再割り当てする処理を追加します。まず、Logs–Configuration をクリックしてパイプラインを表示させ、Vaultパイプラインの下に新しくパイプラインを作成します。パイプラインの名前は任意に指定できます(今回は名前をErrorHandlingにして作成)。パイプラインを作成したら、「+Add Processor」ボタンをクリックしてCategory ProcessorとStatus Remapperの2つを追加します。この2つのアイテムは各々のAttributeに共通の値(今回はauth.error)を指定して紐付けをします。
ステータスが変更するか確認するため、先と同様にVaultのトークン認証でトークンの代わりに任意の文字列を入れて認証を失敗させると、今度はログが期待通り「ERROR」に仕分けられました。
ただ、ログのパイプラインを編集する前に記録されたPermission deniedエラーのログは「INFO」のままになっています。過去に記録されたログデータは、ステータスの再割り当てができないようです。
4. ダッシュボードでログを表示
DatadogにはVaultを監視するためのテンプレートが標準で用意されています。TelemetryデータとAuditログ両方を監視するサンプルがあり、これをカスタマイズして利用できます。ダッシュボードをゼロから作成しなくてよいのでとても便利ですね。
まとめ
最後に、セキュリティの観点でVaultの監視における考慮すべき点をいくつか挙げます。
2回に渡ってVaultの監視について記載しましたが、今回の記事がみなさまのご参考になれば幸いです。