Как мне написать IAM, чтобы только определенный VPC мог отправлять почту через SES?

Я использую Redash на экземпляре EC2, и мне нужно отправлять приглашения через Amazon SES.
Я хотел бы добавить параметр, ограничивающий отправителя почты внутри определенного VPC, где находится экземпляр Redash.

Вот мой IAM для SES:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ses:SendRawEmail",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-******"
                },
                "ForAnyValue:StringLike": {
                    "ses:Recipients": "*@mycompany.com"
                }
            }
        }
    ]
}

Но я не могу отправлять письма. Я думаю, это потому, что я использую конечную точку VPC в приведенном выше коде. Это еще не доступно для SES.
Есть ли другой способ указать определенный VPC?

1 ответ

Решение

Это интересный вызов!

Интерфейс Amazon SES находится в Интернете, поэтому теоретически любой может получить к нему доступ. Обычно ограничения политики используют разрешения для пользователя IAM или роли, которая вызывает SES, чтобы определить, разрешены ли вызовы, а не от того, откуда был сделан вызов.

Я предполагаю, что вы делаете это, потому что вы хотите, чтобы ваша производственная система отправляла электронные письма, а не системы разработки / тестирования.

Тем не менее, это невозможно ограничить через VPC, потому что Amazon SES не имеет представления о концепции VPC. Он просто получает вызовы API через Интернет.

Если ваше приложение находится в частной подсети и отправляет запросы через NAT-шлюз, вы можете добавить политику для ограничения на основе IP -адреса NAT-шлюза.

Вы можете сделать это либо, установив ограничение на Allow заявление или добавив Deny заявление.

См. AWS: отказ в доступе к AWS на основе исходного IP -адреса - Управление идентификацией и доступом AWS

Другие вопросы по тегам