Atlassian Bitbucket のログを収集する
概要
このパーサーは、Atlassian Bitbucket JSON ログからフィールドを抽出し、UDM にマッピングします。さまざまなログ形式を処理し、IP アドレス、ユーザー ID、アセット情報などの使用可能なフィールドに基づいてプリンシパルまたはターゲット エンティティを入力します。また、ネットワークとユーザーのアクティビティに基づいてイベントを分類し、セキュリティ検出結果が存在する場合は、その結果でデータを拡充します。パーサーは、フィールドに値を入力するときに agentDetectionInfo
よりも agentRealtimeInfo
を優先します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- リポジトリ内の特権アクセス。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Atlassian Bitbucket Logs)。
- [Source type] として [Webhook] を選択します。
- [ログタイプ] として [Atlassian Bitbucket] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL をクライアント アプリケーション内で指定する必要があります。
- [完了] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Split delimiter: ログ行を区切るために使用される区切り文字(
\n
など)。
詳細オプション
- Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
- フィード名: フィードを識別する事前入力された値。
ソースタイプ: Google SecOps にログを収集するために使用される方法。
[秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
[詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント 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
: フィードの認証用に生成した秘密鍵。
Atlassian Bitbucket で Webhook を作成する
- Bitbucket で、リポジトリの設定に移動します。
- [Workflow] の [Webhooks] をクリックします。
- [Add webhook] をクリックします。
- 次のフィールドを構成します。
- タイトル: わかりやすい名前を指定します(例: Google SecOps)。
- URL: Google SecOps API エンドポイント URL を入力します。
- ステータス: [有効] に設定します。
- トリガー: 関連するイベントを選択します。
- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
agentComputerName |
principal.hostname |
agentRealtimeInfo.agentComputerName から入力されます。 |
agentDetectionInfo.accountId |
metadata.product_deployment_id |
文字列に変換されます。agentRealtimeInfo.accountId が存在しない場合、使用されます。 |
agentDetectionInfo.accountName |
metadata.product_name |
agentRealtimeInfo.accountName が存在しない場合、使用されます。 |
agentDetectionInfo.agentDomain |
principal.administrative_domain |
直接マッピングされます。 |
agentDetectionInfo.agentIpV4 |
target.ip |
JSON 配列から抽出され、target.ip フィールドに統合されます。 |
agentDetectionInfo.agentIpV6 |
principal.ip |
JSON 配列から抽出され、principal.ip フィールドに統合されます。 |
agentDetectionInfo.agentLastLoggedInUserName |
principal.user.userid |
解析されて、ユーザー ID とドメイン(存在する場合)が抽出されます。ドメインがない場合は、principal.user.userid に直接マッピングされます。 |
agentDetectionInfo.agentOsName |
principal.platform_version 、principal.asset.platform_software.platform_version |
agentRealtimeInfo.agentOsName が存在しない場合、使用されます。 |
agentDetectionInfo.agentOsRevision |
principal.platform_patch_level 、principal.asset.platform_software.platform_patch_level |
agentRealtimeInfo.agentOsRevision が存在しない場合、使用されます。 |
agentDetectionInfo.agentRegisteredAt |
principal.asset.first_discover_time |
ISO8601 タイムスタンプとして解析されます。 |
agentDetectionInfo.agentUuid |
principal.asset_id 、principal.asset.asset_id |
agentRealtimeInfo.agentUuid が存在しない場合、使用されます。「agentUuid:」の接頭辞が付いています。 |
agentDetectionInfo.agentVersion |
metadata.product_version |
agentRealtimeInfo.agentVersion が存在しない場合、使用されます。 |
agentDetectionInfo.externalIp |
target.ip |
直接マッピングされます。 |
agentDetectionInfo.groupId |
principal.user.group_identifiers |
空でないか「-」でない場合、フィールドに統合されます。agentRealtimeInfo.groupId が存在しない場合に使用されます。 |
agentDetectionInfo.groupName |
principal.group.group_display_name |
agentRealtimeInfo.groupName が存在しない場合、使用されます。 |
agentDetectionInfo.siteId |
additional.fields |
キー「agentDetectionInfo.siteId」で Key-Value ペアとして追加されます。agentRealtimeInfo.siteId が存在しない場合、使用されます。 |
agentDetectionInfo.siteName |
additional.fields |
キー「agentDetectionInfo.siteName」で Key-Value ペアとして追加されます。agentRealtimeInfo.siteName が存在しない場合、使用されます。 |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
文字列に変換されます。 |
agentRealtimeInfo.accountName |
metadata.product_name |
直接マッピングされます。 |
agentRealtimeInfo.agentComputerName |
principal.hostname 、principal.asset.hostname |
直接マッピングされます。 |
agentRealtimeInfo.agentId |
principal.asset_id 、principal.asset.asset_id |
「agentId:」の接頭辞が付いています。 |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
直接マッピングされます。 |
agentRealtimeInfo.agentOsName |
principal.platform_version 、principal.asset.platform_software.platform_version |
直接マッピングされます。 |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level 、principal.asset.platform_software.platform_patch_level |
直接マッピングされます。 |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform 、principal.platform |
値に基づいて WINDOWS、MAC、LINUX にマッピングされます。 |
agentRealtimeInfo.agentUuid |
principal.asset_id 、principal.asset.asset_id |
直接マッピングされます。「agentUuid:」の接頭辞が付いています。 |
agentRealtimeInfo.agentVersion |
metadata.product_version |
直接マッピングされます。 |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
空でないか「-」でない場合、フィールドに統合されます。 |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
直接マッピングされます。 |
agentRealtimeInfo.siteId |
additional.fields |
キー「agentDetectionInfo.siteId」で Key-Value ペアとして追加されます。 |
agentRealtimeInfo.siteName |
additional.fields |
キー「agentDetectionInfo.siteName」で Key-Value ペアとして追加されます。 |
associatedItems.0.id |
principal.resource.id |
直接マッピングされます。 |
associatedItems.0.name |
principal.resource.name |
直接マッピングされます。 |
associatedItems.0.typeName |
principal.resource.resource_subtype |
直接マッピングされます。 |
authorAccountId |
principal.user.userid |
直接マッピングされます。 |
category |
metadata.product_event_type |
直接マッピングされます。存在せず、メッセージに「脅威」が含まれている場合は、「脅威」に設定します。 |
id |
metadata.product_log_id |
文字列に変換されます。 |
indicators.0.description |
security_result.description |
直接マッピングされます。 |
objectItem.id |
additional.fields |
キー「objectItem.id」で Key-Value ペアとして追加されます。 |
objectItem.name |
additional.fields |
キー「objectItem.name」で Key-Value ペアとして追加されます。 |
objectItem.typeName |
additional.fields |
キー「objectItem.typeName」で Key-Value ペアとして追加されます。 |
remoteAddress |
principal.ip |
直接マッピングされます。 |
summary |
security_result.summary |
直接マッピングされます。 |
threatInfo.classification |
security_result.category_details |
直接マッピングされます。security_result.category の決定にも使用されます。 |
threatInfo.collectionId |
metadata.ingestion_labels |
キー「alert_aggregation_value」で Key-Value ペアとして追加されます。 |
threatInfo.confidenceLevel |
security_result.confidence_details |
直接マッピングされます。security_result.confidence の決定にも使用されます。 |
threatInfo.createdAt |
metadata.collected_timestamp |
ISO8601 タイムスタンプとして解析されます。 |
threatInfo.detectionEngines |
metadata.ingestion_labels |
各要素の key と title が Key-Value ペアとして追加されます。 |
threatInfo.fileExtensionType |
target.process.file.mime_type |
直接マッピングされます。 |
threatInfo.filePath |
target.file.full_path |
直接マッピングされます。 |
threatInfo.fileSize |
target.file.size |
文字列に変換されてから符号なし整数に変換されます。 |
threatInfo.identifiedAt |
event_timestamp |
ISO8601 タイムスタンプとして解析されます。 |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
直接マッピングされます。summary が存在しない場合、security_result.summary フィールドでも使用されます。 |
threatInfo.md5 |
target.file.md5 |
直接マッピングされます。 |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
直接マッピングされます。summary が存在しない場合、security_result.summary フィールドでも使用されます。 |
threatInfo.processUser |
target.user.userid |
直接マッピングされます。 |
threatInfo.sha1 |
target.file.sha1 |
直接マッピングされます。 |
threatInfo.sha256 |
target.file.sha256 |
直接マッピングされます。 |
threatInfo.storyline |
principal.process.product_specific_process_id |
「ID:」の接頭辞が付いています。 |
threatInfo.threatId |
security_result.threat_id |
直接マッピングされます。 |
threatInfo.threatName |
security_result.threat_name 、target.file.names |
直接マッピングされ、target.file.names に統合されます。summary が存在しない場合、security_result.summary フィールドでも使用されます。最初は「GENERIC_EVENT」に設定されます。プリンシパルとターゲットの IP、ホスト名、ユーザーの有無に基づいて、「NETWORK_UNCATEGORIZED」、「STATUS_UPDATE」、「USER_UNCATEGORIZED」に変更しました。event.type フィールドからコピーされます。「Atlassian Bitbucket」に設定します。最初は「Atlassian Bitbucket」に設定されています。agentRealtimeInfo.accountName または agentDetectionInfo.accountName でオーバーライドできます。 |
timestamp |
metadata.event_timestamp 、timestamp |
直接マッピングされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。