Amazon 中的身份和访问管理 SES - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon 中的身份和访问管理 SES

您可以将 AWS Identity and Access Management (IAM) 与 Amazon 简单电子邮件服务 (AmazonSES) 配合使用,以指定用户、群组或角色可以执行哪些SESAPI操作。(在本主题中,我们将这些实体统称为用户。) 您还可以控制用户可对电子邮件的“发件人”、收件人和“退回路径”地址使用的电子邮件地址。

例如,您可以创建一个 IAM 策略,允许组织中的用户发送电子邮件,但是不允许其执行管理操作 (如检查发送统计数据)。又例如,您可以编写一个策略,允许用户通过 SES 从您的账户发送电子邮件,但只能在他们使用特定的“发件人”地址时这样做。

要使用IAM,您需要定义一个IAM策略(一个明确定义权限的文档),然后将该策略附加到用户。要了解如何创建IAM策略,请参阅《IAM用户指南》。除了应用在策略中设定的限制之外,用户与 SES 交互的方式或 SES 执行请求的方式没有变化。

注意
  • 如果您的账户处于SES沙箱中,则其限制很可能会阻止其中一些政策的实施——请参阅。请求生产环境访问权限

  • 您还可以使用发送授权策略控制对 SES 的访问。虽然IAM策略限制了个人用户可以做什么,但发送授权策略限制了个人经过验证的身份的使用方式。此外,只有发送授权策略可以授予跨账户访问权限。有关发送授权的更多信息,请参阅使用 Amazon SES 的发送授权

如果您正在寻找有关如何为现有用户生成SESSMTP证书的信息,请参阅获取亚马逊SESSMTP凭证

为对 SES 的访问创建 IAM 策略

本节介绍如何将 IAM 策略专门用于 SES。要了解如何创建一般IAM策略,请参阅《IAM用户指南》

结合使用 IAM 和 SES 的理由有三个:

  • 限制电子邮件发送操作。

  • 限制用户发送的电子邮件的“发件人”、收件人和“退回路径”地址。

  • 控制API使用的一般方面,例如允许用户拨打他们有权使用的时间段。APIs

限制操作

要控制用户可执行的 SES 操作,您可以使用 IAM 策略的 Action 元素。您可以通过在API名称前加上小写字符串来将Action元素设置为任何SESAPI操作。ses:例如,您可以将 Action 设置为 ses:SendEmailses:GetSendStatisticsses:*(适用于所有操作)。

然后,根据 Action 来指定 Resource 元素,如下所示:

如果该Action元素仅允许访问电子邮件发送APIs(即ses:SendEmail和/或ses:SendRawEmail):

  • 要允许用户使用您的任何身份发送 AWS 账户,请Resource将其设置为*

  • 要限制允许用户发送的身份,请Resource将其设置为允许用户使用的身份。ARNs

如果该Action元素允许所有人访问APIs:

  • 如果您不希望限制用户发送邮件所用的身份,请将 Resource 设置为 *

  • 如果您希望限制用户发送邮件时可用的身份,则需要创建两个策略(或位于一个策略中的两个语句):

    • 其中一个Action设置为允许的明确列表 non-email-sendingAPIs,Resource设置为*

    • 一个Action设置为发送电子邮件的其中一个APIs(和 ses:SendEmail /或ses:SendRawEmail),并Resource设置为你允许用户使用的身份。ARN

有关可用SES操作的列表,请参阅《Amazon 简单电子邮件服务API参考》。如果用户要使用该SMTP界面,则必须ses:SendRawEmail至少允许访问。

限制电子邮件地址

如果您要将用户限制到特定电子邮件地址,则可以使用一个 Condition 数据块。在该Condition区块中,您可以使用IAM用户指南中所述的条件键来指定条件。通过使用条件键,您可以控制以下电子邮件地址:

注意

这些电子邮件地址条件键仅适用于下表中APIs注明的。

条件键

描述

API

ses:Recipients

限制收件人地址,包括收件人:、“抄送” 和 “BCC” 地址。

SendEmail, SendRawEmail

ses:FromAddress

限制“发件人”地址。

SendEmail, SendRawEmail, SendBounce

ses:FromDisplayName

限制用作显示名称的“发件人”地址。

SendEmail, SendRawEmail

ses:FeedbackAddress

限制“退回路径”地址,这是供退回邮件和投诉通过电子邮件反馈转发发送给您的地址。有关电子邮件反馈转发的信息,请参阅通过电子邮件接收 Amazon SES 通知

SendEmail, SendRawEmail

ses:MultiRegionEndpointId

允许您控制发送电子邮件时使用的端点 ID

SendEmail, SendBulkEmail

按SESAPI版本限制

通过在条件中使用ses:ApiVersion密钥,您可以SES根据的版本限制访问权限SESAPI。

注意

该SESSMTP接口使用SESAPI版本 2 的ses:SendRawEmail

限制一般API用法

通过在条件中使用 AWS-wide 密钥,您可以SES根据允许用户访问的日期和时间等方面限制访问APIs权限。 SES仅实现以下 AWS范围的策略密钥:

  • aws:CurrentTime

  • aws:EpochTime

  • aws:SecureTransport

  • aws:SourceIp

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserAgent

  • aws:VpcSourceIp

有关这些密钥的更多信息,请参阅《IAM用户指南》

IAM 的 SES 的策略示例

本主题提供了仅允许用户在特定条件下访问 SES 的策略的示例。

允许对所有 SES 操作的完全访问

以下策略允许用户调用任何 SES 操作。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:*" ], "Resource":"*" } ] }

仅允许访问SESAPI版本 2

以下策略仅允许用户调用API版本 2 的SES操作。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:*" ], "Resource":"*", "Condition": { "StringEquals" : { "ses:ApiVersion" : "2" } } } ] }

仅允许对电子邮件发送操作的访问

以下策略允许用户使用 SES 发送电子邮件,但不允许用户执行管理操作(如访问 SES 发送统计数据)。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*" } ] }

限制发送的时间段

以下政策APIs仅允许用户在 2018 年 9 月致电SES发送电子邮件。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "DateGreaterThan":{ "aws:CurrentTime":"2018-08-31T12:00Z" }, "DateLessThan":{ "aws:CurrentTime":"2018-10-01T12:00Z" } } } ] }

限制收件人地址

以下策略允许用户拨打SES电子邮件发送APIs电话,但只能拨打域名e xample.com 中的收件人地址(StringLike区分大小写)。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "ForAllValues:StringLike":{ "ses:Recipients":[ "*@example.com" ] } } } ] }

限制“发件人”地址

以下政策允许用户拨打SES电子邮件发送电话APIs,但前提是 “发件人” 地址为 marketing@example.com。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FromAddress":"marketing@example.com" } } } ] }

以下政策允许用户致电 SendBounceAPI,但前提是 “发件人” 地址为 bounce@example.com

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendBounce" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FromAddress":"bounce@example.com" } } } ] }

限制电子邮件发件人的显示名称

以下政策允许用户拨打SES电子邮件发送电话APIs,但前提StringLike是 “发件人” 地址的显示名称包括市场营销(区分大小写)。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringLike":{ "ses:FromDisplayName":"Marketing" } } } ] }

限制退回邮件和投诉反馈的目标

以下政策允许用户拨打SES电子邮件发送电话APIs,但前提是电子邮件的 “返回路径” 设置为 feedback@example.com。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FeedbackAddress":"feedback@example.com" } } } ] }