

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

# 使用 Amazon SES 中的身份授权
<a name="identity-authorization-policies"></a>

身份授权策略通过以下方式定义个人已验证的身份如何使用 Amazon SES：指定允许或拒绝对身份执行哪些 SES API 操作，以及在哪些条件下对身份执行这些操作。

通过使用这些授权策略，您可以随时更改或撤销权限，从而维护您对身份的控制。您甚至可以授权其他用户通过其自有 SES 账户使用您拥有的身份（域或电子邮件地址）。

**Topics**
+ [Amazon SES 策略剖析](policy-anatomy.md)
+ [在 Amazon SES 中创建身份授权策略](identity-authorization-policies-creating.md)
+ [Amazon SES 中的身份策略示例](identity-authorization-policy-examples.md)
+ [在 Amazon SES 中管理您的身份授权策略](managing-policies.md)

# 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`   |  指定将应用策略的身份。 （对于[发送授权](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"]`）指定的。 有关用户格式的示例 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” （[发送授权](sending-authorization-identity-owner-tasks-policy.md)操作：“ses：”、SendEmail “ses：”、SendRawEmail “ses：”、“ses：SendTemplatedEmail”、“ses：SendBulkTemplatedEmail”） 您可以指定一个或多个这些操作。  | 
|   `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 个字符。此外，它们只能包含字母数字字符、连字符和下划线。

# 在 Amazon SES 中创建身份授权策略
<a name="identity-authorization-policies-creating"></a>

身份授权策略由声明组成，这些声明指定允许或拒绝对身份执行哪些 API 操作，以及在哪些条件下允许或拒绝执行这些 API 操作。

要授权使用您拥有的 Amazon SES 域或电子邮件地址身份，您必须创建授权策略，然后将该策略附加到身份。一个身份可以有零个、一个或多个策略。但是，一个策略只能与一个身份关联。

有关可在身份授权策略中使用的 API 操作的列表，请参阅[特定于策略的语句](policy-anatomy.md#identity-authorization-policy-statements)表中的 *Action*（操作）行。

您可以通过下列方法来创建身份授权策略：
+ **通过使用策略生成器** - 您可以在 SES 控制台中使用策略生成器创建简单的策略。除了允许或拒绝对 SES API 操作的权限外，您还可以使用条件限制操作。您还可以使用策略生成器快速创建策略的基本结构，然后通过编辑策略对其进行自定义。
+ **通过创建自定义策略** — 如果您想包含更高级的条件或使用 AWS 服务作为委托人，则可以使用 SES 控制台或 SES API 创建自定义策略并将其附加到身份。

**Topics**
+ [使用策略生成器](using-policy-generator.md)
+ [创建自定义策略](creating-custom-policy.md)

# 使用策略生成器
<a name="using-policy-generator"></a>

您可以使用策略生成器创建简单授权策略，步骤如下。

**使用策略生成器创建策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在**身份**屏幕上的**身份**容器中，选择您希望为之创建授权策略的已验证身份。

1. 在上一步中选择的已验证身份的详细信息屏幕中，选择 **Authorization**（授权）选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Use policy generator**（使用策略生成器）。

1. 在 **Create statement**（创建语句）窗格中，选择 **Effect**（效果）字段中的 **Allow**（允许）。（如果要创建策略以限制此身份，请改为选择 **Deny**（拒绝）。）

1. **在**委托人**字段中，输入要获得您要为该*AWS 账户 身份授权的权限的 ID*、*IAM 用户 ARN* AWS 或服务，然后选择添加。**（如果您希望授权多个委托人，请为每个委托人重复此步骤。）

1. 在 **Actions**（操作）字段中，选中要为委托人授权的每种操作对应的复选框。

1. （可选）如果希望向权限添加限定语句，请展开 **Specify conditions**（指定条件）。

   1. 从 **Operator**（运算符）下拉菜单中选择运算符。

   1. 从 **Key**（类型）下拉菜单中选择类型。

   1. 根据您选择的键类型，在 **Value**（值）字段中输入其值。（如果想添加更多条件，请选择 **Add new condition**（添加新条件），然后为每个额外的步骤重复此步骤。）

1. 选择 **Save statement**（保存语句）。

1. （可选）如果希望向策略中添加更多语句，请展开 **Create another statement**（创建另一个语句），并重复步骤 6 - 10。

1. 选择**下一步**，则**自定义策略**屏幕中，**编辑策略详细信息**容器将具有您可以自己更改或自定义策略的**名称**和**策略文档**的字段。

1. 选择 **Next**（下一步），在 **Review and apply**（查看并应用）屏幕上，**Overview**（概述）容器将显示您要授权的已验证身份以及此策略的名称。在 **Policy document**（策略文档）窗格将是您刚刚写的实际政策以及您添加的任何条件——查看策略，如果看起来正确，请选择 **Apply policy**（申请策略）。（如果您需要更改或更正某些内容，请选择 **Previous**（上一页）并在 **Edit policy details**（编辑策略详细信息）容器中操作。）

# 创建自定义策略
<a name="creating-custom-policy"></a>

如果要创建自定义策略并将其附加到身份，您有以下选择：
+ **使用 Amazon SES API** – 在文本编辑器中创建策略，然后使用 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)中所述的 `PutIdentityPolicy` API 将策略附加到身份。
+ **使用 Amazon SES 控制台** – 在文本编辑器中创建策略，并在 Amazon SES 控制台中将其粘贴到自定义策略编辑器，将策略附加到身份。以下步骤介绍这种方法。



**使用自定义策略编辑器创建自定义策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在**身份**屏幕上的**身份**容器中，选择您希望为之创建授权策略的已验证身份。

1. 在上一步中选择的已验证身份的详细信息屏幕中，选择 **Authorization**（授权）选项卡。

1. 在 **Authorization policies**（授权策略）窗格中，选择 **Create policy**（创建策略），并从下拉列表中选择 **Create custom policy**（创建自定义策略）。

1. 在 **Policy document**（策略文档）窗格中，键入或粘贴 JSON 格式的策略文本。您还可以使用策略生成器快速创建策略的基本结构，然后在此处对其进行自定义。

1. 选择**应用策略**。（如果您需要修改自定义策略，只需在 **Authorization**（授权）选项卡，选择 **Edit**（编辑），然后在 **Policy document**（策略文档）窗格中更改，然后是窗格 **Save changes**（保存更改）。

# Amazon SES 中的身份策略示例
<a name="identity-authorization-policy-examples"></a>

您可以使用身份授权指定允许或拒绝对身份执行 API 操作的精细条件。

**Topics**
+ [指定主体](#identity-authorization-policy-example-delegate-user)
+ [限制操作](#sending-authorization-policy-example-restricting-action)
+ [使用多个语句](#identity-authorization-policy-example-multiple-statements)

## 指定主体
<a name="identity-authorization-policy-example-delegate-user"></a>

*委托人*（即您向其授予权限的实体）可以是 AWS 账户、 AWS Identity and Access Management (IAM) 用户或属于同一账户的 AWS 服务。

*以下示例显示了一个简单的策略，该策略允许 AWS ID *123456789012 控制同样归123456789012* 拥有的经过验证的身份 e *xample.com*。 AWS 账户 *

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

****  

```
{
  "Id":"SampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeMarketer",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "123456789012"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

以下示例策略向两个用户授予控制已验证的身份 *example.com* 的权限。用户通过其 Amazon 资源名称（ARN）指定。

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

****  

```
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeIAMUser",
      "Effect":"Allow",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John",
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:DeleteEmailIdentity",
        "ses:PutEmailIdentityDkimSigningAttributes"
      ]
    }
  ]
}
```

------

## 限制操作
<a name="sending-authorization-policy-example-restricting-action"></a>

根据您要授权的控制级别，可以在身份授权策略中指定多种操作：

```
 1. "BatchGetMetricData",
 2. "ListRecommendations",
 3. "CreateDeliverabilityTestReport",
 4. "CreateEmailIdentityPolicy",
 5. "DeleteEmailIdentity",
 6. "DeleteEmailIdentityPolicy",
 7. "GetDomainStatisticsReport",
 8. "GetEmailIdentity",
 9. "GetEmailIdentityPolicies",
10. "PutEmailIdentityConfigurationSetAttributes",
11. "PutEmailIdentityDkimAttributes",
12. "PutEmailIdentityDkimSigningAttributes",
13. "PutEmailIdentityFeedbackAttributes",
14. "PutEmailIdentityMailFromAttributes",
15. "TagResource",
16. "UntagResource",
17. "UpdateEmailIdentityPolicy"
```

身份授权策略还使您能够将主体限制为只能执行其中一项操作。

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

****  

```
{
    "Id": "ExamplePolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ControlAction",
            "Effect": "Allow",
            "Resource": "arn:aws:ses:us-east-1:123456789012:identity/example.com",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            },
            "Action": [
                "ses:PutEmailIdentityMailFromAttributes"
            ]
        }
    ]
}
```

------

## 使用多个语句
<a name="identity-authorization-policy-example-multiple-statements"></a>

身份授权策略可以包含多个语句。以下示例策略包含两个语句。第一个语句拒绝两个用户在同一个账户 `123456789012` 内通过 *sender@example.com* 访问 `getemailidentity`。第二个语句拒绝主体 *Jack* 在同一个账户 `123456789012` 内访问 `UpdateEmailIdentityPolicy`。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"DenyGet",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":[
          "arn:aws:iam::123456789012:user/John", 
          "arn:aws:iam::123456789012:user/Jane"
        ]
      },
      "Action":[
        "ses:GetEmailIdentity"
      ]
    },
    {
      "Sid":"DenyUpdate",
      "Effect":"Deny",
      "Resource":"arn:aws:ses:us-east-1:123456789012:identity/sender@example.com",
      "Principal":{
        "AWS":"arn:aws:iam::123456789012:user/Jack"
      },
      "Action":[
        "ses:UpdateEmailIdentityPolicy"
      ]
    }
  ]
}
```

------

# 在 Amazon SES 中管理您的身份授权策略
<a name="managing-policies"></a>

除了创建策略和将策略附加到身份之外，您还可以按照以下各部分的说明编辑、删除、列出和检索身份的策略。

## 使用 Amazon SES 控制台管理策略
<a name="managing-policies-console"></a>

管理 Amazon SES 策略需要使用 Amazon SES 控制台查看、编辑或删除附加到身份的策略。

**使用 Amazon SES 控制台管理策略**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在左侧导航窗格中，选择**已验证身份**。

1. 在身份列表中，选择您要管理的身份。

1. 在身份详细信息页面上，导航到 **Authorization**（授权）选项卡。在这里，您可以找到附上此身份的所有策略的列表。

1. 通过选中要管理的策略复选框来选择该策略。

1. 根据所需的管理任务，选择相应的按钮，如下所示：

   1. 要查看策略，请选择 **View policy**（查看策略）。如果需要其副本，请选择 **Copy**（复制）按钮，它将被复制到剪贴板。

   1. 要编辑策略，请选择 **Edit**（编辑）。在 **Policy document**（策略文档）中，编辑策略，然后选择 **Save changes**（保存更改）。
**注意**  
要撤销权限，您可以编辑策略或删除它。

   1. 要移除策略，请选择 **Delete**（删除）。
**重要**  
删除策略是永久性操作。我们建议您通过复制策略并粘贴到文本文件中来备份策略，然后再将其删除。

## 使用 Amazon SES API 管理策略
<a name="managing-policies-api"></a>

管理 Amazon SES 策略需要使用 Amazon SES API 查看、编辑或删除附加到身份的策略。

**使用 Amazon SES API 列出和查看策略**
+ 您可以使用 [ListIdentityPolicies API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html)列出附加到身份的策略。您也可以使用 [GetIdentityPoliciesAPI 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicies.html)自行检索策略。

**要使用 Amazon SES API 来编辑策略**
+ 您可以使用 [PutIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)编辑附加到身份的策略。

**要使用 Amazon SES API 删除策略**
+ 您可以使用 [DeleteIdentityPolicy API 操作](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)删除附加到身份的策略。