如何限制AWS SES已验证域名仅允许特定VPC IP范围发送邮件?
解决方案
你的需求完全可以实现,无需承担凭证泄露后外部人员冒用已验证域名发信的风险。
核心实现逻辑
你提到的aws:SourceIp条件仅匹配公网源IP,确实无法识别VPC内网流量,我们可以改用AWS全局条件键中针对VPC私有链路的专属字段过滤请求来源。上述过滤条件既可以配置在发信IAM实体的权限策略中,也可以配置在SES已验证域名的资源策略中,实现域名级的全局访问限制。
可选配置方案
方案1:限制仅指定VPC内的请求可以发信
使用aws:SourceVpc条件键,绑定你部署SES VPC端点的VPC ID即可,所有来自该VPC外的发信请求即使持有合法凭证也会被拒绝。
示例策略片段:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-xxxxxx" // 替换为你的VPC ID } } } ] }
方案2:限制仅通过指定的SES VPC端点发信
使用aws:SourceVpce条件键,绑定你已经创建的SES VPC端点ID,粒度更严格,即使同账号下其他VPC持有凭证也无法发信。
示例策略片段:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-xxxxxx" // 替换为你的SES VPC端点ID } } } ] }
额外加固建议
- 配置SES VPC端点的安全组入站规则,仅允许你指定的VPC内网网段(如你提到的10.204.0.0/16)访问SMTP端口(25/465/587)
- 收紧发信IAM用户的权限范围,仅分配发信必需的SES动作,不要添加多余的权限
- 定期轮换SMTP凭证,避免长期使用固定凭证
内容的提问来源于stack exchange,提问作者harrytewkesburyIT
相关产品推荐
相关产品推荐

