Ansible AWX ログを収集する
概要
このパーサーは、Ansible AWX から JSON 形式のログデータを抽出し、統合データモデル(UDM)に変換します。さまざまなログ形式を処理し、タイムスタンプ、IP アドレス、ホスト情報、イベントの詳細など、関連するフィールドを抽出して対応する UDM フィールドにマッピングします。また、特定のエッジケースを処理し、ラベルとメタデータでデータを拡充します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Ansible AWX への特権アクセス権があることを確認します。
Ansible AWX ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Ansible AWX ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [ログタイプ] として [Ansible AWX] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
- [完了] をクリックします。
Webhook フィードの API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Google Security Operations API に制限します。
エンドポイント URL を指定する
- クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL ではなくヘッダーとして指定してください。Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
次のように置き換えます。
ENDPOINT_URL
: フィードのエンドポイント URL。API_KEY
: Google Security Operations の認証に使用する API キー。SECRET
: フィードの認証用に生成したシークレット キー。
Ansible AWX で Webhook を構成する
- AWX インスタンスにログインします。
- [管理] の [通知] セクションに移動します。
- [追加] をクリックします。
Webhook の設定を構成します。
- 名前: Webhook のわかりやすい名前を指定します(例: Google SecOps Webhook)。
- タイプ: リストから [Webhook] を選択します。
- ターゲット URL: Google SecOps API エンドポイントの URL を入力します。
- HTTP Method: [POST] を選択します。
省略可: HTTP ヘッダー: 認証やコンテンツ タイプに必要なヘッダーを追加します。たとえば、署名なしトークンを含む
Authorization
ヘッダーを含める必要がある場合があります。ヘッダーの具体的な要件については、Google SecOps のドキュメントをご覧ください。[保存] をクリックして、Webhook を作成します。
[リソース] の [プロジェクト] に移動します。
Webhook を関連付けるプロジェクトを選択します。
選択したプロジェクトで、[通知] タブに移動します。
先ほど作成した Webhook 通知の開始 | 成功 | 失敗のいずれのトリガーをオンにするかを選択します。
通知は、プロジェクトに関連付けられているすべてのテンプレートに適用されるようになりました。各テンプレートの [通知] フィールドに移動して、手動で無効にできます。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
agent.ephemeral_id |
observer.labels.value |
未加工ログの agent.ephemeral_id の値。 |
agent.hostname |
observer.hostname |
未加工ログの agent.hostname の値。 |
agent.id |
observer.asset_id |
「filebeat:」と未加工ログの agent.id の値を連結したものです。 |
agent.name |
observer.user.userid |
未加工ログの agent.name の値。 |
agent.type |
observer.application |
未加工ログの agent.type の値。 |
agent.version |
observer.platform_version |
未加工ログの agent.version の値。 |
cloud.availability_zone |
principal.resource.attribute.labels.value |
未加工ログの cloud.availability_zone の値。 |
cloud.instance.id |
principal.resource.product_object_id |
未加工ログの cloud.instance.id の値。 |
cloud.instance.name |
principal.resource.name |
未加工ログの cloud.instance.name の値。 |
cloud.machine.type |
principal.resource.attribute.labels.value |
未加工ログの cloud.machine.type の値。 |
cloud.provider |
principal.resource.attribute.labels.value |
未加工ログの cloud.provider の値。 |
event1 |
metadata.description |
未加工ログの event1 の値。event1 が存在しない場合、message の値が使用されます。 |
event1_data.host |
principal.hostname |
未加工ログの event1_data.host の値。host_name と host が存在しない場合、代替として使用されます。 |
event1_data.remote_addr |
principal.ip |
grok パターンを使用して event1_data.remote_addr から抽出された IP アドレス。 |
event1_data.task |
security_result.detection_fields.value |
未加工ログの event1_data.task の値。 |
event1_data.task_path |
principal.process.file.full_path |
未加工ログの event1_data.task_path の値。 |
event1_data.task_uuid |
security_result.detection_fields.value |
未加工ログの event1_data.task_uuid の値。 |
event1_data.uuid |
metadata.product_log_id |
未加工ログの event1_data.uuid の値。 |
event1_display |
security_result.description |
未加工ログの event1_display の値。 |
host |
principal.hostname |
未加工ログの host の値。host_name が存在しない場合の代替として使用されます。数値の場合は、文字列に変換されます。 |
host.architecture |
target.asset.hardware.cpu_platform |
未加工ログの host.architecture の値。 |
host.fqdn |
target.administrative_domain |
未加工ログの host.fqdn の値。 |
host.hostname |
target.hostname |
未加工ログの host.hostname の値。 |
host.id |
target.asset.asset_id |
「Host Id:」と、未加工ログの host.id の値を連結したもの。 |
host.ip |
target.asset.ip |
未加工ログの host.ip 配列の値。 |
host.mac |
target.mac |
未加工ログの host.mac 配列の値。 |
host.os.codename |
target.asset.attribute.labels.value |
未加工ログの host.os.codename の値。 |
host.os.kernel |
target.platform_patch_level |
未加工ログの host.os.kernel の値。 |
host.os.name |
target.asset.attribute.labels.value |
未加工ログの host.os.name の値。 |
host.os.platform |
target.platform |
host.os.platform の値が「debian」の場合、UDM フィールドは「LINUX」に設定されます。 |
host.os.version |
target.platform_version |
未加工ログの host.os.version の値。 |
host_name |
principal.hostname |
未加工ログの host_name の値。 |
input.type |
network.ip_protocol |
input.type の値が「tcp」の場合、UDM フィールドは「TCP」に設定されます。 |
level |
security_result.severity |
level の値に基づいて、「DEBUG」、「INFO」、「AUDIT」は「INFORMATIONAL」にマッピングされ、「ERROR」は「ERROR」にマッピングされ、「WARNING」は「MEDIUM」にマッピングされます。 |
level |
security_result.severity_details |
未加工ログの level の値。 |
log.source.address |
principal.ip |
grok パターンを使用して log.source.address から抽出された IP アドレス。 |
log.source.address |
principal.port |
Grok パターンを使用して log.source.address から抽出されたポート。 |
logger_name |
intermediary.application |
未加工ログの logger_name の値。 |
message |
metadata.description |
未加工ログの message の値。event1 が存在しない場合の代替として使用されます。 |
metadata.event_type |
metadata.event_type |
特定のフィールドの有無に基づいてパーサー ロジックによって決定されます。log.source.address と host.ip が存在する場合は「NETWORK_CONNECTION」。principal_hostname または event1_data.remote_addr が存在する場合は「STATUS_UPDATE」。それ以外の場合は「GENERIC_EVENT」です。 |
metadata.log_type |
metadata.log_type |
「ANSIBLE_AWX」にハードコードされています。 |
metadata.product_name |
metadata.product_name |
「ANSIBLE_AWX」にハードコードされています。 |
metadata.vendor_name |
metadata.vendor_name |
「ANSIBLE_AWX」にハードコードされています。 |
parent_uuid |
security_result.detection_fields.value |
未加工ログの parent_uuid の値。 |
principal.resource.resource_type |
principal.resource.resource_type |
cloud.instance.name が存在する場合は「VIRTUAL_MACHINE」にハードコードされます。 |
observer.labels.key |
observer.labels.key |
「ephemeral_id」にハードコードされました。 |
principal.resource.attribute.labels.key |
principal.resource.attribute.labels.key |
マッピングされるフィールドに応じて、「machine_type」、「provider」、「availability_zone」にハードコードされます。 |
security_result.detection_fields.key |
security_result.detection_fields.key |
マッピングされるフィールドに応じて、「parent_uuid」、「task」、「task_uuid」にハードコードされます。 |
target.asset.attribute.labels.key |
target.asset.attribute.labels.key |
マッピングされるフィールドに応じて、「codename」または「os_name」にハードコードされています。 |
timestamp |
metadata.event_timestamp |
未加工ログの timestamp の値。解析され、タイムスタンプに変換されます。 |
timestamp |
timestamp |
未加工ログの timestamp の値。解析され、タイムスタンプに変換されます。 |
変更点
2022-11-09
- 新しく作成されたパーサー。