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

如何创建默认全拒仅放行指定列表的AWS SES授权策略

问题根因

你的配置有三个关键错误,完全不符合IAM策略评估规则和SES条件键的使用规范:

  • 第一条Deny策略的Condition为空,属于无条件显式拒绝。IAM策略评估时显式拒绝优先级最高,会直接覆盖所有后续Allow规则,你看到的“只有第一个地址能发”属于异常匹配结果,不是规则正常生效的表现。
  • 条件运算符用错了:ses:FromAddress是单值字符串条件键,单次发信请求只会传入一个发件地址,根本不需要加ForAnyValue前缀——这个前缀只给请求中会传入多个值的条件键用。单值条件键匹配数组类型的条件值时,默认就是OR逻辑,只要传入值和数组里任意一项相等就算条件命中。
  • 权限逻辑搞反了:SES已验证身份的默认规则是,同账号下有SES发信权限的IAM实体默认可以用该身份发信,跨账号请求默认拒绝,你根本不需要单独写Allow规则放通权限,只要写Deny规则拦住不在允许列表的发信请求就行。
正确配置

直接用下面的策略替换你原来的配置即可,不需要额外写Allow语句,就能实现仅指定发件地址可发信的效果:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BlockUnapprovedSenders",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail",
                "ses:SendTemplatedEmail",
                "ses:SendBulkTemplatedEmail"
            ],
            "Resource": "替换为你自己的SES身份ARN",
            "Condition": {
                "StringNotEquals": {
                    "ses:FromAddress": [
                        "example1@domain.com",
                        "example2@domain.com",
                        "example3@domain.com",
                        "example4@domain.com",
                        "example5@domain.com"
                    ]
                }
            }
        }
    ]
}
注意事项
  • 这个策略的逻辑很直接:只要发信请求里的FromAddress不在你列的允许列表里,就直接拒绝,列表内的地址发信不受任何影响。
  • 如果你只需要允许指定平台、指定IAM角色/账号发信,把Principal里的*替换成对应的主体ARN即可,用通配符会把权限放开给所有能访问到该SES资源的主体,存在安全风险。
  • 配置完可以用SES控制台自带的策略测试工具,分别用列表内、列表外的地址模拟发信,确认规则生效后再正式上线。

内容的提问来源于stack exchange,提问作者Charlie Bleisch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:12:20