高级事件选择器
理解高级事件选择器
AWS CloudTrail 中的高级事件选择器通过使用基于字段的条件(支持等于、不等于、以...开头和以...结尾等运算符)定义特定的选择条件,提供对记录哪些数据事件的精细控制。这种精细化方法使组织能够仅捕获对其安全、合规和运维需求重要的数据事件,同时降低与过度事件记录相关的成本。
高级事件选择器由字段选择器、运算符和值组成。每个选择器包含一个字段选择器数组来定义选择条件,每个字段选择器指定字段名称(如 eventCategory、eventName 或 resources.type)、运算符(Equals、NotEquals、StartsWith、EndsWith)以及一个或多个要匹配的值。单个高级事件选择器中多个字段选择器之间的关系是逻辑 AND,即所有条件都必须满足才能记录事件。

支持的字段和运算符
CloudTrail 高级事件选择器支持一组全面的字段,涵盖数据事件 AWS API 调用的各个方面。主要字段包括用于特定 API 操作的 eventName、用于 AWS 资源类型的 resources.type、用于特定资源标识符的 resources.ARN,以及用于区分读写操作的 readOnly。每个字段支持特定的运算符:Equals 和 NotEquals 用于精确匹配,而 StartsWith 和 EndsWith 支持基于模式的选择。理解这些组合对于创建有效的选择策略至关重要。
以下将提供如何使用高级事件选择器选择与 AWS 资源相 关的特定数据事件的示例。
Amazon S3
关键写入操作选择器
此选择器专注于可能表明数据外泄、未授权修改或合规违规的高风险 S3 操作。通过仅记录敏感存储桶上的写入操作,组织可以检测恶意活动,同时减少 S3 事件的日志量。这种方法对于在不让安全团队被常规读取操作淹没的情况下保持安全可见性至关重要。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::S3::Object"]
},
{
"Field": "eventName",
"Equals": ["DeleteObject", "PutObject", "RestoreObject"]
},
{
"Field": "resources.ARN",
"StartsWith": ["arn:aws:s3:::sensitive-bucket/", "arn:aws:s3:::compliance-bucket/"]
}
]
}
]
AWS Lambda 函数监控
生产函数调用选择器
Lambda 调用监控对于检测未授权的函数执行和异常访问模式至关重要。此选择器定位以生产和关键函数命名模式开头的 Lambda 函数,同时排除开发命名模式的环境,减少噪音并专注于业务关键活动。基于模式的 ARN 选择自动覆盖遵循命名约定的新函数,提供可扩展的安全监控。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::Lambda::Function"]
},
{
"Field": "eventName",
"Equals": ["Invoke"]
},
{
"Field": "resources.ARN",
"StartsWith": ["arn:aws:lambda:us-east-1:123456789012:function:prod-", "arn:aws:lambda:us-east-1:123456789012:function:critical-"]
}
]
}
]
DynamoDB 表操作
写入操作和敏感表选择器
DynamoDB 会生成大量事件,因此选择性事件选择对于成本控制和安全聚焦至关重要。这些选择器捕获可能表明未授权访问或数据篡改的数据修改事件,同时排除常规读取操作。以下示例中的组合方法允许记录特定表的特定写入操作以及所定义的敏感表的所有操作,在不产生过多成本的情况下提供全面覆盖。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::DynamoDB::Table"]
},
{
"Field": "eventName",
"Equals": ["PutItem", "UpdateItem", "DeleteItem", "BatchWriteItem"]
},
{
"Field": "resources.ARN",
"Equals": ["arn:aws:dynamodb:us-east-1:123456789012:table/UserData"]
}
]
},
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::DynamoDB::Table"]
},
{
"Field": "resources.ARN",
"StartsWith": ["arn:aws:dynamodb:us-east-1:123456789012:table/Financial"]
}
]
}
]
Amazon SQS 队列监控
管理操作选择器
SQS 管理操作可能代表一定的安全风险,因为它们可以中断消息流并修改队列权限。此选择器示例专注于可能表明权限提升或服务中断企图的队列管理活动。通过排除高流量消息操作,此方法在保持对安全相关管理更改的可见性的同时降低了日志记录成本。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::SQS::Queue"]
},
{
"Field": "eventName",
"Equals": ["CreateQueue", "DeleteQueue", "SetQueueAttributes", "AddPermission", "RemovePermission"]
}
]
}
]
Amazon SNS 主题操作
主题管理和关键主题选择器
SNS 监控需要在管理监督与关键主题的消息流可见性之间取得平衡。这些选择器捕获可能影响通知交付的主题管理操作,并监控安全敏感主题上的所有活动。多选择器方法允许全面监控关键通信渠道,同时通过选择性主题选择减少整体日志量。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::SNS::Topic"]
},
{
"Field": "eventName",
"Equals": ["CreateTopic", "DeleteTopic", "Subscribe", "Unsubscribe", "SetTopicAttributes"]
}
]
},
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::SNS::Topic"]
},
{
"Field": "resources.ARN",
"Equals": ["arn:aws:sns:us-east-1:123456789012:security-alerts"]
}
]
},
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::SNS::Topic"]
},
{
"Field": "resources.ARN",
"StartsWith": ["arn:aws:sns:us-east-1:123456789012:compliance-"]
}
]
}
]
基于用户身份的选择器
特权用户监控选择器
用户身份选择允许您包含或排除由特定 IAM 身份执行的操作事件。以下示例演示了两种方法:从 S3 对象日志记录中排除特定服务角色以减少自动化流程产生的噪音,以及仅记录 DynamoDB 表操作的特 权角色以专注于高风险活动。
[
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::S3::Object"]
},
{
"Field": "userIdentity.arn",
"NotStartsWith": ["arn:aws:sts::123456789012:assumed-role/service-role/backup-automation-role", "arn:aws:sts::123456789012:assumed-role/service-role/monitoring-role"]
}
]
},
{
"FieldSelectors": [
{
"Field": "eventCategory",
"Equals": ["Data"]
},
{
"Field": "resources.type",
"Equals": ["AWS::DynamoDB::Table"]
},
{
"Field": "userIdentity.arn",
"StartsWith": ["arn:aws:sts::123456789012:assumed-role/AdminRole/", "arn:aws:sts::123456789012:assumed-role/SecurityRole/"]
}
]
}
]