我应该如何编写IAM以使仅某个VPC可以通过SES发送邮件?

时间:2018-11-21 02:35:38

标签: amazon-web-services amazon-iam amazon-ses redash

我在EC2实例上使用Redash,并且必须通过Amazon SES发送邀请邮件。
我想添加一个设置以将邮件发件人限制为Redash实例所在的某个VPC内部。

这是我的SES IAM:

{
    "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 个答案:

答案 0 :(得分:1)

这是一个有趣的挑战!

Amazon SES接口在互联网上,因此从理论上讲任何人都可以访问它。通常,策略限制会使用 IAM用户或角色上的权限,该权限会调用SES来确定是否允许呼叫,而不是从何处进行呼叫。

我认为您正在这样做是因为您只希望Production系统发送电子邮件,而不是Dev / Test系统。

但是, 不可能通过VPC进行限制,因为Amazon SES无法了解VPC的概念。它只是通过Internet接收API调用。

如果您的应用程序位于专用子网中,并且通过NAT网关发送请求,那么您可以添加一个策略以基于NAT网关的IP地址进行限制。

您可以通过在Allow语句上添加限制,或通过添加Deny语句来做到这一点。

请参阅:AWS: Denies Access to AWS Based on the Source IP - AWS Identity and Access Management