Amazon SES の保管中のデータ暗号化 - Amazon Simple Email Service

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

Amazon SES の保管中のデータ暗号化

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

SES は、次の暗号化オプションを提供しています。

  • AWS 所有キー – SES はデフォルトでこれらを使用します。AWS が所有するキーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するために何らかの措置を講じたり、プログラムを変更したりする必要はありません。詳細については、AWS Key Management Service デベロッパーガイドの「AWS 所有キー」を参照してください。

  • カスタマーマネージドキー – SES は、お客様が作成、所有、管理するカスタマーマネージド対称キーの使用をサポートしています。お客様が暗号化を完全に管理するため、以下のとおりのタスクを実行できます。

    • キーポリシーの策定と維持

    • IAM ポリシーとグラントの策定と維持

    • キーポリシーの有効化と無効化

    • キー暗号化マテリアルのローテーション

    • タグの追加

    • キーエイリアスの作成

    • キー削除のスケジュール設定

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

    詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」を参照してください。

注記

SES は、AWS 所有キーを使用して、保管中の暗号化を無料で自動的に有効にします。

ただし、カスタマーマネージドキーの使用には AWS KMS 料金が適用されます。料金の詳細については、「AWS Key Management Service 料金」を参照してください。

カスタマーマネージドキーを作成する

対称カスタマーマネージドキーを作成するには、AWS Management Console または AWS KMS API を使用します。

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

「AWS Key Management Service デベロッパーガイド」の「対称暗号化 KMS キーの作成」の手順に従ってください。

注記

アーカイブするには、キーが以下の要件を満たしている必要があります。

  • KMS キーは対称である必要があります。

  • キーマテリアルのオリジンは AWS_KMS である必要があります。

  • キーの使用状況は、ENCRYPT_DECRYPT である必要があります。

キーポリシー

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。カスタマーマネージドキーを作成する際に、キーポリシーを指定することができます。詳細については、 AWS Key Management Service デベロッパーガイド の「カスタマーマネージドキーへのアクセスの管理」を参照してください。

カスタマーマネージドキーを Mail Manager アーカイブで使用するには、キーポリシーで以下の API オペレーションを許可する必要があります。

  • kms:DescribeKey – SES がキーを検証できるように、カスタマーマネージドキーの詳細を提供します。

  • kms:GenerateDataKey – SES が保管中のデータを暗号化するためのデータキーを生成できるようにします。

  • kms:Decrypt – 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 デベロッパーガイド」の「ポリシーでのアクセス許可の指定」を参照してください。

トラブルシューティングの詳細については、「AWS Key Management Service デベロッパーガイド」の「キーアクセスのトラブルシューティング」を参照してください。

Mail Manager アーカイブ用のカスタマーマネージドキーの指定

AWS 所有キーを使用する代わりに、カスタマーマネージドキーを指定できます。アーカイブを作成する際に、KMS キー ARN を入力してデータキーを指定できます。この ARN は、Mail Manager アーカイブがアーカイブ内のすべての顧客データの暗号化に使用するものです。

  • KMS key ARN – AWS KMS カスタマーマネージドキーのキー識別子です。キー ID、キー ARN、エイリアス名、またはエイリアス ARN を入力します。

Amazon SES 暗号化コンテキスト

暗号化コンテキストは、データに関する追加のコンテキスト情報が含まれたキーバリューペアのオプションのセットです。

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

注記

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

Amazon SES 暗号化コンテキスト

SES は、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキストを使用します。キーは aws:ses:arn で、値はリソースの Amazon リソースネーム (ARN) です。

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

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

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

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

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

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

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

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

アーカイブ作成ポリシー

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

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": "*" },

Amazon SES の暗号キーのモニタリング

Amazon SES リソースで AWS KMS カスタマーマネージドキーを使用する場合、SES が AWS KMS に送信するリクエストの追跡に、AWS CloudTrail または Amazon CloudWatch Logs を使用できます。

次の例は、カスタマーマネージドキーが暗号化したデータにアクセスするために SES が呼び出す KMS オペレーションをモニタリングするための GenerateDataKeyDecryptDescribeKey の 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" }

詳細はこちら

次のリソースは、保管時のデータ暗号化についての詳細を説明しています。