Atlassian Jira ログを収集する
概要
このパーサーは、SYSLOG 形式と JSON 形式の Atlassian Jira ログを処理します。まず、メッセージを JSON として解析しようとします。解析に失敗した場合は、grok パターンを使用して SYSLOG 形式のメッセージを解析し、IP アドレス、ユーザー名、HTTP メソッド、レスポンス コードなどのさまざまなフィールドを抽出して UDM にマッピングします。また、ログインの成功や失敗など、特定の Jira 監査イベントも処理し、関連するフィールドを UDM 内のセキュリティ結果属性にマッピングします。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Atlassian Jira への特権アクセス権があることを確認します。
Atlassian Jira ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Atlassian Jira ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [ログタイプ] で [Atlassian Jira] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\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
: フィードの認証用に生成したシークレット キー。
Google SecOps 用に Atlassian Jira で Webhook を作成する
- 管理者として Jira インスタンスにアクセスします。
- [設定] 設定 > [システム] > [Webhook] に移動します。
- [Create a WebHook] をクリックします。
- 次の Webhook の詳細を構成します。
- 名前: Webhook のわかりやすい名前を指定します(例: Google SecOps 統合)。
- URL: Google SecOps API エンドポイントの URL を入力します。
- イベント: Webhook をトリガーする Jira イベントを選択します。セキュリティ モニタリングのニーズに関連するイベントを選択します(問題の作成、問題の更新、コメントの追加など)。必要に応じて [すべてのイベント] を選択できます。
- 省略可: JQL フィルタ: JQL フィルタを使用して、Webhook をトリガーするイベントをさらに絞り込みます。これは、特定のプロジェクト、問題の種類、その他の条件に焦点を当てる場合に便利です。
- 本文を除外する: チェックボックスはオフのままにします。Webhook は、イベントデータを JSON 形式で Google SecOps に送信する必要があります。
- [作成] をクリックして、Webhook の構成を保存します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
affectedObjects.id |
target.resource.attribute.labels.value |
affectedObjects 配列の各オブジェクト内の id フィールドは、キー「ID_[index]」を持つラベルにマッピングされます。[index] は、配列内のオブジェクトの位置です。 |
affectedObjects.name |
target.resource.attribute.labels.value |
affectedObjects 配列の各オブジェクト内の name フィールドは、キー「Name_[index]」を持つラベルにマッピングされます。[index] は、配列内のオブジェクトの位置です。 |
affectedObjects.type |
target.resource.attribute.labels.value |
affectedObjects 配列の各オブジェクト内の type フィールドは、キー「Type_[index]」([index] は配列内のオブジェクトの位置)を持つラベルにマッピングされます。 |
associatedItems.0.id |
target.user.userid |
associatedItems.0.typeName が「USER」の場合、このフィールドは target.user.userid にマッピングされます。それ以外の場合は、security_result.detection_fields のキー「associatedItems Id」を持つラベルにマッピングされます。 |
associatedItems.0.name |
target.user.user_display_name |
associatedItems.0.typeName が「USER」の場合、このフィールドは target.user.user_display_name にマッピングされます。それ以外の場合は、security_result.detection_fields のキー「associatedItems Name」を持つラベルにマッピングされます。 |
associatedItems.0.parentId |
target.process.parent_process.pid |
associatedItems.0.typeName が「USER」の場合、このフィールドは target.process.parent_process.pid にマッピングされます。 |
associatedItems.0.parentName |
target.resource.parent |
associatedItems.0.typeName が「USER」の場合、このフィールドは target.resource.parent にマッピングされます。 |
associatedItems.0.typeName |
security_result.detection_fields.value |
security_result.detection_fields のキー「associatedItems TypeName」を持つラベルにマッピングされます。 |
author.id |
principal.user.userid |
principal.user.userid にマッピングされます。 |
author.name |
principal.user.user_display_name |
principal.user.user_display_name にマッピングされます。 |
author.type |
principal.resource.attribute.labels.value |
principal.resource.attribute.labels のキー「Author Type」のラベルにマッピングされています。 |
author.uri |
principal.url |
principal.url にマッピングされます。 |
authorAccountId |
principal.user.userid |
principal.user.userid にマッピングされます。 |
authorKey |
target.resource.attribute.labels.value |
target.resource.attribute.labels のキー「Author Key」を持つラベルにマッピングされます。 |
auditType.action |
security_result.summary |
security_result.summary にマッピングされます。security_result.action と metadata.event_type の導出にも使用されます(アクションに「login」が含まれている場合は USER_LOGIN、成功した場合は ALLOW、失敗した場合は BLOCK)。 |
auditType.area |
metadata.product_event_type |
metadata.product_event_type にマッピングされます。 |
auditType.category |
security_result.category_details |
security_result.category_details にマッピングされます。 |
category |
metadata.product_event_type |
metadata.product_event_type にマッピングされます。 |
changedValues.changedFrom |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキーが「Changed From」のラベルにマッピングされました。 |
changedValues.changedTo |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキー「Changed To」のラベルにマッピングされました。 |
changedValues.fieldName |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキー「FieldName」を持つラベルにマッピングされます。 |
changedValues.i18nKey |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキー「FieldName」を持つラベルにマッピングされます。 |
changedValues.key |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキー「Changed From」のラベルにマッピングされました。 |
changedValues.to |
security_result.about.resource.attribute.labels.value |
security_result.about.resource.attribute.labels のキー「Changed To」のラベルにマッピングされました。 |
created |
metadata.event_timestamp |
解析され、metadata.event_timestamp にマッピングされます。 |
dst_ip |
target.ip |
target.ip にマッピングされます。 |
extraAttributes.name |
principal.resource.attribute.labels.value |
principal.resource.attribute.labels のキー「Name」を持つラベルにマッピングされます。 |
extraAttributes.value |
principal.resource.attribute.labels.value |
principal.resource.attribute.labels のキー「Value」を持つラベルにマッピングされます。 |
http_method |
network.http.method |
network.http.method にマッピングされます。 |
http_referral_url |
network.http.referral_url |
network.http.referral_url にマッピングされます。 |
id |
metadata.product_log_id |
metadata.product_log_id にマッピングされます。 |
objectItem.id |
security_result.detection_fields.value |
security_result.detection_fields のキー「objectItem Id」を持つラベルにマッピングされています。 |
objectItem.name |
security_result.detection_fields.value |
security_result.detection_fields のキー「objectItem Name」のラベルにマッピングされています。 |
objectItem.typeName |
security_result.detection_fields.value |
security_result.detection_fields のキー「objectItem TypeName」を持つラベルにマッピングされました。 |
path |
principal.url |
「-」または「/status」でない場合、principal.url にマッピングされます。 |
protocol |
network.ip_protocol |
「HTTP」の場合は network.ip_protocol にマッピングされます。 |
remoteAddress |
principal.ip |
principal.ip にマッピングされます。 |
response_code |
network.http.response_code |
network.http.response_code にマッピングされます。 |
sent_bytes |
network.sent_bytes |
network.sent_bytes にマッピングされます。 |
source |
principal.ip |
解析して IP アドレスを抽出し、principal.ip に統合。 |
src_ip1 、src_ip2 、src_ip3 |
principal.ip |
principal.ip にマッピングされます。 |
summary |
metadata.description |
metadata.description にマッピングされます。 |
user_agent |
network.http.user_agent |
network.http.user_agent にマッピングされます。 |
user_name |
principal.user.userid |
principal.user.userid にマッピングされます。auditType.action に「login」が含まれている場合は、「MACHINE」に設定します。syslog を解析する場合は date_time から、JSON を解析する場合は created から派生します。JSON で timestamp が使用可能な場合は、created の代わりに使用されます。これらのいずれも存在しない場合は、バッチの create_time が使用されます。他のフィールドの存在に基づいて導出されます。dst_ip が存在する場合は NETWORK_HTTP、user_name が存在する場合、または(associatedItems.0.typeName が「USER」で associatedItems.0.id が存在する場合)は USER_UNCATEGORIZED、src_ip1 、src_ip2 、src_ip3 、remoteAddress が存在する場合は STATUS_UPDATE、それ以外の場合は GENERIC_EVENT です。auditType.action に「login」が含まれている場合は、USER_LOGIN にオーバーライドされます。常に「ATLASSIAN_JIRA」に設定します。常に「ATLASSIAN_JIRA」に設定します。auditType.action に「login successful」が含まれている場合は「ALLOW」、auditType.action に「login failed」が含まれている場合は「BLOCK」に設定します。 |
変更点
2023-12-12
- 複数の IP アドレスを「source」から「principal.ip」にマッピングするサポートが追加されました。
2023-11-10
- 失敗した JSON ログを解析するための新しい Grok パターンを追加しました。
- 「affectedObjects」を「target.resource.attribute.labels」にマッピングしました。
- 「changedValues」を「security_result.about.resource.attribute.labels」にマッピングしました。
- 「extraAttributes」を「principal.resource.attribute.labels」にマッピングしました。
- 「source」を「principal.ip」にマッピングしました。
- 「author.id」、「author.name」、「author.uri」、「author.type」、「auditType.area」、「auditType.category」、「auditType.action」をそれぞれ「principal.user.userid」、「principal.user.user_display_name」、「principal.url」、「principal.resource.attribute.labels」、「metadata.product_event_type」、「security_result.category_details」、「security_result.summary」にマッピングしました。
2023-02-09
- JSON データを取得するための「json」ブロックを追加しました。
2023-01-10
- 機能拡張 - JSON 形式のログのサポートを追加しました。
- 「authorAccountId」を「principal.user.userid」にマッピングしました。
- 「id」を「metadata.product_log_id」にマッピングしました。
- 「remoteAddress」を「principal.ip」にマッピングしました。
- 「summary」を「metadata.description」にマッピングしました。
- 「category」を「metadata.product_event_type」にマッピングしました。
- 「authorKey」を「target.resource.attribute.labels」にマッピングしました。
- 「objectItem.id」、「objectItem.name」、「objectItem.typeName」を「security_result.detection_fields」にマッピングしました。
- 「associatedItems.0.typeName」が「USER」の場合、「associatedItems.0.id」を「target.user.userid」にマッピングしました。
- 「associatedItems.0.typeName」が「USER」の場合、「associatedItems.0.name」を「target.user.user_display_name」にマッピングしました。
- 「associatedItems.0.typeName」が「USER」の場合、「associatedItems.0.parentId」を「target.process.parent_process.pid」にマッピングしました。
- 「associatedItems.0.typeName」が「USER」の場合に、「associatedItems.0.parentName」を「target.resource.parent」にマッピングしました。
- 「associatedItems.0.typeName」が「USER」でない場合、「associatedItems.0.id」と「associatedItems.0.name」を「security_result.detection_fields」にマッピングしました。
- 「associatedItems.0.typeName」を「security_result.detection_fields」にマッピングしました。
- 「changedValues.fieldName」、「changedValues.changedFrom」、「changedValues.changedTo」を「security_result.about.resource.attribute.labels」にマッピングしました。
- 「remoteAddress」が存在する場合は、「STATUS_UPDATE」を「metadata.event_type」にマッピングしました。
- 「authorAccountId」が存在する場合、または「associatedItems.0.typeName」が「USER」で「associatedItems.0.id」が存在する場合、「USER_UNCATEGORIZED」を「metadata.event_type」にマッピングしました。
2022-05-31
- バグの修正 - ログ内の URL 値に「/status」が含まれている場合に、principal.url の不正なマッピングを確認する条件を追加しました。