OpenCanary のログを収集する
概要
このパーサーは、OpenCanary SYSLOG ログと JSON ログからフィールドを抽出し、UDM 形式に正規化して、metadata.event_type
や security_result.severity
などの派生フィールドでデータを拡充します。さまざまなログ形式を処理し、IP アドレスの検証を行い、フィールドを principal
、target
、network
などの適切な UDM オブジェクトにマッピングします。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- OpenCanary への特権アクセス。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: OpenCanary Logs)。
- [Source type] として [Webhook] を選択します。
- [Log type] として [OpenCanary] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
- Split delimiter: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- フィード名: フィードを識別する値が事前入力されています。
- ソースタイプ: ログを Google SecOps に収集するために使用される方法。
- アセット Namespace: フィードに関連付けられた Namespace。
Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント 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
: フィードの認証用に生成した秘密鍵。
Google SecOps 用の OpenCanary Webhook を設定する
OpenCanary 構成ファイル
config.json
を見つけます。テキスト エディタで
config.json
ファイルを開きます。構成ファイル内で alerters というラベルの付いたセクションを見つけます。
webhook
アラートがすでに存在する場合は、それを変更します。それ以外の場合は、webhook
アラートの新しいエントリを追加します。次の構成を使用します(ENDPOINT_URL、SECRET、API_KEY は実際の値に置き換えてください)。
"handlers": {
"Webhook": {
"class": "opencanary.logger.WebhookHandler",
"url": "<ENDPOINT_URL>",
"method": "POST",
"data": {"message": "%(message)s"},
"status_code": 200,
"headers": {
"X-Webhook-Access-Key": "<SECRET>",
"X-goog-api-key": "<API_KEY>"
}
}
}
config.json
ファイルを保存します。- OpenCanary サービスを再起動して変更を適用します(例:
sudo systemctl restart opencanary
)。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
dst_host |
target.asset.ip |
未加工ログの dst_host フィールドは UDM にマッピングされます。target.ip にもマッピングされます。 |
dst_host |
target.ip |
未加工ログの dst_host フィールドは UDM にマッピングされます。target.asset.ip にもマッピングされます。 |
dst_port |
target.port |
未加工ログの dst_port フィールドは文字列に変換され、その後整数に変換されて UDM にマッピングされます。 |
local_time |
metadata.event_timestamp |
未加工ログの local_time フィールドは、UDM の metadata.event_timestamp に値を設定するために使用されます。local_time フィールドが存在しない場合、パーサーはバッチ オブジェクトの create_time を使用します。 |
local_time_adjusted |
security_result.detection_fields |
未加工ログの local_time_adjusted フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。 |
logdata.COMMUNITY_STRING |
security_result.detection_fields |
未加工ログの logdata.COMMUNITY_STRING フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。 |
logdata.DOMAIN |
principal.administrative_domain |
未加工ログの logdata.DOMAIN フィールドは UDM にマッピングされます。 |
logdata.FILENAME |
target.file.full_path |
未加工ログの logdata.FILENAME フィールドが UDM にマッピングされます。 |
logdata.HOSTNAME |
principal.asset.hostname |
logdata.HOSTNAME フィールドが IP アドレスでない場合は、UDM にマッピングされます。principal.hostname にもマッピングされます。 |
logdata.HOSTNAME |
principal.asset.ip |
logdata.HOSTNAME フィールドが IP アドレスの場合、UDM にマッピングされます。principal.ip にもマッピングされます。 |
logdata.HOSTNAME |
principal.hostname |
logdata.HOSTNAME フィールドが IP アドレスでない場合は、UDM にマッピングされます。principal.asset.hostname にもマッピングされます。 |
logdata.HOSTNAME |
principal.ip |
logdata.HOSTNAME フィールドが IP アドレスの場合、UDM にマッピングされます。principal.asset.ip にもマッピングされます。 |
logdata.LOCALNAME |
principal.asset.hostname |
未加工ログの logdata.LOCALNAME フィールドは UDM にマッピングされます。principal.hostname にもマッピングされます。 |
logdata.LOCALNAME |
principal.hostname |
未加工ログの logdata.LOCALNAME フィールドは UDM にマッピングされます。principal.asset.hostname にもマッピングされます。 |
logdata.LOCALVERSION |
principal.platform_version |
未加工ログの logdata.LOCALVERSION フィールドが UDM にマッピングされます。 |
logdata.PASSWORD |
extensions.auth.mechanism |
logdata.PASSWORD フィールドが存在すると、パーサーがトリガーされ、UDM の extensions.auth.mechanism が USERNAME_PASSWORD に設定されます。 |
logdata.PATH |
network.http.referral_url |
未加工ログの logdata.PATH フィールドが UDM にマッピングされます。 |
logdata.REMOTENAME |
target.asset.hostname |
未加工ログの logdata.REMOTENAME フィールドは UDM にマッピングされます。target.hostname にもマッピングされます。 |
logdata.REMOTENAME |
target.hostname |
未加工ログの logdata.REMOTENAME フィールドは UDM にマッピングされます。target.asset.hostname にもマッピングされます。 |
logdata.REMOTEVERSION |
target.platform_version |
未加工ログの logdata.REMOTEVERSION フィールドが UDM にマッピングされます。 |
logdata.SMBVER |
network.application_protocol |
logdata.SMBVER フィールドが存在すると、パーサーがトリガーされ、UDM の network.application_protocol が SMB に設定されます。 |
logdata.USERAGENT |
network.http.parsed_user_agent |
未加工ログの logdata.USERAGENT フィールドは、解析されたユーザー エージェントに変換され、UDM にマッピングされます。 |
logdata.USERAGENT |
network.http.user_agent |
未加工ログの logdata.USERAGENT フィールドが UDM にマッピングされます。 |
logdata.USERNAME |
target.user.userid |
未加工ログの logdata.USERNAME フィールドが UDM にマッピングされます。 |
loglevel |
security_result.severity |
未加工ログの loglevel フィールドによって、UDM の security_result.severity が決まります。WARNING は HIGH に、INFO /INFORMATION は LOW にマッピングされます。 |
logtype |
security_result.detection_fields |
未加工ログの logtype フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。 |
node_id |
principal.asset.asset_id |
未加工ログの node_id フィールドに「id:」が追加され、UDM にマッピングされます。 |
src_host |
principal.asset.ip |
未加工ログの src_host フィールドは UDM にマッピングされます。principal.ip にもマッピングされます。 |
src_host |
principal.ip |
未加工ログの src_host フィールドは UDM にマッピングされます。principal.asset.ip にもマッピングされます。 |
src_port |
principal.port |
未加工ログの src_port フィールドは整数に変換され、UDM にマッピングされます。 |
utc_time |
security_result.detection_fields |
未加工ログの utc_time フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。