如何创建仅包含指定AWS SSO事件的CloudTrail追踪至S3
如何创建仅包含特定AWS SSO事件的CloudTrail追踪
要只捕获AWS SSO的AddMemberToGroup和RemoveMemberFromGroup事件并存储到同账号S3桶,你需要利用CloudTrail的高级事件选择器来精准过滤事件,以下是具体实现步骤:
控制台操作步骤
- 打开AWS CloudTrail控制台,点击「创建追踪」
- 填写追踪名称(例如
SSO-Group-Member-Changes-Trail),按需选择是否启用多区域追踪(单区域场景可关闭) - 滚动到「事件选择器」区域,勾选「管理事件」,然后展开「高级事件选择器」
- 点击「添加高级事件选择器」,配置以下筛选规则:
- 第一个字段选择
eventName,运算符选「等于」,值填入AddMemberToGroup - 点击「添加条件」,新增第二个规则:字段
eventName,运算符「等于」,值填入RemoveMemberFromGroup - 将两个规则的逻辑关系改为「或」(默认是「和」,需调整才能匹配任一事件)
- (可选但推荐)添加第三个条件:字段
eventSource,运算符「等于」,值填入sso-directory.amazonaws.com,避免其他服务同名事件被误捕获
- 第一个字段选择
- 在「数据存储」部分,选择你已有的同账号S3桶(或创建新桶),CloudTrail会自动配置桶的写入权限(若用已有桶,确保桶策略未限制CloudTrail访问)
- 完成其他配置(如日志加密、SNS通知等)后,点击「创建追踪」
AWS CLI操作步骤(适合自动化场景)
先创建追踪(替换your-bucket-name为你的S3桶名称):
aws cloudtrail create-trail \ --name SSO-Group-Member-Changes-Trail \ --s3-bucket-name your-bucket-name \ --is-multi-region-trail false
然后配置事件选择器,精准过滤目标事件:
aws cloudtrail put-event-selectors \ --trail-name SSO-Group-Member-Changes-Trail \ --event-selectors '[{ "ReadWriteType": "All", "IncludeManagementEvents": true, "AdvancedEventSelectors": [{ "Name": "Filter-SSO-Group-Member-Events", "FieldSelectors": [ {"Field": "eventSource", "Equals": ["sso-directory.amazonaws.com"]}, {"Field": "eventName", "Equals": ["AddMemberToGroup", "RemoveMemberFromGroup"]} ] }] }]'
后续注意事项
- CloudTrail日志会以gzip压缩的JSON文件形式写入S3,配置Lambda触发时,需要先在Lambda代码中解压日志内容,再解析
requestParameters里的memberId和groupId - 要通过
memberId获取用户邮箱,可在Lambda中调用AWS SSO的DescribeUserAPI(需给Lambda配置对应的IAM权限) - 确保Lambda拥有S3桶的读取权限、SSO的描述权限,以及SNS的发布权限
内容的提问来源于stack exchange,提问作者Avneet7107
相关产品推荐
相关产品推荐

