如何在AWS中创建S3桶未加密创建时触发的CloudWatch告警
AWS未加密S3桶创建触发CloudWatch告警配置方法
前置要求
- 需提前开启AWS CloudTrail,且跟踪范围覆盖S3桶的
CreateBucketAPI事件 - 持有对应AWS账号的IAM权限,可操作CloudTrail、CloudWatch、SNS、IAM相关配置
一、手动配置方式
步骤1:配置CloudTrail跟踪S3事件
- 进入CloudTrail控制台,创建或编辑现有跟踪,确保管理事件已开启,且跟踪覆盖所有区域
- 可选优化:在数据事件配置中筛选仅保留S3的
CreateBucket操作,减少无效日志量
步骤2:创建CloudWatch指标过滤器
- 进入CloudWatch控制台,选择「日志->日志组」,找到对应CloudTrail的日志组
- 点击「操作->创建指标过滤器」,在过滤器模式中输入:
{ ($.eventName = CreateBucket) && ($.responseElements.ServerSideEncryptionConfiguration = "") }
- 输入过滤器名称,指定自定义指标命名空间(例:
S3SecurityMetrics),指标名称设为UnencryptedS3BucketCreated,指标值设为1,完成过滤器创建
步骤3:创建CloudWatch告警
- 进入CloudWatch「告警->所有告警」,点击创建告警
- 选择刚才创建的
S3SecurityMetrics命名空间下的UnencryptedS3BucketCreated指标 - 阈值设置为「大于等于1」,统计周期可设为1分钟
- 配置通知动作:选择已有的SNS主题,或新建SNS主题绑定邮箱/短信/内部通知渠道
- 输入告警名称和描述,完成创建
校验方法
手动创建一个未开启默认加密的S3桶,等待1-2分钟查看告警是否正常触发即可。
二、CloudFormation模板实现方式
直接使用以下YAML格式的CloudFormation模板部署即可,模板已包含所有依赖资源:
AWSTemplateFormatVersion: '2010-09-09' Description: CloudWatch Alert for Unencrypted S3 Bucket Creation Resources: # SNS告警通知主题 UnencryptedS3AlertTopic: Type: AWS::SNS::Topic Properties: DisplayName: Unencrypted S3 Bucket Alert Topic Subscription: - Endpoint: your-alert-email@example.com # 替换为实际告警接收邮箱 Protocol: email # CloudTrail跟踪配置 S3EventTrail: Type: AWS::CloudTrail::Trail Properties: IsLogging: true IncludeGlobalServiceEvents: true IsMultiRegionTrail: true S3BucketName: your-cloudtrail-log-bucket # 替换为你已存在的CloudTrail日志存储桶名称 # 指标过滤器配置 UnencryptedS3MetricFilter: Type: AWS::Logs::MetricFilter Properties: LogGroupName: /aws/cloudtrail/your-trail-log-group # 替换为你的CloudTrail日志组名称 FilterPattern: '{ ($.eventName = CreateBucket) && ($.responseElements.ServerSideEncryptionConfiguration = "") }' MetricTransformations: - MetricValue: "1" MetricNamespace: "S3SecurityMetrics" MetricName: "UnencryptedS3BucketCreated" # CloudWatch告警配置 UnencryptedS3Alert: Type: AWS::CloudWatch::Alarm Properties: AlarmName: UnencryptedS3BucketCreatedAlert AlarmDescription: 告警:检测到未开启加密的S3桶被创建 MetricName: UnencryptedS3BucketCreated Namespace: S3SecurityMetrics Statistic: Sum Period: 60 EvaluationPeriods: 1 Threshold: 1 ComparisonOperator: GreaterThanOrEqualToThreshold AlarmActions: - !Ref UnencryptedS3AlertTopic TreatMissingData: notBreaching
注意:部署前需要替换模板中标记的3处自定义内容:告警接收邮箱、CloudTrail日志存储桶名称、CloudTrail日志组名称
内容的提问来源于stack exchange,提问作者harshith
相关产品推荐
相关产品推荐

