PowerDMARC Elastic SIEM 導入ガイド
はじめに
PowerDMARCのElastic SIEM統合により、メール認証およびドメインセキュリティ監査データをElastic Stack環境内でシームレスに取り込み、監視できます。PowerDMARC APIとElastic Agentの組み込みhttpjson入力機能を活用することで、組織は外部スクリプトや複雑な設定なしで効率的なSIEM統合を構築可能です。Kibanaウェブインターフェースから設定し、デプロイするだけで、全ドメインにわたるメールセキュリティ態勢を一元的に可視化できます。
このガイドでは、Elastic AgentのインストールからAPI統合の設定、フィールドマッピングとエンリッチメントのためのインジェストパイプラインの構築、監視ダッシュボードの作成まで、KibanaのWeb UIとDev Toolsコンソールを通じて行う完全なセットアップ手順を網羅しています。
APIドキュメント: https://app.powerdmarc.com/swagger-ui/index.html
代替ドキュメント: https://api.powerdmarc.com/
アーキテクチャ概要
この例では、テスト目的および説明のために監査ログエンドポイントを使用しています。
PowerDMARC REST API
↓
Elastic Agent(httpjson入力) — ホストにインストール済み
↓
Elasticsearch インジェストパイプライン(ECS マッピング、GeoIP、重複排除)
↓
Elasticsearch データストリーム (logs-powerdmarc.audit-*)
↓
Kibana(ディスカバー、ダッシュボード、アラート、検出ルール)
Elastic Agentはホストマシン(Windows、Linux、macOS)上で動作し、設定可能な間隔でPowerDMARC APIをポーリングします。各応答は個別の監査ログイベントに分割され、フィールドの正規化とエンリッチメントのために取り込みパイプラインで処理され、Elasticsearchデータストリームに保存されます。Kibanaが可視化とアラート機能を提供します。
前提条件
開始前に、以下のものを用意してください:
Elastic Stack 8.x のデプロイメント(Elastic Cloud またはセルフマネージド)と Kibana アクセス
Elasticデプロイメントでフリートが有効化されました
インジェストパイプライン、エージェントポリシー、パッケージポリシーの作成権限
Elastic Agentをインストールするホストマシン(Windows、Linux、またはmacOS)
監査ログへのアクセス権限を持つPowerDMARC APIベアラートークン
ホストからPowerDMARC APIおよびElasticsearchクラスターへのネットワーク接続
設定手順
すべての設定はKibana Dev Toolsコンソールを通じて行われます。これにより、パイプラインの作成、Fleetポリシーの管理、データ取り込みの確認を単一のインターフェースで実行できます。
ステップ1: デベロッパーツールコンソールを開く
ブラウザでKibanaのURLを開いてください。
左上のハンバーガーメニュー(☰)をクリックしてください。
管理までスクロールダウンし、開発者ツールをクリックしてください。
コンソールエディタは、左パネル(入力)と右パネル(応答)で起動します。
左パネルのデフォルトのサンプルコードをすべて削除してください。
ステップ2: インジェストパイプラインの作成
インジェストパイプラインは、生のPowerDMARC APIフィールドをElastic Common Schema(ECS)形式に正規化し、IPアドレスをGeoIPデータで補完し、重複排除用のフィンガープリントベースのドキュメントIDを生成します。
以下の内容を開発者ツールに貼り付けて実行してください:
PUT _ingest/pipeline/powerdmarc-audit-pipeline
{
"description": "PowerDMARC監査ログをECSフィールドに処理する",
"プロセッサー": [
{
"json": {
"field": "message",
"target_field": "powerdmarc"
}
},
{
"date": {
"field": "powerdmarc.created_at",
"形式": ["yyyy-MM-dd HH:mm:ss"],
"target_field": "@timestamp"
}
},
{
"rename": {
"field": "powerdmarc.user_name",
"target_field": "user.name",
"ignore_missing": true
}
},
{
"rename": {
"field": "powerdmarc.action",
"target_field": "event.action",
"ignore_missing": true
}
},
{
"rename": {
"field": "powerdmarc.ip_address",
"target_field": "source.ip",
"ignore_missing": true
}
},
{
"rename": {
"field": "powerdmarc.a_username",
"target_field": "user.target.name",
"ignore_missing": true
}
},
{
"rename": {
"field": "powerdmarc.other",
"target_field": "event.reason",
"ignore_missing": true
}
},
{ "set": { "field": "event.kind", "value": "event" } },
{ "set": { "field": "event.category", "value": "configuration" } },
{ "set": { "field": "observer.vendor", "value": "PowerDMARC" } },
{ "set": { "field": "observer.product", "value": "PowerDMARC" } },
{
"geoip": {
"field": "source.ip",
"target_field": "source.geo",
"ignore_missing": true
}
},
{
"fingerprint": {
"fields": ["user.name", "event.action",
"source.ip", "@timestamp"],
"target_field": "_id",
"ignore_missing": true
}
},
{
"remove": {
"field": ["powerdmarc", "message"],
"ignore_missing": true
}
}
]
}
期待される応答:
{ "acknowledged": true }
ステップ3: 代理店ポリシーIDを確認する
統合をアタッチするエージェントポリシーのIDが必要です。実行:
GET kbn:/api/fleet/agent_policies
レスポンス内で、使用するポリシーを特定し、そのID値をコピーします。複数のポリシーがある場合は、Elastic Agentを実行しているホストに割り当てられたポリシーを使用してください。通常、Fleet Serverポリシーではありません。
ステップ4: httpjson 統合の作成
これにより、PowerDMARC APIをポーリングし、認証、ページネーション、レスポンス分割を処理するFleet管理のhttpjson統合が作成されます。これらすべては単一のAPI呼び出しを通じて設定されます。
実行前に、 2つのプレースホルダーを:
YOUR_AGENT_POLICY_ID - ステップ3で取得したID
YOUR_POWERDMARC_API_KEY - あなたの PowerDMARC API ベアラートークン
POST kbn:/api/fleet/package_policies
{
"policy_ids": ["YOUR_AGENT_POLICY_ID"],
"package": { "name": "httpjson", "version": "1.24.0" },
"name": "powerdmarc-audit-logs",
"description": "PowerDMARC 監査ログ REST API 統合",
"namespace": "default",
"inputs": {
"generic-httpjson": {
"有効": true,
"streams": {
"httpjson.generic": {
"有効": true,
"vars": {
"data_stream.dataset": "powerdmarc.audit",
"pipeline": "powerdmarc-audit-pipeline",
"request_url": "https://app.powerdmarc.com/api/v1/audit-logs",
"request_interval": "60m",
"request_method": "GET",
"request_transforms": [
{
"set": {
"target": "url.params.api_key",
"value": "ここにあなたのAPIキーを入力してください"
}
}
],
"response_split": "target: body.data",
"response_pagination": [
{
"set": {
"target": "url.params.page",
"value": "[[.last_response.body.current_page]]",
"fail_on_template_error": true
}
}
],
"request_redirect_headers_ban_list": [],
"oauth_scopes": [],
"タグ": ["転送済み", "PowerdMARC監査"]
}
}
}
}
}
}
期待される応答:
{
"item": {
"id": "<integration-id>",
"name": "powerdmarc-audit-logs",
...
}
}
ステップ5: Elastic Agentのインストール
Elastic Agentは、PowerDMARC APIとElasticsearchクラスターの両方にネットワークアクセス可能なホストマシンにインストールする必要があります。エージェントはサービスとして実行され、Fleetを通じてリモートで管理されます。
エージェントはElasticのウェブサイトから直接ダウンロードできます こちら
ステップ6: データ取り込みの検証
エージェントがポリシーを取得した後(通常1~2分以内)、最初のAPIフェッチは自動的に実行されるはずです。データが正常に流れていることを確認してください:
6a. 文書数の確認
開発者ツールで:
GET logs-powerdmarc.audit-*/_count
0より大きいカウント値は、データが着信していることを確認します。
6b. サンプル文書を検査する
GET logs-powerdmarc.audit-*/_search?size=1
文書が適切に解析されたECSフィールドを含んでいることを確認してください:
user.name — アクションを実行したユーザー名
イベントアクション — 実行されたアクションの説明
source.ip — 発信元IPアドレス
source.geo.* — GeoIP エンリッチメント(国、都市、座標)
@timestamp — 解析済みイベントタイムスタンプ
6c. Discoverで確認する
アナリティクス → ディスカバー に移動します。
データビューのドロップダウンをクリックし、logs-powerdmarc.audit-* 用のデータビューを選択または作成してください。
時間範囲を「過去30日間」に設定してください。
監査ログイベントは、マッピングされた全フィールドと共に表示されるべきである。
ステップ7: Kibanaデータビューの作成
専用のデータビューを作成し、PowerDMARCの監査データがDiscoverに表示され、ダッシュボードの可視化で使用できるようにします。
開発者ツールで実行:
POST kbn:/api/data_views/data_view
{
"data_view": {
"title": "logs-powerdmarc.audit-*",
"name": "PowerDMARC 監査ログ",
"timeFieldName": "@timestamp"
}
}
返されたID値に注意してください — ダッシュボードパネルをプログラムで作成する場合に必要です。
ステップ8: ダッシュボードを構築する
このガイドの末尾に添付されている dashboard.txt をダウンロードし、開発者ツールで実行するとダッシュボードが自動生成されます
次のステップ
この時点で、PowerDMARCの監査ログはElasticに正常に取り込まれました。これで以下の操作が可能になります:
不審なアクティビティ(例:予期しないIPアドレスや国からのログイン、ログイン失敗、一括設定変更)に対する検知ルールを作成する
Elasticの組み込みアラート機能またはメール、Slackなどへのコネクタを介してアラートを設定します。
PowerDMARCの監査データをSIEM内の他のセキュリティログと関連付け、包括的な脅威検知を実現する
PowerDMARC APIの追加エンドポイント(DMARC集計レポート、フォレンジックレポート)への統合を拡張する
Kibanaのレポート機能を使用してコンプライアンスレポートを作成する