

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SES に対する E メール受信に関するアクセス許可の付与
<a name="receiving-email-permissions"></a>

Amazon Simple Storage Service (Amazon S3) バケットへの E メールの送信や AWS Lambda 関数の呼び出しなど、SES で E メールを受信したときに実行できるタスクには、特別なアクセス許可が必要です。このセクションには、いくつかの一般的なユースケースのサンプルポリシーを含みます。

**Topics**
+ [S3 バケットへの配信アクションの IAM ロールのアクセス許可の設定](#receiving-email-permissions-s3-iam-role)
+ [S3 バケットへの書き込みアクセス許可を SES に付与する](#receiving-email-permissions-s3)
+ [SES に AWS KMS キーを使用するアクセス許可を付与する](#receiving-email-permissions-kms)
+ [SES に AWS Lambda 関数を呼び出すアクセス許可を付与する](#receiving-email-permissions-lambda)
+ [別の AWS アカウントに属する Amazon SNS トピックに発行するアクセス許可を SES に付与する](#receiving-email-permissions-sns)

## S3 バケットへの配信アクションの IAM ロールのアクセス許可の設定
<a name="receiving-email-permissions-s3-iam-role"></a>

この IAM ロールには、以下の点が適用されます。
+ これは、[S3 バケットアクションへの配信](receiving-email-action-s3.md) 用にのみ使用可能です。
+ SES [E メールの受信](regions.md#region-receive-email) が利用できないリージョンに配置されている S3 バケットに書き込む場合は、これを使用する必要があります。

S3 バケットに書き込みを行う場合は、[S3 バケットアクションへの配信](receiving-email-action-s3.md) の関連リソースにアクセスするアクセス許可を IAM ロールに付与できます。また、[次のセクション](#receiving-email-permissions-s3-iam-role-trust)で説明するとおり、IAM 信頼ポリシーを介してアクションを実行するには、そのロールを引き受けるアクセス許可も SES に付与する必要があります。

このアクセス許可ポリシーは、IAM ロールのインラインポリシーエディタに貼り付ける必要があります。「[S3 バケットアクションへの配信](receiving-email-action-s3.md)」を参照して、**IAM role** 項目に記載されているステップに従ってください。(次の例には、SNS トピック通知や S3 アクションのカスタマーマネージドキーを使用する場合のオプションのアクセス許可も含まれています)。

**注記**  
「[S3 バケットへの書き込みアクセス許可を SES に付与する](#receiving-email-permissions-s3)」に示すように、S3 バケットポリシーで SES サービスのみを許可することで、IAM ロールを指定せずに S3 アクションを設定するオプションがあります。これは、クロスアカウントシナリオでも機能します。
S3 アクションに IAM ロールを指定すると、SES はそのロールを PutObject オペレーションに対して引き受けます。ここで指定した IAM アクセス許可は、同じアカウントの使用に十分なものです。ただし、クロスアカウントを使用する場合は、バケット内の PutObject に対して IAM ロールを許可する追加のバケットポリシーが必要です。これは、「[バケット所有者がクロスアカウントバケットのアクセス許可を付与する](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"
        }
    ]
}
```

------

上のポリシー例に、以下の変更を加えます。
+ *amzn-s3-demo-bucket* は、書き込み先の S3 バケット名に置き換えます。
+ *region* を、受信ルールを作成した AWS リージョン に置き換えます。
+ *111122223333* を自分の AWS アカウント ID に置き換えます。
+ *my-topic* は、通知の発行先の SNS トピック名に置き換えます。
+ *key-id* は、KMS キーの ID に置き換えます。

### S3 アクションの IAM ロールの信頼ポリシー
<a name="receiving-email-permissions-s3-iam-role-trust"></a>

このロールを SES が引き受けることができるように、次の信頼ポリシーを IAM ロールの*信頼関係*に追加する必要があります。

**注記**  
この信頼ポリシーを手動で追加する必要があるのは、[S3 バケットアクションへの配信](receiving-email-action-s3.md) ワークフローの **IAM role** 項目で指定されたステップを使用して 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"
                }
            }
        }
    ]
}
```

------

上のポリシー例に、以下の変更を加えます。
+ *region* を、受信ルールを作成した AWS リージョン に置き換えます。
+ *111122223333* を自分の AWS アカウント ID に置き換えます。
+ Amazon S3 バケットアクションへの配信を含むレシピルールを含むルールセットの名前で *rule\$1set\$1name* の部分を置き換えます。
+ Amazon S3 バケットアクションへの配信を含むレシピルールの名前で *receipt\$1rule\$1name* の部分を置き換えます。

## S3 バケットへの書き込みアクセス許可を SES に付与する
<a name="receiving-email-permissions-s3"></a>

次のポリシーを S3 バケットに適用すると、SES [E メール受信](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_inbound_endpoints)が利用可能なリージョンに存在する限り、このバケットへの書き込みアクセス許可が SES に付与されます。*E メール受信*リージョン外のバケットに書き込む場合は、「[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"
        }
      }
    }
  ]
}
```

------

上のポリシー例に、以下の変更を加えます。
+ *amzn-s3-demo-bucket* は、書き込み先の S3 バケット名に置き換えます。
+ *region* を、受信ルールを作成した AWS リージョンに置き換えます。
+ *111122223333* を自分の AWS アカウント ID に置き換えます。
+ Amazon S3 バケットアクションへの配信を含むレシピルールを含むルールセットの名前で *rule\$1set\$1name* の部分を置き換えます。
+ Amazon S3 バケットアクションへの配信を含むレシピルールの名前で *receipt\$1rule\$1name* の部分を置き換えます。

## SES に AWS KMS キーを使用するアクセス許可を付与する
<a name="receiving-email-permissions-kms"></a>

SES で E メールを暗号化するためには、受信ルールの設定時に指定した AWS KMS キーを使用するためのアクセス許可を SES に付与する必要があります。ご使用のアカウントのデフォルトKMSキー (**aws/ses** ) を使用するか、ご自身で作成するカスタマー管理のキーを使用することができます。デフォルトの KMS キーを使用する場合、キーの使用についての SES へのアクセス許可の付与に関する追加のステップを実行する必要はありません。カスタマーマネージドキーを使用する場合は、キーのポリシーにステートメントを追加して、キー使用のアクセス許可を SES に付与する必要があります。

SES がドメインで E メールを受信する際にカスタマーマネージドキーを使用できるように、次のポリシーステートメントをキーポリシーとして使用します。

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

上のポリシー例に、以下の変更を加えます。
+ *region* を、受信ルールを作成した AWS リージョンに置き換えます。
+ *111122223333* を自分の AWS アカウント ID に置き換えます。
+ E メール受信に関連付けたレシピルールを含むルールセットの名前で *rule\$1set\$1name* の部分を置き換えます。
+ E メール受信に関連付けたレシピルールの名前で *rule\$1set\$1name* の部分を置き換えます。

を使用してサーバー側の暗号化が有効になっている S3 バケット AWS KMS に暗号化メッセージを送信する場合は、ポリシーアクション を追加する必要があります`"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 は自動的に必要なアクセス許可を関数に追加します。

または、`AddPermission` API の AWS Lambda オペレーションを使用して、関数へのポリシーをアタッチします。次の `AddPermission` API コールでは、Lambda 関数を呼び出すアクセス許可を SES に付与しています。Lambda 関数へのポリシーの添付に関する詳細については、[AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)の*「AWS Lambda のアクセス許可」*を参照ください。

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

上のポリシー例に、以下の変更を加えます。
+ *region* を、受信ルールを作成した AWS リージョンに置き換えます。
+ *111122223333* を自分の AWS アカウント ID に置き換えます。
+ *rule\$1set\$1name* は、Lambda 関数を作成した受信ルールを含むルールセットの名前に置き換えます。
+ *receipt\$1rule\$1name* は、Lambda 関数を含む受信ルールの名前に置き換えます。

## 別の AWS アカウントに属する Amazon SNS トピックに発行するアクセス許可を SES に付与する
<a name="receiving-email-permissions-sns"></a>

別の AWS アカウントのトピックに通知を発行するには、Amazon SNS トピックにポリシーをアタッチする必要があります。SNS トピックは、ドメインおよび受信ルールセットと、同じリージョンに存在する必要があります。

次のポリシーは、別の AWS アカウントの Amazon SNS トピックに発行するアクセス許可を SES に付与します。

------
#### [ 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\$1region* を、Amazon SNS トピック AWS リージョン が作成された に置き換えます。
+ *sns\$1topic\$1account\$1id* は、Amazon SNS トピックを所有する AWS アカウント の ID に置き換えます。
+ *topic\$1name* は、通知の発行先となる Amazon SNS トピックの名前に置き換えます。
+ *aws\$1account\$1id* は、E メールを受信するように設定した AWS アカウント のID に置き換えます。
+ *receipt\$1region* を、受信ルールを作成した AWS リージョン に置き換えます。
+ *rule\$1set\$1name* は、Amazon SNS トピックへの発行アクションを作成した受信ルールを含む、ルールセットの名前に置き換えます。
+ *receipt\$1rule\$1name* は、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": "*"
        }
    ]
}
```

------