SES アイデンティティポリシーのアクセス権限の確認

検証済みメールアドレスやドメインを使う主体と SES 操作を制限してください。

説明

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 方式と送信条件に必要な権限を合わせてください。

参考資料