

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

# Amazon SES の保管中のデータ暗号化
<a name="encryption-rest"></a>

Amazon SES は、保管中のすべてのデータをデフォルトで暗号化します。デフォルトの暗号化は、データの保護に伴う運用のオーバーヘッドと複雑な作業の軽減につながります。暗号化を使用すると、厳格な暗号化コンプライアンスと規制要件を満たす Mail Manager アーカイブを作成することもできます。

SES は、次の暗号化オプションを提供しています。
+ **AWS 所有キー** – SES はデフォルトでこれらを使用します。 AWS 所有キーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するためのアクションの実施やプログラムの変更を行う必要はありません。詳細については、AWS Key Management Service デベロッパーガイドの「[AWS 所有キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。
+ **カスタマーマネージドキー** – SES は、お客様が作成、所有、管理するカスタマーマネージド対称キーの使用をサポートしています。お客様が暗号化を完全に管理するため、以下のとおりのタスクを実行できます。
  + キーポリシーの策定と維持
  + IAM ポリシーとグラントの策定と維持
  + キーポリシーの有効化と無効化
  + キー暗号化マテリアルのローテーション
  +  タグを追加する
  + キーエイリアスの作成
  + 削除のためのキースケジューリング

  独自のキーを使用するには、SES リソースを作成する際にカスタマーマネージドキーを選択します。

  詳細については、「[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」の「カスタマーマネージドキー」を参照してください。

**注記**  
SES は AWS 、所有キーを使用した保管時の暗号化を無料で自動的に有効にします。  
ただし、カスタマーマネージドキーの使用には AWS KMS 料金が適用されます。料金の詳細については、「[AWS Key Management Service 料金](https://aws.amazon.com/kms/pricing/)」を参照してください。

## カスタマーマネージドキーを作成する
<a name="create-key"></a>

 対称カスタマーマネージドキーは AWS マネジメントコンソール、 または AWS KMS APIs を使用して作成できます。

**対称カスタマーマネージドキーを作成するには**

「AWS Key Management Service デベロッパーガイド」の「[対称暗号化 KMS キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」の手順に従ってください。**

**注記**  
アーカイブするには、キーが以下の要件を満たしている必要があります。  
KMS キーは対称である必要があります。
キーマテリアルのオリジンは `AWS_KMS` である必要があります。
キーの使用状況は、`ENCRYPT_DECRYPT` である必要があります。

**キーポリシー**

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。カスタマーマネージドキーを作成する際に、キーポリシーを指定することができます。詳細については、AWS Key Management Service デベロッパーガイド の「[カスタマーマネージドキーへのアクセスの管理](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)」を参照してください。

カスタマーマネージドキーを Mail Manager アーカイブで使用するには、キーポリシーで以下の API オペレーションを許可する必要があります。
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) – SES がキーを検証できるように、カスタマーマネージドキーの詳細を提供します。
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) – SES が保管中のデータを暗号化するためのデータキーを生成できるようにします。
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – SES が保存されたデータを API クライアントに返す前に復号化できるようにします。

一般的なキーポリシーの例は、以下のとおりです。

```
{
            "Sid": "Allow SES to encrypt/decrypt",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
```

詳細については、「AWS Key Management Service デベロッパーガイド」の「[ポリシーでのアクセス許可の指定](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements)」を参照してください。**

トラブルシューティングの詳細については、「AWS Key Management Service デベロッパーガイド」の「[キーアクセスのトラブルシューティング](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)」を参照してください。**

## Mail Manager のカスタマーマネージドキーの指定
<a name="enable-custom-encryption"></a>

 AWS 所有キーを使用する代わりに、カスタマーマネージドキーを指定できます。相互 TLS (mTLS) 認証を使用してアーカイブを作成したり、イングレスエンドポイントを設定したりする場合は、**KMS キー ARN** を入力してデータキーを指定できます。アーカイブの場合、Mail Manager は キーを使用してアーカイブ内のすべての顧客データを暗号化します。mTLS イングレスエンドポイントの場合、Mail Manager は キーを使用して保管中のトラストストアコンテンツを暗号化します。
+ **KMS キー ARN** – AWS KMS カスタマーマネージドキーのキー[識別子](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)。キー ID、キー ARN、エイリアス名、またはエイリアス ARN を入力します。

## Amazon SES 暗号化コンテキスト
<a name="location-encryption-context"></a>

[暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)は、データに関する追加のコンテキスト情報が含まれたキーバリューペアのオプションのセットです。

AWS KMS は、追加の認証済みデータとして暗号化コンテキストを使用して、認証済み暗号化をサポートします。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS バインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。

**注記**  
Amazon SES は、アーカイブ作成の暗号化コンテキストをサポートしていません。代わりに、IAM または KMS ポリシーを使用します。ポリシーの例については、このセクションの後半の「[アーカイブ作成ポリシー](#archive-creation-policies)」を参照してください。

**Amazon SES 暗号化コンテキスト**

SES はすべての暗号化オペレーションで同じ AWS KMS 暗号化コンテキストを使用します。キーは で、`aws:ses:arn`値はリソース [Amazon リソースネーム](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (ARN) です。

**Example**  

```
"encryptionContext": {
    "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
}
```

**モニタリングに暗号化コンテキストを使用する**

対称カスタマーマネージドキーを使用して SES リソースを暗号化する場合、監査レコードとログで暗号化コンテキストを使用し、カスタマーマネージドキーが使用されている方法を特定することもできます。暗号化コンテキストは、 [AWS CloudTrail または Amazon CloudWatch Logs によって生成されたログ](#example-custom-encryption)にも表示されます。

**暗号化コンテキストを使用してカスタマーマネージドキーへのアクセスを制御する**

対称カスタマーマネージドキー (CMK) へのアクセスを制御するための `conditions` として、キーポリシーと IAM ポリシー内の暗号化コンテキストを使用することができます。グラントに暗号化コンテキストの制約を使用することもできます。

SES は、許可で暗号化コンテキスト制約を使用して、アカウントまたはリージョン内のカスタマーマネージドキーへのアクセスを制御します。グラントの制約では、指定された暗号化コンテキストの使用をグラントが許可するオペレーションが必要です。

**Example**  
次に、特定の暗号化コンテキストのカスタマーマネージドキーへのアクセスを付与するキーポリシーステートメントの例を示します。このポリシーステートメントの条件では、暗号化コンテキストを指定する暗号化コンテキスト制約がグラントに必要です。  

```
{
    "Sid": "Enable DescribeKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
     },
     "Action": "kms:DescribeKey",
     "Resource": "*"
},
{
     "Sid": "Enable CreateGrant",
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole"
     },
     "Action": "kms:CreateGrant",
     "Resource": "*",
     "Condition": {
         "StringEquals": {
             "kms:EncryptionContext:aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
          }
     }
}
```

## アーカイブ作成ポリシー
<a name="archive-creation-policies"></a>

次のポリシー例は、アーカイブ作成を有効にする方法を説明しています。このポリシーはすべてのアセットで機能します。

**IAM ポリシー**

```
{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ses:CreateArchive",
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "ses.us-east-1.amazonaws.com",
                    "kms:CallerAccount": "012345678910"
                }
            }
        }
```

**AWS KMS ポリシー**

```
{
            "Sid": "Allow SES to encrypt/decrypt",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
```

## イングレスエンドポイント mTLS ポリシー
<a name="ingress-endpoint-mtls-policies"></a>

次のポリシー例では、カスタマーマネージドキーを使用して、Mail Manager イングレスエンドポイントでの相互 TLS (mTLS) 認証の信頼ストアコンテンツを暗号化できます。

サンプルポリシーを特定のイングレスエンドポイントにスコープするには、 条件のワイルドカードを正確なリソース ARN (例: ) に置き換えます`arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/inp-ab1c2defgh3ij4klmno5pq6rs`。

**IAM ポリシー**

```
{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::111122223333:role/rolename"
    },
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
      "StringEquals": {
        "kms:ViaService": "ses.us-east-1.amazonaws.com"
      },
      "StringLike": {
        "kms:EncryptionContext:aws:ses:arn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  },
  {
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::111122223333:role/rolename"
    },
    "Action": [
      "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringEquals": {
        "kms:ViaService": "ses.us-east-1.amazonaws.com"
      }
    }
  }
```

**AWS KMS ポリシー**

```
{
    "Effect": "Allow",
    "Principal": {
      "Service": "ses.amazonaws.com"
    },
    "Action": [
      "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ],
        "kms:EncryptionContext:aws:ses:arn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  },
  {
    "Effect": "Allow",
    "Principal": {
      "Service": "ses.amazonaws.com"
    },
    "Action": [
      "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:ses:us-east-1:111122223333:mailmanager-ingress-point/*"
        ]
      }
    }
  }
```

## Amazon SES の暗号キーのモニタリング
<a name="example-custom-encryption"></a>

Amazon SES リソースで AWS KMS カスタマーマネージドキーを使用する場合は、 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)または [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用して、SES が送信するリクエストを追跡できます AWS KMS。

次の例は`GenerateDataKey`、カスタマーマネージドキーによって暗号化されたデータにアクセス`DescribeKey`するために SES によって呼び出される KMS オペレーションをモニタリングするための 、`Decrypt`、および の AWS CloudTrail イベントです。

------
#### [ GenerateDataKey ]

リソースの AWS KMS カスタマーマネージドキーを有効にすると、SES は一意のテーブルキーを作成します。リソースの AWS KMSカスタマーマネージドキー AWS KMS を指定する`GenerateDataKey`リクエストを に送信します。

Mail Manager アーカイブリソースの AWS KMS カスタマーマネージドキーを有効にすると、保管中のアーカイブデータを暗号化`GenerateDataKey`するときに が使用されます。

次に、`GenerateDataKey` オペレーションを記録するイベントの例を示します。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:07:02Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "encryptionContext": {
            "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "57f5dbee-16da-413e-979f-2c4c6663475e"
}
```

------
#### [ Decrypt ]

ユーザーが暗号化されたリソースにアクセスすると、SES は `Decrypt` オペレーションを呼び出し、保存されている暗号化されたデータキーを使用して暗号化済みのデータにアクセスします。

次に、`Decrypt` オペレーションを記録するイベントの例を示します。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:10:51Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "encryptionContext": {
            "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID"
        },
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333",
    "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088"
}
```

------
#### [ DescribeKey ]

SES は `DescribeKey` オペレーションを使用して、リソースに関連付けられている AWS KMS カスタマーマネージドキーがアカウントとリージョンに存在するかを確認します。

以下のイベント例では、`DescribeKey` オペレーションを記録しています。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-04-22T17:02:00Z"
            }
        },
        "invokedBy": "ses.amazonaws.com"
    },
    "eventTime": "2021-04-22T17:07:02Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "172.12.34.56",
    "userAgent": "ExampleDesktop/1.0 (V1; OS)",
    "requestParameters": {
        "keyId": "00dd0db0-0000-0000-ac00-b0c000SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "111122223333"
}
```

------

## 詳細情報
<a name="Learn-more-data-at-rest-encryption"></a>

次のリソースは、保管時のデータ暗号化についての詳細を説明しています。
+ [AWS Key Management Service 基本概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)の詳細については、「*AWS Key Management Service デベロッパーガイド*」を参照してください。
+ 詳細については、「AWS Key Management Service デベロッパーガイド」の「[AWS Key Management Serviceのセキュリティのベストプラクティス](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)」を参照してください。**