

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 給予 Amazon SES 接收電子郵件的許可
<a name="receiving-email-permissions"></a>

當您在 SES 中收到電子郵件時，您可以執行的一些任務需要特殊許可，例如傳送電子郵件到 Amazon Simple Storage Service (Amazon S3) 儲存貯體或呼叫 AWS Lambda 函數。本節說明多個常見使用案例的範例政策。

**Topics**
+ [設定交付至 S3 儲存貯體動作的 IAM 角色許可](#receiving-email-permissions-s3-iam-role)
+ [授予 SES 寫入 S3 儲存貯體的許可](#receiving-email-permissions-s3)
+ [授予 SES 許可以使用您的 AWS KMS 金鑰](#receiving-email-permissions-kms)
+ [授予 SES 叫用 AWS Lambda 函數的許可](#receiving-email-permissions-lambda)
+ [准許 SES 發佈至屬於不同 AWS 帳戶的 Amazon SNS 主題](#receiving-email-permissions-sns)

## 設定交付至 S3 儲存貯體動作的 IAM 角色許可
<a name="receiving-email-permissions-s3-iam-role"></a>

下列要點適用於此 IAM 角色：
+ 它只能用於 [傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)。
+ 如果想要寫入存在於[電子郵件接收](regions.md#region-receive-email)無法使用 SES 的區域中的 S3 儲存貯體，則必須使用它。

如果想要寫入 S3 儲存貯體，您可以為 IAM 角色提供存取 相關資源的許可[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)。您也需要授予 SES 許可，以擔任該角色透過 [IAM 信任政策執行動作，如下一節所述](#receiving-email-permissions-s3-iam-role-trust)。

此許可政策必須貼到 IAM 角色的內嵌政策編輯器中，請參閱[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)並遵循 **IAM 角色**項目中提供的步驟。（以下範例也包含選用許可，以防您想要使用 SNS 主題通知，或在 S3 動作中使用客戶受管金鑰。)

**注意**  
您可以選擇只允許 S3 儲存貯體政策中的 SES 服務，在不指定 IAM 角色的情況下設定 S3 動作，如下所示[授予 SES 寫入 S3 儲存貯體的許可](#receiving-email-permissions-s3)。這也適用於跨帳戶案例。
如果您為 S3 動作指定 IAM 角色，SES 會擔任 'PutObject' 操作的該角色，而此處指定的 IAM 許可將足以供相同的帳戶使用。不過，對於跨帳戶使用，您需要一個額外的儲存貯體政策，允許 IAM 角色在儲存貯體中「PutObject」。這是由授予跨帳戶儲存貯體許可的儲存貯體擁有者所指定，如[授予跨帳戶儲存貯體許可的儲存貯體擁有者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)中所述。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        },
        {
            "Sid": "SNSAccess",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{my-topic}}"
        },
        {
            "Sid": "KMSAccess",
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey*",
            "Resource": "arn:aws:kms:{{us-east-1}}::{{111122223333}}:key/{{key-id}}"
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 以您要寫入的 S3 儲存貯體名稱取代 {{amzn-s3-demo-bucket}}。
+ 將{{區域}}取代 AWS 區域 為您建立接收規則的 。
+ 將 {{111122223333}} 取代為您的 AWS 帳戶 ID。
+ 將 {{my-topic}} 取代為您要發佈通知的 SNS 主題名稱。
+ 以 KMS {{金鑰的 ID 取代 key-id}}。

### S3 動作 IAM 角色的信任政策
<a name="receiving-email-permissions-s3-iam-role-trust"></a>

下列信任政策應新增至 IAM 角色的*信任關係*中，以允許 SES 擔任該角色。

**注意**  
只有在您未使用[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)工作流程的 IAM 角色項目中提供的步驟從 SES 主控台建立 **IAM** 角色時，才需要手動新增此信任政策。*當您從主控台建立 IAM 角色時，系統會自動產生此信任政策，並套用到角色，讓您不需要此步驟。*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESAssume",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                  "AWS:SourceAccount":"{{111122223333}}",
                  "AWS:SourceArn": "arn:aws:ses:{{region}}:{{111122223333}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{receipt_rule_name}}"
                }
            }
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 將{{區域}}取代 AWS 區域 為您建立接收規則的 。
+ 將 {{111122223333}} 取代為您的 AWS 帳戶 ID。
+ 將 {{rule\_set\_name}} 替換為含有接收規則且該接收規則中含有傳送至 Amazon S3 儲存貯體動作的規則集名稱。
+ 將 {{receipt\_rule\_name}} 替換為含有傳送至 Amazon S3 儲存貯體動作的接收規則名稱。

## 授予 SES 寫入 S3 儲存貯體的許可
<a name="receiving-email-permissions-s3"></a>

當您將下列政策套用到 S3 儲存貯體時，只要該儲存貯體存在於可使用 SES [電子郵件接收](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)的區域，它就會授予 SES 許可，如果您想要寫入*電子郵件接收*區域以外的儲存貯體，請參閱 [設定交付至 S3 儲存貯體動作的 IAM 角色許可](#receiving-email-permissions-s3-iam-role)。如需建立將傳入電子郵件傳輸到 Amazon S3 的接收規則相關資訊，請參閱「[傳送至 S3 儲存貯體動作](receiving-email-action-s3.md)」。

如需 S3 儲存貯體原則的詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[使用儲存貯體政策和使用者政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowSESPuts",
      "Effect":"Allow",
      "Principal":{
        "Service":"ses.amazonaws.com"
      },
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
      "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"{{111122223333}}",
          "AWS:SourceArn": "arn:aws:ses:{{region}}:{{111122223333}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{receipt_rule_name}}"
        }
      }
    }
  ]
}
```

------

在上述範例政策中進行下列變更：
+ 以您要寫入的 S3 儲存貯體名稱取代 {{amzn-s3-demo-bucket}}。
+ 將{{區域}}取代為您建立接收規則 AWS 的區域。
+ 將 {{111122223333}} 取代為您的 AWS 帳戶 ID。
+ 將 {{rule\_set\_name}} 替換為含有接收規則且該接收規則中含有傳送至 Amazon S3 儲存貯體動作的規則集名稱。
+ 將 {{receipt\_rule\_name}} 替換為含有傳送至 Amazon S3 儲存貯體動作的接收規則名稱。

## 授予 SES 許可以使用您的 AWS KMS 金鑰
<a name="receiving-email-permissions-kms"></a>

為了讓 SES 加密您的電子郵件，它必須具有許可，才能使用您在設定接收規則時指定的 AWS KMS 金鑰。您可以使用帳戶中的預設 KMS 金鑰 (**aws/ses**)，或使用您建立的客戶受管金鑰。如果您使用預設 KMS 金鑰，則不需要執行任何其他步驟來授予 SES 使用它的許可。如果您使用客戶受管金鑰，您需要透過將陳述式新增至金鑰的政策來授予 SES 使用它的許可。

使用下列政策陳述式做為金鑰政策，允許 SES 在您的網域上收到電子郵件時使用您的客戶受管金鑰。

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"{{111122223333}}",
          "AWS:SourceArn": "arn:aws:ses:{{region}}:{{111122223333}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{receipt_rule_name}}"
        }
      }
}
```

在上述範例政策中進行下列變更：
+ 將{{區域}}取代為您建立接收規則 AWS 的區域。
+ 將 {{111122223333}} 取代為您的 AWS 帳戶 ID。
+ 將 {{rule\_set\_name}} 替換為含有已與電子郵件接收相關聯之接收規則的規則集名稱。
+ 將 {{receipt\_rule\_name}} 替換為已與電子郵件接收相關聯的接收規則名稱。

如果您使用 AWS KMS 將加密的訊息傳送至已啟用伺服器端加密的 S3 儲存貯體，則需要新增政策動作 `"kms:Decrypt"`。使用上述範例，將此動作新增到您的政策中，將顯示如下：

```
{
  "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", 
  "Effect": "Allow",
  "Principal": {
    "Service":"ses.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition":{
        "StringEquals":{
          "AWS:SourceAccount":"{{111122223333}}",
          "AWS:SourceArn": "arn:aws:ses:{{region}}:{{111122223333}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{receipt_rule_name}}"
        }
      }
}
```

如需將政策連接至 AWS KMS 金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[在 中使用金鑰政策 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 授予 SES 叫用 AWS Lambda 函數的許可
<a name="receiving-email-permissions-lambda"></a>

若要讓 SES 呼叫 AWS Lambda 函數，您可以在 SES 主控台中建立接收規則時選擇函數。當您這麼做時，SES 會自動將必要的許可新增至函數。

或者也可使用 AWS Lambda API 中的 `AddPermission` 作業來將政策連接至函數。下列 API 呼叫`AddPermission`提供 SES 叫用 Lambda 函數的許可。如需將政策連接至 Lambda 函數的詳細資訊，請參閱 *AWS Lambda 開發人員指南*中的 [AWS Lambda 許可](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)。

```
{
  "Action": "lambda:InvokeFunction",
  "Principal": "ses.amazonaws.com",
  "SourceAccount": "{{111122223333}}",
  "SourceArn": "arn:aws:ses:{{region}}:{{111122223333}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{receipt_rule_name}}",
  "StatementId": "GiveSESPermissionToInvokeFunction"
}
```

在上述範例政策中進行下列變更：
+ 將{{區域}}取代為您建立接收規則 AWS 的區域。
+ 將 {{111122223333}} 取代為您的 AWS 帳戶 ID。
+ 將 {{rule\_set\_name}} 取代為包含在其中建立 Lambda 函數之接收規則的規則集名稱。
+ 將 {{receipt\_rule\_name}} 取代為包含 Lambda 函數之接收規則的名稱。

## 准許 SES 發佈至屬於不同 AWS 帳戶的 Amazon SNS 主題
<a name="receiving-email-permissions-sns"></a>

若要將通知發佈至個別 AWS 帳戶中的主題，您必須將政策連接至 Amazon SNS 主題。SNS 主題所在區域必須與網域和接收規則集所在區域相同。

下列政策提供 SES 許可，以發佈至不同 AWS 帳戶中的 Amazon SNS 主題。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "SNS:Publish",
            "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{topic_name}}",
            "Condition": {
                "StringEquals": {
                "AWS:SourceAccount": "{{444455556666}}",
                "AWS:SourceArn": "arn:aws:ses:{{us-east-1}}:{{777788889999}}:receipt-rule-set/{{rule_set_name}}:receipt-rule/{{rule_name}}"
                }
            }
        }
    ]
}
```

------

在上述範例政策中進行下列變更：
+ 將 {{topic\_region}} 取代為建立 Amazon SNS 主題 AWS 區域 的 。
+ 將 {{sns\_topic\_account\_id}} 取代為擁有 Amazon SNS 主題的 AWS 帳戶 ID。
+ 將 {{topic\_name}} 取代為您想要發佈通知的 Amazon SNS 主題名稱。
+ 將 {{aws\_account\_id}} 取代為設為接收電子郵件的 AWS 帳戶 ID。
+ 將 {{receipt\_region}} 取代 AWS 區域 為您建立接收規則的 。
+ 將 {{rule\_set\_name}} 取代為包含您建立發佈至 Amazon SNS 主題動作的接收規則之規則集名稱。
+ 將 {{receipt\_rule\_name}} 取代為包含發佈至 Amazon SNS 主題動作的接收規則名稱。

如果您的 Amazon SNS 主題使用 AWS KMS 進行伺服器端加密，您必須將許可新增至 AWS KMS 金鑰政策。您可以將下列政策連接至 AWS KMS 金鑰政策來新增許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSESToUseKMSKey",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------