AWS SES IAM策略优化:限制指定账号发信及日发送量
AWS SES 发送权限限制解决方案
一、仅允许特定IAM账号发信
SES的身份策略(IDENTITY_POLICY)不支持通过Principal字段指定允许的IAM账号,这类策略绑定在SES身份(域名/邮箱)上,无法直接限制调用者身份。正确做法如下:
- 给需要授权的2个IAM账号(或把它们加入同一IAM组)单独附加发信权限策略,保留已实现的
ses:FromAddress条件,确保仅能从指定地址发信。 - 示例IAM策略(附加到目标账号/组):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:ses:eu-west-1:123456789012:identity/domain.com", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Condition": { "StringEquals": { "ses:FromAddress": "noreply@domain.com" } } } ] }
- 其他IAM账号默认无SES发信权限,依赖IAM默认拒绝的权限逻辑即可。
二、每日发信上限控制(100封/账号)
IAM策略无法直接实现基于发送数量的配额限制,需结合CloudWatch告警监控和通知:
- 进入CloudWatch控制台,切换到「指标」页面,选择「SES」分类下的「按发送者」指标。
- 找到对应IAM账号的
SentMessages指标,创建告警规则:- 统计周期设为24小时,统计方式选「总和」
- 设置阈值为100,当指标值超过100时触发告警。
- 配置告警通知动作,比如通过SNS主题发送邮件、短信或协作工具通知,及时告知管理员。
三、整体配置建议
- 用IAM组管理2个授权账号,统一附加权限策略,简化后续维护。
- 保留SES身份策略中的发信地址限制,形成双重校验。
- 若需自动干预,可在CloudWatch告警基础上结合Lambda临时移除账号权限,基础场景下告警通知已满足需求。
内容的提问来源于stack exchange,提问作者Armitage2k
相关产品推荐
相关产品推荐

