本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 策略语言的语法。
策略级信息
有两种策略级元素:Id
和 Version
。下表提供了有关这些元素的信息。
名称 |
描述 |
必填 |
有效值 |
---|---|---|---|
|
唯一标识策略。 |
否 |
任何字符串 |
|
指定策略访问语言的版本。 |
否 |
任何字符串。作为最佳实践,我们建议为此字段使用“2012-10-17”值。 |
特定于策略的语句
身份授权策略需要至少一个语句。每个语句可以包含下表中所述的元素。
名称 |
描述 |
必填 |
有效值 |
---|---|---|---|
|
唯一标识语句。 |
否 |
任何字符串。 |
|
指定在评估期间您希望策略语句返回的结果。 |
是 |
“Allow”或“Deny”。 |
|
指定将应用策略的身份。 (对于发送授权,这是身份所有者授权委托发件人使用的电子邮件地址或域。) |
是 |
身份的 Amazon 资源名称(ARN)。 |
|
指定接收语句中权限的 AWS 账户、用户或 AWS 服务。 |
是 |
有效的 AWS 账户 ID、用户 ARN 或 AWS 服务。AWS 账户ID 和用户 ARN 使用 有关用户 ARN 的格式的示例,请参阅《AWS 一般参考》https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam.html。 |
|
指定语句所适用的操作。 |
是 |
"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”) 您可以指定一个或多个这些操作。 |
|
指定任何有关权限的限制条件或详细信息。 |
否 |
请参阅下表中有关条件的信息。 |
条件
条件是语句中有关权限的任何限制。语句中指定条件的部分可能为各部分中最为详尽的部分。密钥是作为访问限制基础的具体特征,例如,请求的日期和时间。
您需使用条件和密钥一起明确说明限制。例如,如果需要限制委托发件人,使其不能在 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 个字符。此外,它们只能包含字母数字字符、连字符和下划线。