ANSIBLE_AWX
このドキュメントでは、Bindplane を使用して Ansible AWX ログを Google Security Operations に取り込む方法について説明します。パーサーは、JSON 形式の Ansible AWX ログからフィールドを抽出します。JSON 解析を使用してログフィールドを抽出し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントソースとタイプのデフォルトのメタデータ値も設定します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス。
- Windows 2016 以降、または
systemd
を使用する Linux ホスト。 - プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- 管理者権限を持つ Ansible AWX 管理コンソールまたはアプライアンスへの特権アクセス。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/opt/observiq-otel-collector/
ディレクトリ、Windows ではC:Program FilesobservIQ OpenTelemetry Collector
ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Using high port to avoid requiring root privileges listen_address: "0.0.0.0:514" exporters: chronicle/awx: endpoint: malachiteingestion-pa.googleapis.com creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: YOUR_CUSTOMER_ID log_type: 'ANSIBLE_AWX' raw_log_field: body service: pipelines: logs/awx: receivers: - udplog exporters: - chronicle/awx
- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
YOUR_CUSTOMER_ID
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、ステップ 1 で認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で BindPlane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart observiq-otel-collector
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
sc stop observiq-otel-collector && sc start observiq-otel-collector
Ansible AWX で外部ロギングを構成する
- Ansible AWX 管理コンソールにログインします。
- ナビゲーション バーの [設定] に移動します。
- [システム] オプションから [ロギング設定] を選択します。
- 次の構成の詳細を入力します。
- ロギング アグリゲータ: Bindplane エージェントの IP アドレスを入力します。
- ロギング アグリゲータ ポート: Bindplane エージェントのポート番号(例:
514
)を入力します。 - ロギング アグリゲータ タイプ: リストから [その他] を選択します。
- Logging Aggregator Username: 空白のままにします(syslog には必要ありません)。
- ロギング アグリゲータのパスワード/トークン: 空白のままにします(syslog には必要ありません)。
- ロギング アグリゲータ プロトコル: [UDP] を選択します(syslog に推奨)。
- ロギング アグリゲータ レベルのしきい値: [情報] または任意のログレベルを選択します。
- 外部ロギングを有効にする: トグルを ON にします。
- ログ アグリゲータにデータを送信するロガー: 関連するログタイプを選択します。
awx
: 汎用サーバーログactivity_stream
: AWX オブジェクトの変更の記録job_events
: Ansible コールバック モジュールのデータsystem_tracking
: システムのファクトと構成データ
- Log System Tracking Facts Individually: オフに切り替えます(デフォルト)。
- [Save] をクリックして設定を適用します。
- 省略可: [テスト] をクリックして、Bindplane エージェントへの接続を確認します。
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 の値。 |
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 の値。event1_data.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 |
「ホスト 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」の場合は、「LINUX」に設定されます。 |
host.os.version |
target.platform_version |
未加工ログの host.os.version の値。 |
host_name |
principal.hostname |
event1_data.host が存在しない場合に使用される、未加工ログの host_name の値。 |
input.type |
network.ip_protocol |
input.type が「tcp」の場合は「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 が存在しない場合のフォールバックとして使用されます。 |
parent_uuid |
security_result.detection_fields.value |
未加工ログの parent_uuid の値。 |
timestamp |
metadata.event_timestamp |
日付フィルタを使用して解析された未加工ログの timestamp の値。ロジックによって決定されます。log.source.address が存在し、JSON に host.ip が存在する場合は「NETWORK_CONNECTION」、principal_hostname または event1_data.remote_addr が存在する場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」になります。「ANSIBLE_AWX」にハードコードされます。「ANSIBLE_AWX」にハードコードされます。「ANSIBLE_AWX」にハードコードされます。「ephemeral_id」にハードコードされています。マッピングされるフィールドに応じて、「machine_type」、「provider」、「availability_zone」にハードコードされます。「VIRTUAL_MACHINE」にハードコードされています。マッピングされるフィールドに応じて、「parent_uuid」、「task」、「task_uuid」にハードコードされます。マッピングされるフィールドに応じて、「codename」または「os_name」にハードコードされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。