You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为未开启加密的新建Amazon S3存储桶配置CloudWatch告警

实现未配置加密策略的S3存储桶创建时自动告警的操作方法

注:AWS自2023年1月5日起,所有新创建的S3存储桶默认开启SSE-S3加密,只有手动关闭默认加密的新桶才会触发下述告警规则。

前置准备

首先需要确保你要监控的区域已启用CloudTrail跟踪,且跟踪配置了捕获S3服务的管理事件,所有S3桶的创建操作会被CloudTrail记录后同步给EventBridge(原CloudWatch Events)做后续处理。

步骤1:创建SNS告警通知主题

如果需要邮件、短信等通知渠道,先配置SNS主题:

  • 进入SNS控制台,创建标准类型的主题,记录主题ARN
  • 为主题添加订阅,比如填写邮箱、手机号、企业IM回调地址等,确认订阅生效
  • 配置主题的资源策略,允许后续创建的Lambda函数有权限向该主题发布消息

步骤2:创建检查S3桶加密状态的Lambda函数

  • 进入Lambda控制台,新建函数,运行时选择Python 3.10及以上版本
  • 为Lambda执行角色添加两个必要权限:s3:GetEncryptionConfiguration(用于读取桶的加密配置)、sns:Publish(用于向SNS主题发告警)
  • 替换函数默认代码为以下内容,将代码里的SNS_TOPIC_ARN替换为你上一步创建的SNS主题ARN:
import boto3
import json

s3_client = boto3.client('s3')
sns_client = boto3.client('sns')
# 替换为你的SNS主题ARN
SNS_TOPIC_ARN = "arn:aws-cn:sns:cn-north-1:123456789012:unencrypted-s3-alert-topic"

def lambda_handler(event, context):
    # 从EventBridge事件中提取新创建的桶名
    bucket_name = event['detail']['requestParameters']['bucketName']
    create_user_arn = event['detail']['userIdentity']['arn']
    try:
        # 查询桶的加密配置
        encrypt_resp = s3_client.get_bucket_encryption(Bucket=bucket_name)
        if 'ServerSideEncryptionConfiguration' not in encrypt_resp:
            raise ValueError("未找到加密配置规则")
    except Exception as e:
        # 未配置加密则发送告警
        alert_content = f"安全告警:检测到未配置加密策略的S3存储桶创建\n桶名:{bucket_name}\n创建者ARN:{create_user_arn}\n创建区域:{event['region']}"
        sns_client.publish(
            TopicArn=SNS_TOPIC_ARN,
            Subject="【AWS安全告警】未加密S3存储桶被创建",
            Message=alert_content
        )
        return {
            "statusCode": 200,
            "body": json.dumps(f"已触发未加密桶{bucket_name}的告警通知")
        }
    return {
        "statusCode": 200,
        "body": json.dumps(f"桶{bucket_name}已配置加密策略,无需告警")
    }
  • 保存函数后可以手动运行测试,确认权限配置正常。

步骤3:创建CloudWatch/EventBridge事件规则

  • 进入EventBridge控制台,选择「规则」-「创建规则」
  • 规则类型选择事件模式,事件源选择「AWS服务」,服务列表选「S3」,事件类型选「Amazon S3 Event」,匹配事件勾选「CreateBucket」
  • 目标配置选择「Lambda函数」,选中上一步创建的Lambda函数,保存规则即可

验证方法

你可以手动创建一个关闭了默认加密的S3桶,确认很快能收到对应告警通知即可。

内容的提问来源于stack exchange,提问作者Swati B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:48:03