Amazon SES 策略剖析 - Amazon Simple Email Service

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

Amazon SES 策略剖析

策略遵循特定的结构,包含元素,并且必须满足特定的要求。

策略结构

每个授权策略是一个附加到身份的 JSON 文档。每个策略包含以下部分:

  • 位于文档顶部的策略级信息。

  • 一个或多个单独的语句,每个语句描述一组权限。

以下示例策略向 AWS 账户 ID 123456789012 授予已验证域 example.com d的 Action(操作)部分中指定的权限。

{ "Id":"ExampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeAccount", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:GetEmailIdentity", "ses:UpdateEmailIdentityPolicy", "ses:ListRecommendations", "ses:CreateEmailIdentityPolicy", "ses:DeleteEmailIdentity" ] } ] }

您可以在身份策略示例中找到更多授权策略的示例。

策略元素

本部分介绍身份授权策略中包含的元素。首先,我们将介绍策略级元素,然后介绍仅适用于语句的元素。我们接下来将讨论如何在语句中添加条件。

有关元素语法的特定信息,请参阅《IAM 用户指南》中的 IAM 策略语言的语法

策略级信息

有两种策略级元素:IdVersion。下表提供了有关这些元素的信息。

名称

描述

必填

有效值

Id

唯一标识策略。

任何字符串

Version

指定策略访问语言的版本。

任何字符串。作为最佳实践,我们建议为此字段使用“2012-10-17”值。

特定于策略的语句

身份授权策略需要至少一个语句。每个语句可以包含下表中所述的元素。

名称

描述

必填

有效值

Sid

唯一标识语句。

任何字符串。

Effect

指定在评估期间您希望策略语句返回的结果。

“Allow”或“Deny”。

Resource

指定将应用策略的身份。

(对于发送授权,这是身份所有者授权委托发件人使用的电子邮件地址或域。)

身份的 Amazon 资源名称(ARN)。

Principal

指定接收语句中权限的 AWS 账户、用户或 AWS 服务。

有效的 AWS 账户 ID、用户 ARN 或 AWS 服务。AWS 账户ID 和用户 ARN 使用 "AWS" 指定(例如,"AWS": ["123456789012"]"AWS": ["arn:aws:iam::123456789012:root"])。AWS 服务名称使用 "Service" 指定(例如,"Service": ["cognito-idp.amazonaws.com"])。

有关用户 ARN 的格式的示例,请参阅《AWS 一般参考》https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam.html

Action

指定语句所适用的操作。

"ses:BatchGetMetricData", "ses:CancelExportJob", "ses:CreateDeliverabilityTestReport", "ses:CreateEmailIdentityPolicy", "ses:CreateExportJob", "ses:DeleteEmailIdentity", "ses:DeleteEmailIdentityPolicy", "ses:GetDomainStatisticsReport", "ses:GetEmailIdentity","ses:GetEmailIdentityPolicies", "ses:GetExportJob", "ses:ListExportJobs", "ses:ListRecommendations", "ses:PutEmailIdentityConfigurationSetAttributes", "ses:PutEmailIdentityDkimAttributes", "ses:PutEmailIdentityDkimSigningAttributes", "ses:PutEmailIdentityFeedbackAttributes", "ses:PutEmailIdentityMailFromAttributes", "ses:TagResource", "ses:UntagResource", "ses:UpdateEmailIdentityPolicy"

发送授权操作:“ses:SendEmail”、“ses:SendRawEmail”、“ses:SendTemplatedEmail”、“ses:SendBulkTemplatedEmail”)

您可以指定一个或多个这些操作。

Condition

指定任何有关权限的限制条件或详细信息。

请参阅下表中有关条件的信息。

条件

条件是语句中有关权限的任何限制。语句中指定条件的部分可能为各部分中最为详尽的部分。密钥是作为访问限制基础的具体特征,例如,请求的日期和时间。

您需使用条件和密钥一起明确说明限制。例如,如果需要限制委托发件人,使其不能在 2019 年 7 月 30 日后代表您对 Amazon SES 发出请求,则可以使用名为 DateLessThan 的条件。您使用的密钥名为 aws:CurrentTime,并将其值设置为 2019-07-30T00:00:00Z

SES 仅实施以下 AWS 范围的策略键:

  • aws:CurrentTime

  • aws:EpochTime

  • aws:SecureTransport

  • aws:SourceIp

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserAgent

  • aws:VpcSourceIp

有关这些键的更多信息,请参阅 IAM 用户指南

策略要求

策略必须满足下列所有要求:

  • 每个策略必须包括至少一个语句。

  • 每个策略必须包括至少一个有效主体。

  • 每个策略必须指定一个资源,该资源必须是附加策略的身份的 ARN。

  • 身份所有者可以为每个唯一的身份关联最多 20 个策略。

  • 策略不得超过 4 千字节 (KB)。

  • 策略名称不得超过 64 个字符。此外,它们只能包含字母数字字符、连字符和下划线。