从入门到精通:GuardDuty-Sentinel-Integration的核心KQL函数详解

【免费下载链接】guardduty-sentinel-integration 【免费下载链接】guardduty-sentinel-integration 项目地址: https://gitcode.com/gh_mirrors/gu/guardduty-sentinel-integration

想要在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数据分析能力。通过这套函数,您可以:

  1. 快速启动:几分钟内部署完整的解析管道
  2. 标准化分析:使用统一的ASIM标准进行威胁狩猎
  3. 深度洞察:从网络、IAM、S3、EKS等多个维度分析安全数据
  4. 实时响应:通过Lambda直接推送实现亚分钟级延迟

最佳实践建议

  • 从AWSGuardDuty_Config()开始配置,确保所有解析器使用相同设置
  • 定期运行AWSGuardDuty_Schema()监控数据质量
  • 利用AWSGuardDuty_ASIMNetworkSession()进行跨源威胁关联
  • 根据数据量调整DefaultLookback参数优化性能

通过掌握这些核心KQL函数,您将能够充分利用AWS GuardDuty的安全数据,在Microsoft Sentinel中构建强大的安全监控和分析能力。无论您是安全分析师、云架构师还是运维工程师,这套工具都将显著提升您的云安全运营效率。🔒

立即开始您的GuardDuty安全分析之旅,体验专业级的AWS安全数据集成解决方案!

【免费下载链接】guardduty-sentinel-integration 【免费下载链接】guardduty-sentinel-integration 项目地址: https://gitcode.com/gh_mirrors/gu/guardduty-sentinel-integration

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐