从入门到精通:GuardDuty-Sentinel-Integration的核心KQL函数详解
从入门到精通:GuardDuty-Sentinel-Integration的核心KQL函数详解
想要在Microsoft Sentinel中高效分析AWS GuardDuty安全告警吗?GuardDuty-Sentinel-Integration项目提供了完整的KQL函数套件,让安全分析师能够轻松查询、分析和关联AWS安全数据。本文将深入解析这个开源项目的核心KQL函数,帮助您快速掌握安全数据分析的终极工具。🚀
项目概述与核心价值
GuardDuty-Sentinel-Integration是一个生产就绪的AWS GuardDuty数据集成解决方案,专为Microsoft Sentinel设计。该项目解决了安全团队面临的几个关键挑战:原生AWS S3连接器虽然显示"已连接"但数据不流动、原始GuardDuty数据难以查询、缺乏跨源威胁狩猎的ASIM标准化,以及缺少实时推送选项。
通过配置驱动的KQL函数,该项目使GuardDuty数据立即可查询并与ASIM标准对齐。无论您是通过AWS S3连接器(轮询)还是通过Lambda直接推送(实时)接收数据,这套KQL函数都能提供统一的分析体验。
核心KQL函数架构解析
1. 配置管理函数:AWSGuardDuty_Config()
这是整个系统的控制中心,所有解析器都从这里读取配置。通过集中化管理,您只需更改一次设置,所有下游解析器都会自动生效。
// 查看所有配置项
AWSGuardDuty_Config()
核心配置包括:
- TableName: 默认"AWSGuardDuty" - 指定GuardDuty数据表名
- DefaultLookback: 默认"7d" - 默认查询时间范围
- HandleEventBridgeEnvelope: 默认"true" - 自动检测EventBridge信封格式
- EnableASIMNormalization: 默认"true" - 启用ASIM架构标准化
2. 基础解析函数:AWSGuardDuty_Main()
这是所有解析的基础,处理两种输入格式:直接JSON格式和EventBridge信封格式。这个函数自动检测并解包EventBridge信封,确保数据一致性。
// 获取过去24小时的所有告警
AWSGuardDuty_Main(1d)
| where SeverityLevel == "High"
| project EventTime, FindingType, Title, AwsAccountId
关键功能:
- 自动格式检测:智能识别直接JSON和EventBridge信封
- 数据质量评分:为每条记录计算0-100的质量分数
- 严重性映射:将数字严重性转换为可读级别(关键、高、中、低)
- 错误处理:优雅处理缺失字段和解析错误
3. 网络威胁分析函数:AWSGuardDuty_Network()
专注于网络相关的安全发现,提取连接详细信息并增强地理信息丰富度。
// 分析过去7天的网络威胁
AWSGuardDuty_Network(7d)
| where isnotempty(RemoteIp)
| summarize Findings = count() by RemoteCountry, FindingType
| order by Findings desc
提取的关键字段:
- 连接方向:入站/出站流量
- 协议信息:TCP、UDP、ICMP等
- 地理位置:远程IP的国家、城市、ISP信息
- 实例上下文:EC2实例ID、类型、状态
4. IAM和API调用分析函数:AWSGuardDuty_IAM()
专注于身份和访问管理发现,提取API调用详情、身份上下文和认证信息。
// 查找可疑的API调用
AWSGuardDuty_IAM(7d)
| where UserName contains "root" or UserName contains "admin"
| project EventTime, ApiName, UserName, RemoteIp_API, AwsAccountId
核心功能:
- API调用追踪:记录所有AWS API调用
- 身份分析:识别调用者类型和用户身份
- 地理位置映射:关联API调用的来源位置
- 风险评估:计算API调用风险分数
5. S3存储安全函数:AWSGuardDuty_S3()
专门处理S3存储桶安全发现,提取桶加密、公共访问配置和ACL详情。
// 查找公开暴露的S3存储桶
AWSGuardDuty_S3(7d)
| where IsPubliclyExposed == true
| project EventTime, BucketName, S3RiskCategory, AwsAccountId
监控的安全问题:
- 公开暴露风险:检测公开可访问的存储桶
- 加密问题:识别未加密或加密配置不当
- 权限配置:分析ACL和策略配置
- 访问模式:监控异常访问行为
6. EKS容器安全函数:AWSGuardDuty_EKS()
专注于Kubernetes和容器安全,覆盖EKS审计日志和运行时监控发现。
// 检测EKS权限提升尝试
AWSGuardDuty_EKS(7d)
| where K8sThreatCategory == "Privilege Escalation"
| project EventTime, ClusterName, K8sNamespace, K8sUserName
监控的威胁类型:
- 权限提升:容器内权限升级尝试
- 凭证访问:敏感凭证的未授权访问
- 可疑工作负载:异常容器行为
- 网络策略违规:违反网络策略的连接
7. ASIM标准化函数:AWSGuardDuty_ASIMNetworkSession()
将GuardDuty网络发现映射到ASIM网络会话架构v0.2.6,实现跨源威胁狩猎。
// 生成ASIM标准化的网络会话数据
AWSGuardDuty_ASIMNetworkSession(1d)
| where NetworkDirection == "Inbound"
| project TimeGenerated, SrcIpAddr, DstIpAddr, DstPortNumber, ThreatCategory
标准化字段:
- 源/目标IP地址:统一格式的IP地址
- 地理位置信息:标准化的地理编码
- 威胁等级映射:将GuardDuty严重性转换为ASIM威胁等级
- 会话标识符:唯一的会话标识
8. 数据质量验证函数:AWSGuardDuty_Schema()
提供数据质量验证和监控,确保GuardDuty数据的完整性和准确性。
// 评估数据质量
AWSGuardDuty_Schema(7d)
| summarize
OverallQualityScore = avg(DataQualityScore),
TotalFindings = count(),
CriticalFindings = countif(SeverityLevel == "Critical")
质量指标:
- 完整性分数:评估必需字段的完整性
- 一致性检查:验证数据格式一致性
- 时效性分析:监控数据延迟和新鲜度
- 异常检测:识别数据模式异常
实战应用场景
场景1:实时威胁监控仪表板
// 创建实时威胁监控视图
let lookback = 1d;
AWSGuardDuty_Main(lookback)
| summarize
TotalFindings = count(),
Critical = countif(SeverityLevel == "Critical"),
High = countif(SeverityLevel == "High"),
Medium = countif(SeverityLevel == "Medium"),
Low = countif(SeverityLevel == "Low")
| extend ThreatLevel = case(
Critical > 0, "严重威胁",
High > 5, "高风险",
Medium > 10, "中等风险",
"低风险"
)
场景2:跨账户威胁关联分析
// 跨AWS账户关联威胁
AWSGuardDuty_Main(7d)
| where SeverityLevel in ("Critical", "High")
| summarize
FindingsPerAccount = count() by AwsAccountId, FindingType
| join kind=inner (
AWSGuardDuty_Network(7d)
| where isnotempty(RemoteIp)
| summarize RemoteIps = make_set(RemoteIp) by AwsAccountId
) on AwsAccountId
| project AwsAccountId, FindingType, FindingsPerAccount, RemoteIps
场景3:ASIM标准化威胁狩猎
// 使用ASIM标准化数据进行威胁狩猎
AWSGuardDuty_ASIMNetworkSession(1d)
| join kind=inner (
AzureSentinel
| where EventProduct == "AzureFirewall"
| project SrcIpAddr, DstIpAddr, DstPortNumber, TimeGenerated
) on SrcIpAddr, DstIpAddr, DstPortNumber
| where abs(datetime_diff('minute', TimeGenerated, TimeGenerated1)) < 5
| project ThreatCorrelationTime = TimeGenerated,
GuardDutyFinding = EventOriginalType,
FirewallEvent = EventType
配置最佳实践
1. 性能优化配置
// 在AWSGuardDuty_Config.kql中优化性能
"DefaultLookback", "3d", // 根据数据量调整
"MaxLookback", "30d", // 限制查询范围
"QueryTimeout", "180", // 设置查询超时
"EnablePerformanceLogging", "false" // 生产环境关闭
2. 数据质量监控
// 定期监控数据质量
AWSGuardDuty_Schema(1d)
| summarize
AvgQuality = avg(DataQualityScore),
LowQualityRecords = countif(DataQualityScore < 60),
TotalRecords = count()
| extend QualityStatus = case(
AvgQuality >= 90, "优秀",
AvgQuality >= 75, "良好",
AvgQuality >= 60, "一般",
"需要关注"
)
3. 告警规则配置
// 创建高严重性告警规则
AWSGuardDuty_Main(1h)
| where SeverityLevel == "Critical"
| summarize CriticalFindings = count() by bin(TimeGenerated, 5m), AwsAccountId
| where CriticalFindings >= 3
故障排除技巧
1. 数据不显示问题
// 检查数据管道
AWSGuardDuty
| where TimeGenerated > ago(24h)
| take 10
| getschema
2. 解析器返回空结果
// 验证配置
AWSGuardDuty_Config()
| where Setting in ("TableName", "RawColumn", "AlternateRawColumn")
3. 性能问题诊断
// 分析查询性能
AWSGuardDuty_Main(7d)
| summarize
RecordCount = count(),
DataSizeMB = estimate_data_size() / 1024 / 1024,
TimeRange = max(TimeGenerated) - min(TimeGenerated)
部署与集成
一键部署脚本
项目提供了便捷的部署脚本,简化了KQL函数的部署过程:
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/gu/guardduty-sentinel-integration
cd guardduty-sentinel-integration
# 一键部署
./deploy.sh -g your-resource-group -w your-sentinel-workspace
ARM模板部署
对于企业级部署,可以使用ARM模板:
az deployment group create \
--resource-group your-resource-group \
--template-file deployment/azuredeploy.json \
--parameters workspaceName=your-sentinel-workspace
总结与最佳实践
GuardDuty-Sentinel-Integration项目的KQL函数套件为安全团队提供了强大的AWS GuardDuty数据分析能力。通过这套函数,您可以:
- 快速启动:几分钟内部署完整的解析管道
- 标准化分析:使用统一的ASIM标准进行威胁狩猎
- 深度洞察:从网络、IAM、S3、EKS等多个维度分析安全数据
- 实时响应:通过Lambda直接推送实现亚分钟级延迟
最佳实践建议:
- 从AWSGuardDuty_Config()开始配置,确保所有解析器使用相同设置
- 定期运行AWSGuardDuty_Schema()监控数据质量
- 利用AWSGuardDuty_ASIMNetworkSession()进行跨源威胁关联
- 根据数据量调整DefaultLookback参数优化性能
通过掌握这些核心KQL函数,您将能够充分利用AWS GuardDuty的安全数据,在Microsoft Sentinel中构建强大的安全监控和分析能力。无论您是安全分析师、云架构师还是运维工程师,这套工具都将显著提升您的云安全运营效率。🔒
立即开始您的GuardDuty安全分析之旅,体验专业级的AWS安全数据集成解决方案!
更多推荐


所有评论(0)