本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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:SendEmail
、ses:GetSendStatistics
或 ses:*
(适用于所有操作)。
然后,根据 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 |
---|---|---|
|
限制收件人地址,包括收件人:、“抄送” 和 “BCC” 地址。 |
|
|
限制“发件人”地址。 |
|
|
限制用作显示名称的“发件人”地址。 |
|
|
限制“退回路径”地址,这是供退回邮件和投诉通过电子邮件反馈转发发送给您的地址。有关电子邮件反馈转发的信息,请参阅通过电子邮件接收 Amazon SES 通知。 |
|
|
允许您控制发送电子邮件时使用的端点 ID |
|
按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" } } } ] }