Amazon SESの送信承認ポリシーを使って、送信先や送信元情報を制限する

2022.04.18

いわさです。

Amazon SESでメールを送信する準備としてEメールアドレスか送信元ドメインの検証を行いますが、送信元ドメイン検証を行った状態だと、検証ドメインの任意のFromアドレスでメール送信が可能です。
ここをもう少しいくつかのFromアドレスに制限したい場合は、送信承認ポリシーが利用出来るので今日は少し触ってみました。

通常の状態

ここでは、mail1.tak1wa.comを検証済みドメインとして作成しています。

開発者からhoge@mail1.tak1wa.comで送信したいというので認証情報を公開しました。
これで無事、期待どおりのFromアドレスで送信が出来ます。

送信できたのですがfuga@mail1.tak1wa.comでも送信出来てしまいます。
管理者がもう少し追加の制限を行いたい場合は、送信承認ポリシーが活用出来ます。

送信承認ポリシーを使う

他アカウントから送信出来るようにする時に送信承認ポリシーを使うケースは多いかもしれません。
送信する際の制限を加える使い方も出来ます。

以下のようにポリシーを設定することで追加のセキュリティレイヤーとなります。

Amazon SES のアクション、リソース、および条件キー - サービス認証リファレンス

ここではいくつか例をご紹介します。

Fromアドレスを絞る

Fromアドレスを制限したい場合は、ses:FromAddress条件キーが利用出来ます。
以下の場合は、hoge@mail1.tak1wa.com以外のFromアドレスでは送信が出来なくなります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Resource": "arn:aws:ses:ap-northeast-1:123456789012:identity/mail1.tak1wa.com",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Principal": "*",
      "Condition": {
        "StringNotLike": {
          "ses:FromAddress": "hoge@mail1.tak1wa.com"
        }
      }
    }
  ]
}

You do not have sufficient access to perform this action. User arn:aws:sts::550669467088:assumed-role/cm-iwasa.takahito/cm-iwasa.takahito' is not authorized to performses:SendEmail' on resource `arn:aws:ses:ap-northeast-1:123456789012:identity/mail1.tak1wa.com'

To, Cc, Bccアドレスを絞る

逆に、Toアドレスを制限したい場合は、ses:Recipients条件キーが利用出来ます。
ただし、ToだけでなくCcやBccも制限対象に含まれます。

以下の場合はexample.comドメイン以外への送信を禁止しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:ap-northeast-1:123456789012:identity/mail1.tak1wa.com",
            "Condition": {
                "ForAnyValue:StringNotLike": {
                    "ses:Recipients": "*@example.com"
                }
            }
        }
    ]
}

送信元を制限する(IPアドレス)

送信元自体を制限することも可能で、ここではaws:SourceIp条件キーを使って、特定の送信元IPアドレス以外からの送信を許可しないように設定しています。
以下の場合は送信元のIPアドレスが203.0.113.224以外の場合は送信が拒否されます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Resource": "arn:aws:ses:ap-northeast-1:123456789012:identity/mail1.tak1wa.com",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Principal": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "203.0.113.224/32"
        }
      }
    }
  ]
}

さいごに

本日は、SESの送信承認ポリシーで追加の制限を行う方法を紹介しました。
本日ご紹介した以外にも、Return-Pathを制限したり、Fromの表示名を制限することも出来ます。
VPCエンドポイントからSMTPサーバーを利用するシーンなども多いと思いますが、追加のセキュリティ設定を行いたい場合に送信承認ポリシーを活用出来るか検討してみてください。