説明
SES のメールアドレスやドメインに関連付けたポリシーは、そのアイデンティティを使う主体と許可する SES 操作を定めます。不要な主体に送信権限を委任すると、そのアドレスやドメインからメールを送られるおそれがあります。このポリシーは IAM ユーザーやロール自体の管理権限を与えるものではありません。
実際の送信には、アイデンティティの検証、対象リージョンの送信設定、ポリシー条件も関係します。必要な送信元と操作だけを許可してください。
想定される影響
- 未承認の送信を許可すると、ドメインが迷惑メールやフィッシングに悪用される可能性があります。
- メールの悪用は、ドメインの評判や受信者の信頼を損なうおそれがあります。
対処方法
- 不要な全主体への許可を削除し、実際の送信アカウントやロールを指定してください。
- ses:SendEmail や ses:SendRawEmail など必要な操作に制限し、Resource に関連付け先の SES アイデンティティ ARN を指定してください。
- 正規の送信が成功し、未承認の送信が拒否されることを確認して、未使用の委任ポリシーを削除してください。
例
検証済み SES ドメインのポリシーの抜粋です。参照ドメインは別途定義・検証し、ロール ARN は実際の送信ロールに置き換えてください。SMTP 送信には SendRawEmail 権限が必要です。
変更前
hcl
resource "aws_ses_identity_policy" "ses_policy" {
identity = aws_ses_domain_identity.example.arn
name = "example"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "*",
"Principal": {
"AWS": "*"
},
"Effect": "Allow",
"Resource": "${aws_ses_domain_identity.example.arn}"
}
]
}
EOF
}
すべての AWS 主体に広い操作を許可するよう要求しています。SES が対応する操作と、実際に必要な委任範囲を確認してください。
変更後
hcl
resource "aws_ses_identity_policy" "ses_policy" {
identity = aws_ses_domain_identity.example.arn
name = "example"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "ses:SendEmail",
"Principal": {
"AWS": "arn:aws:iam::987654321145:role/email-service"
},
"Effect": "Allow",
"Resource": "${aws_ses_domain_identity.example.arn}"
}
]
}
EOF
}
同じアイデンティティの SendEmail を指定ロールに限定しています。実際の API・SMTP 方式と送信条件に必要な権限を合わせてください。