本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以将 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 凭证的信息,请参阅获取 Amazon SES SMTP 凭证。
创建用于访问 SES 的 IAM 策略
本节介绍如何将 IAM 策略专门用于 SES。要了解创建 IAM 策略的常规方式,请参阅 IAM 用户指南。
有三个理由可能让您将 IAM 与 SES 结合使用:
-
限制电子邮件发送操作。
-
限制用户发送的电子邮件的“发件人”、收件人和“退回路径”地址。
-
控制 API 使用的一般方面,例如允许用户调用他们有权使用的时间段。 APIs
限制操作
要控制用户可执行的 SES 操作,您可以使用 IAM 策略的 Action
元素。您可以通过使用小写字符串 Action
作为 API 名称的前缀来将 ses:
元素设置为任何 SES API 操作。例如,您可以将 Action
设置为 ses:SendEmail
、ses:GetSendStatistics
或 ses:*
(适用于所有操作)。
然后,根据 Action
来指定 Resource
元素,如下所示:
如果该Action
元素仅允许访问电子邮件发送 APIs (即ses:SendEmail
和/或ses:SendRawEmail
):
-
要允许用户使用您的任何身份发送 AWS 账户,请
Resource
将其设置为* -
要限制允许用户发送的身份,请
Resource
将其设置为允许用户使用的身份。 ARNs
如果该Action
元素允许所有人访问 APIs:
-
如果您不希望限制用户发送邮件所用的身份,请将
Resource
设置为 * -
如果您希望限制用户发送邮件时可用的身份,则需要创建两个策略(或位于一个策略中的两个语句):
-
其中一个
Action
设置为允许的明确列表 non-email-sending APIs ,Resource
设置为* -
一个
Action
设置为发送电子邮件的其中一个 APIs(和ses:SendEmail
/或ses:SendRawEmail
),并Resource
设置为你允许用户使用的身份的 ARN。
-
有关可用的 SES 操作的列表,请参阅 Amazon Simple Email Service API 参考。如果该用户将使用 SMTP 接口,您必须至少允许对 ses:SendRawEmail
的访问。
限制电子邮件地址
如果您要将用户限制到特定电子邮件地址,则可以使用一个 Condition
数据块。在 Condition
数据块中,您将使用条件键来指定条件,如 IAM 用户指南中所述。通过使用条件键,您可以控制以下电子邮件地址:
注意
这些电子邮件地址条件键仅适用于下表中 APIs 注明的。
条件键 |
描述 |
API |
---|---|---|
|
限制收件人地址,这包括“收件人”、“抄送”和“密件抄送”地址。 |
|
|
限制“发件人”地址。 |
|
|
限制用作显示名称的“发件人”地址。 |
|
|
限制“退回路径”地址,这是供退回邮件和投诉通过电子邮件反馈转发发送给您的地址。有关电子邮件反馈转发的信息,请参阅通过电子邮件接收 Amazon SES 通知。 |
|
|
允许您控制发送电子邮件时使用的端点 ID |
|
通过 SES API 版本进行限制
通过在条件中使用 ses:ApiVersion
键,您可以根据 SES API 的版本限制对 SES 的访问。
注意
SES SMTP 接口使用 SES API 版本 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 用户指南。
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":"*"
}
]
}
限制发送的时间段
以下政策 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"
}
}
}
]
}