

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

# Amazon SES 策略剖析
<a name="policy-anatomy"></a>

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

## 策略结构
<a name="identity-authorization-policy-structure"></a>

每个授权策略是一个附加到身份的 JSON 文档。每个策略包含以下部分：
+ 位于文档顶部的策略级信息。
+ 一个或多个单独的语句，每个语句描述一组权限。

*以下示例策略向 AWS 账户 ID *123456789012* 授予在 “*操作*” 部分中为已验证的域名 example.com 指定的权限。*

------
#### [ JSON ]

****  

```
{
  "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"
      ]
    }
  ]
}
```

------

您可以在[身份策略示例](identity-authorization-policy-examples.md)中找到更多授权策略的示例。

## 策略元素
<a name="identity-authorization-policy-elements"></a>

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

有关元素语法的特定信息，请参阅《IAM 用户指南》**中的 [IAM 策略语言的语法](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-grammar.html)。

### 策略级信息
<a name="identity-authorization-policy-policy-wide"></a>

有两种策略级元素：`Id` 和 `Version`。下表提供了有关这些元素的信息。


****  

|  Name  |  说明  |  必填  |  有效值  | 
| --- | --- | --- | --- | 
|  `Id`  | 唯一标识策略。 | 否 | 任何字符串 | 
|  `Version`  | 指定策略访问语言的版本。 | 否 | 任何字符串。作为最佳实践，我们建议为此字段使用“2012-10-17”值。 | 

### 特定于策略的语句
<a name="identity-authorization-policy-statements"></a>

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


****  

|  Name  |  说明  |  必填  |  有效值  | 
| --- | --- | --- | --- | 
|  `Sid`  | 唯一标识语句。 | 否 | 任何字符串。 | 
|  `Effect`  | 指定在评估期间您希望策略语句返回的结果。 | 是 | “Allow”或“Deny”。 | 
|  `Resource`  | 指定将应用策略的身份。<br />（对于[发送授权](sending-authorization-identity-owner-tasks-policy.md)，这是身份所有者授权委托发件人使用的电子邮件地址或域。） | 是 | 身份的 Amazon 资源名称（ARN）。 | 
|  `Principal`  | 在语句中指定接收权限的 AWS 账户、用户或 AWS 服务。 | 是 | 有效的 AWS 账户 ID、用户 ARN 或 AWS 服务。 AWS 账户 IDs 和用户 ARNs 是使用`"AWS"`（例如，`"AWS": ["123456789012"]`或`"AWS": ["arn:aws:iam::123456789012:root"]`）指定的。 AWS 服务名是使用`"Service"`（例如`"Service": ["cognito-idp.amazonaws.com"]`）指定的。<br />有关用户格式的示例 ARNs，请参阅[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：”、“ses：CreateExportJob”、“ses：”、DeleteEmailIdentity “ses：”、DeleteEmailIdentityPolicy “ses：”、GetDomainStatisticsReport “ses：”、GetEmailIdentity “ses：”、GetEmailIdentityPolicies “ses：”、GetExportJob “ses：”、“ses：ListExportJobs”、“ses：”、ListRecommendations “ses：”、PutEmailIdentityConfigurationSetAttributes “ses：”、PutEmailIdentityDkimAttributes “ses：”、PutEmailIdentityDkimSigningAttributes “ses：”、PutEmailIdentityFeedbackAttributes “ses：”、“ses：PutEmailIdentityMailFromAttributes”、“ses：TagResource”，“ses：UntagResource”，“ses：UpdateEmailIdentityPolicy”<br />（[发送授权](sending-authorization-identity-owner-tasks-policy.md)操作：“ses：”、SendEmail “ses：”、SendRawEmail “ses：”、“ses：SendTemplatedEmail”、“ses：SendBulkTemplatedEmail”）<br />您可以指定一个或多个这些操作。 | 
|  `Condition`  | 指定任何有关权限的限制条件或详细信息。 | 否 | 请参阅下表中有关条件的信息。 | 

### Conditions
<a name="identity-authorization-policy-conditions"></a>

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

您需使用条件和密钥一起明确说明限制。例如，如果需要限制委托发件人，使其不能在 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 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition)。

## 政策要求
<a name="identity-authorization-policy-restrictions"></a>

策略必须满足下列所有要求：
+ 每个策略必须包括至少一个语句。
+ 每个策略必须包括至少一个有效主体。
+ 每个策略必须指定一个资源，该资源必须是附加策略的身份的 ARN。
+ 身份所有者可以为每个唯一的身份关联最多 20 个策略。
+ 策略不得超过 4 千字节 (KB)。
+ 策略名称不得超过 64 个字符。此外，它们只能包含字母数字字符、连字符和下划线。