本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SES 中的 Identity and Access Management
您可以将 AWS Identity and Access Management (IAM) 与亚马逊简单电子邮件服务 (Amazon SES) 配合使用,以指定用户、群组或角色可以执行的 SES API 操作。(在本主题中,我们将这些实体统称为用户。) 您还可以控制用户可对电子邮件的“发件人”、收件人和“退回路径”地址使用的电子邮件地址。
例如,您可以创建一个 IAM 策略,允许组织中的用户发送电子邮件,但是不允许其执行管理操作(例如检查发送统计数据)。又例如,您可以编写一个策略,允许用户通过 SES 从您的账户发送电子邮件,但只在他们使用特定的“发件人”地址时才能这样做。
要使用 IAM,您可以定义一个 IAM 策略(一个用于显式定义权限的文档),然后将该策略附加到用户。要了解如何创建 IAM 策略,请参阅 IAM 用户指南。除了应用您在策略中设定的限制之外,用户与 SES 交互的方式或 SES 执行请求的方式没有变化。
注意
-
如果您的账户在 SES 沙盒中,其限制可能会阻止实施其中一些策略 – 请参阅请求生产环境访问权限。
-
您还可以使用发送授权策略控制对 SES 的访问。不过,IAM 策略限制各个用户可执行的操作,发送授权策略限制可以使用各个经验证的身份的方式。此外,只有发送授权策略可以授予跨账户访问权限。有关发送授权的更多信息,请参阅使用 Amazon SES 的发送授权。
如果您正在查找有关如何为现有用户生成 SES SMTP 凭证的信息,请参阅获取亚马逊SESSMTP凭证。
创建用于访问 SES 的 IAM 策略
本节介绍如何将 IAM 策略专门用于 SES。要了解创建 IAM 策略的常规方式,请参阅 IAM 用户指南。
有三个理由可能让您将 IAM 与 SES 结合使用:
-
限制电子邮件发送操作。
-
限制用户发送的电子邮件的“发件人”、收件人和“退回路径”地址。
-
控制 API 使用的常规方面,如用户被允许调用其获权使用的 API 的时间段。
限制操作
要控制用户可执行的 SES 操作,您可以使用 IAM 策略的 Action
元素。您可以通过使用小写字符串 Action
作为 API 名称的前缀来将 ses:
元素设置为任何 SES API 操作。例如,您可以将 Action
设置为 ses:SendEmail
、ses:GetSendStatistics
或 ses:*
(适用于所有操作)。
然后,根据 Action
来指定 Resource
元素,如下所示:
如果 Action
元素仅允许对电子邮件发送 API (即 ses:SendEmail
和/或 ses:SendRawEmail
) 的访问:
-
要允许用户使用您的任何身份发送 AWS 账户,请
Resource
将其设置为* -
要限制允许用户发送邮件所用的身份,请将
Resource
设置为允许用户使用的身份的 ARN。
如果 Action
元素允许对所有 API 的访问:
-
如果您不希望限制用户发送邮件所用的身份,请将
Resource
设置为 * -
如果您希望限制用户发送邮件时可用的身份,则需要创建两个策略(或位于一个策略中的两个语句):
-
其中一个
Action
设置为允许的 non-email-sending API 的明确列表并Resource
设置为* -
另一个语句的
Action
设置为电子邮件发送 API (ses:SendEmail
和/或ses:SendRawEmail
) 之一,Resource
设置为您要允许用户使用的身份的 ARN。
-
有关可用的 SES 操作的列表,请参阅 Amazon Simple Email Service API 参考。如果该用户将使用 SMTP 接口,您必须至少允许对 ses:SendRawEmail
的访问。
限制电子邮件地址
如果您要将用户限制到特定电子邮件地址,则可以使用一个 Condition
数据块。在 Condition
数据块中,您将使用条件键来指定条件,如 IAM 用户指南中所述。通过使用条件键,您可以控制以下电子邮件地址:
注意
这些电子邮件地址条件键仅适用于下表中记录的 API。
条件键 |
描述 |
API |
---|---|---|
|
限制收件人地址,这包括“收件人”、“抄送”和“密件抄送”地址。 |
|
|
限制“发件人”地址。 |
|
|
限制用作显示名称的“发件人”地址。 |
|
|
限制“退回路径”地址,这是供退回邮件和投诉通过电子邮件反馈转发发送给您的地址。有关电子邮件反馈转发的信息,请参阅通过电子邮件接收 Amazon SES 通知。 |
|
通过 SES API 版本进行限制
通过在条件中使用 ses:ApiVersion
键,您可以根据 SES API 的版本限制对 SES 的访问。
注意
SES SMTP 接口使用 SES API 版本 2 的 ses:SendRawEmail
。
限制常规 API 使用
通过在条件中使用 AWS-wide 密钥,您可以根据允许用户访问 API 的日期和时间等方面限制对 SES 的访问。SES 仅实现以下 AWS范围的策略密钥:
-
aws:CurrentTime
-
aws:EpochTime
-
aws:SecureTransport
-
aws:SourceIp
-
aws:SourceVpc
-
aws:SourceVpce
-
aws:UserAgent
-
aws:VpcSourceIp
有关这些键的更多信息,请参阅 IAM 用户指南。
SES 的 IAM 策略示例
本主题提供允许用户仅在特定条件下访问 SES 的策略的示例。
此节中的策略示例:
允许对所有 SES 操作的完全访问
以下策略允许用户调用任何 SES 操作。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:*" ], "Resource":"*" } ] }
允许仅访问 SES API 版本 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":"*" } ] }
限制发送的时间段
以下策略允许用户仅在 2018 年 9 月期间调用 SES 电子邮件发送 API。
{ "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 电子邮件发送 API,但仅允许发送到 example.com(StringLike
区分大小写)域中的收件人地址。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "ForAllValues:StringLike":{ "ses:Recipients":[ "*@example.com" ] } } } ] }
限制“发件人”地址
以下策略允许用户调用 SES 电子邮件发送 API,但仅当“发件人”地址为 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 电子邮件发送 API,但仅当“发件人”地址的显示名称包含 Marketing(StringLike
区分大小写)时才如此。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringLike":{ "ses:FromDisplayName":"Marketing" } } } ] }
限制退回邮件和投诉反馈的目标
以下策略允许用户调用 SES 电子邮件发送 API,但仅当电子邮件的“退回路径”设置为 feedback@example.com 时才如此。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FeedbackAddress":"feedback@example.com" } } } ] }