收集 Atlassian Bitbucket 日志
支持的平台:
Google SecOps
SIEM
概览
此解析器会从 Atlassian Bitbucket JSON 日志中提取字段,并将其映射到 UDM。它可处理各种日志格式,并根据 IP 地址、用户 ID 和资产信息等可用字段填充正文或目标实体。它还会根据网络和用户活动对事件进行分类,并使用安全发现(如果有)来丰富数据。在填充字段时,解析器会优先使用 agentRealtimeInfo
,而不是 agentDetectionInfo
。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您对其中的代码库拥有特权访问权限。
在 Google SecOps 中配置 Feed 以注入 Atlassian Bitbucket 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称(例如 Atlassian Bitbucket 日志)。
- 选择Webhook 作为来源类型。
- 选择 Atlassian Bitbucket 作为日志类型。
- 点击下一步。
- 可选:为以下输入参数指定值:
- 分隔符:用于分隔日志行(例如
\n
)的分隔符。 - 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 分隔符:用于分隔日志行(例如
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
- 点击生成 Secret 密钥,生成用于对此 Feed 进行身份验证的 Secret 密钥。
- 复制并存储密钥。您将无法再查看此密钥。如有必要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥过时。
- 在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
- 点击完成。
为该网站钩子 Feed 创建 API 密钥
依次前往 Google Cloud 控制台 > 凭据。
点击创建凭据,然后选择 API 密钥。
限制 API 密钥对 Google Security Operations API 的访问权限。
指定端点网址
- 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
通过在自定义标头中指定 API 密钥和密钥(格式如下)来启用身份验证:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建议:请以标头的形式指定 API 密钥,而不是在网址中指定。如果您的 webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:
ENDPOINT_URL?key=API_KEY&secret=SECRET
替换以下内容:
ENDPOINT_URL
:Feed 端点网址。API_KEY
:用于对 Google Security Operations 进行身份验证的 API 密钥。SECRET
:您为对 Feed 进行身份验证而生成的密钥。
在 Atlassian Bitbucket 中创建 Webhook
- 在 Bitbucket 中,前往代码库设置。
- 点击工作流下的 Webhook。
- 点击 Add webhook。
- 配置以下字段:
- 标题:提供描述性名称(例如 Google SecOps)。
- 网址:输入 Google SecOps API 端点网址。
- 状态:设为有效。
- 触发器:选择相关事件。
- 点击保存。
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”。如果不存在 agentRealtimeInfo.siteId ,则使用此属性。 |
agentDetectionInfo.siteName |
additional.fields |
以键值对的形式添加,键为“agentDetectionInfo.siteName”。如果不存在 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”。 |
agentRealtimeInfo.siteName |
additional.fields |
以键值对的形式添加,键为“agentDetectionInfo.siteName”。 |
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”。 |
objectItem.name |
additional.fields |
以键值对的形式添加,键为“objectItem.name”。 |
objectItem.typeName |
additional.fields |
以键值对的形式添加,键为“objectItem.typeName”。 |
remoteAddress |
principal.ip |
直接映射。 |
summary |
security_result.summary |
直接映射。 |
threatInfo.classification |
security_result.category_details |
直接映射。也用于确定 security_result.category 。 |
threatInfo.collectionId |
metadata.ingestion_labels |
以键值对的形式添加,键为“alert_aggregation_value”。 |
threatInfo.confidenceLevel |
security_result.confidence_details |
直接映射。也用于确定 security_result.confidence 。 |
threatInfo.createdAt |
metadata.collected_timestamp |
解析为 ISO8601 时间戳。 |
threatInfo.detectionEngines |
metadata.ingestion_labels |
每个元素的 key 和 title 都作为键值对添加。 |
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 地址和目标 IP 地址/主机名/用户的存在情况,更改为“NETWORK_UNCATEGORIZED”“STATUS_UPDATE”或“USER_UNCATEGORIZED”。从 event.type 字段复制。设置为“Atlassian Bitbucket”。初始设置为“Atlassian Bitbucket”。可被 agentRealtimeInfo.accountName 或 agentDetectionInfo.accountName 替换。 |
timestamp |
metadata.event_timestamp ,timestamp |
直接映射。 |
变化
2023-06-12
- 新创建的解析器。