Amazon WorkMail が AWS KMS を使用する方法 - AWS Key Management Service

Amazon WorkMail が AWS KMS を使用する方法

このトピックでは、Amazon WorkMail が AWS KMS を使用して E メールメッセージを暗号化する方法について説明します。

Amazon WorkMail の概要

Amazon WorkMail は、既存のデスクトップおよびモバイルの E メールクライアントをサポートする、安全で管理されたビジネス向け E メールおよびカレンダーサービスです。Amazon WorkMail 組織を作成し、所有している 1 つ以上のメールドメインをその組織に割り当てることができます。その後、組織内の E メールユーザーとディストリビューショングループのメールボックスを作成できます。

Amazon WorkMail は、メッセージがディスクに書き込まれる前に、すべての Amazon WorkMail 組織のメールボックス内のすべてのメッセージを透過的に暗号化し、ユーザーがアクセスしたときにメッセージを透過的に復号化します。暗号化を無効にするオプションはありません。メッセージを保護する暗号化キーを保護するために、Amazon WorkMail は AWS Key Management Service (AWS KMS) と統合されています。

Amazon WorkMail には、ユーザーが 署名付きまたは暗号化された E メールを送信できるようにするオプションもあります。この暗号化機能は AWS KMS を使用していません。

Amazon WorkMail の暗号化

Amazon WorkMail では、各組織には、組織内のユーザーごとに 1 つずつ、複数のメールボックスを含めることができます。E メール、カレンダーの項目などのすべてのメッセージはユーザーのメールボックスに保存されます。

Amazon WorkMail 組織内のメールボックスの内容を保護するために、Amazon WorkMail はすべてのメールボックスメッセージをディスクに書き込む前に暗号化します。お客様から提供された情報がプレーンテキストで保存されることはありません。

各メッセージは、一意のデータ暗号化キーで暗号化されます。メッセージキーは、そのメールボックスでのみ使用される一意の暗号化キーであるメールボックスキーで保護されています。メールボックスキーは、組織の AWS KMS key で暗号化されるため、AWS KMS を暗号化されないままにしません。次の図表は、AWS KMS における、暗号化されたメッセージ、暗号化されたメッセージキー、暗号化されたメールボックスキー、組織の KMS キーの関係を示しています。


        Amazon WorkMail メールボックスの暗号化

組織の KMS キー

Amazon WorkMail 組織を作成する際、組織の AWS KMS key を選択できます。この KMS キーはその組織内のすべてのメールボックスキーを保護します。

Quick Setup 手順を使用して組織を作成する場合、Amazon WorkMail は AWS アカウント で Amazon WorkMail (aws/workmail) 用の AWS マネージドキー を使用します。Standard Setup を使用する場合は、Amazon WorkMail 用の AWS マネージドキー、または所有および管理するカスタマーマネージドキーを選択できます。各組織で同じ、または異なる KMS キーを選択できますが、選択した KMS キーを変更することはできません。

重要

Amazon WorkMail は、対称暗号化 KMS キーのみをサポートします。非対称 KMS キーを使用して Amazon WorkMail のデータを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、非対称 KMS キーの識別 を参照してください。

組織の KMS キーを検索するには、AWS KMS への呼び出しを記録する AWS CloudTrail ログエントリを使用します。

各メールボックスの一意の暗号化キー

新しいメールボックスを作成すると、Amazon WorkMail は AWS KMS の外部で、メールボックスの一意の 256 ビット Advanced Encryption Standard (AES) 対称暗号化 キーを、メールボックスキーとして生成します。Amazon WorkMail は、メールボックスキーを使用して、メールボックス内の各メッセージの暗号化キーを保護します。

メールボックスキーを保護するために、Amazon WorkMail は AWS KMS を呼び出し、組織の KMS キーでメールボックスキーを暗号化します。その後、メールボックスのメタデータに暗号化されたメールボックスキーを保存します。

注記

Amazon WorkMail は、対称メールボックス暗号化キーを使用してメッセージキーを保護します。以前は、Amazon WorkMail は各メールボックスを非対称キーペアで保護していました。パブリックキーを使用して各メッセージキーを暗号化し、プライベートキーで復号していました。プライベートメールボックスキーは組織の KMS キーで保護されていました。既存のメールボックスは今も非対称メールボックスキーペアを使用している場合があります。この変更により、メールボックスやそのメッセージのセキュリティに影響が生じることはありません。

各メッセージの一意の暗号化キー

メールボックスにメッセージが追加されると、Amazon WorkMail は AWS KMS の外部で、メッセージに対して一意の 256 ビット AES 対称暗号化キーを生成します。このメッセージキーを使用してメッセージを暗号化します。Amazon WorkMail は、メールボックスキーの下にメッセージキーを暗号化し、暗号化されたメッセージキーをメッセージとともに保存します。次に、組織の KMS キーでメールボックスキーを暗号化します。

新しいメールボックスの作成

Amazon WorkMail は新しいメールボックスを作成するとき、次のプロセスを使用して、暗号化されたメッセージを保持するメールボックスを準備します。

  • Amazon WorkMail は AWS KMS の外部で、メールボックスに対して一意の 256 ビット AES 対称暗号化キーを生成します。

  • Amazon WorkMail は、AWS KMS Encrypt オペレーションを呼び出します。また、メールボックスキーおよび組織の AWS KMS key の識別子を渡します。AWS KMS は KMS キーで暗号化されたメールボックスキーの暗号化テキストを返します。

  • Amazon WorkMail は、暗号化されたメールボックスキーと、メールボックスのメタデータを保存します。

メールボックスメッセージの暗号化

メッセージを暗号化するために、Amazon WorkMail は次のプロセスを使用します。

  1. Amazon WorkMail は、メッセージに対して一意の 256 ビット AES 対称キーを生成します。プレーンテキストのメッセージキーと Advanced Encryption Standard (AES) アルゴリズムを使用して、AWS KMS の外部でメッセージを暗号化します。

  2. メールボックスキーの下でメッセージキーを保護するために、Amazon WorkMail はメールボックスキーを復号化する必要があります。メールボックスキーは常に暗号化された形式で保存されます。

    Amazon WorkMail は、AWS KMS Decrypt オペレーションを呼び出し、暗号化されたメールボックスキーで渡します。AWS KMS は組織の KMS キーを使用してメールボックスキーを復号し、Amazon WorkMail にプレーンテキストのメールボックスキーを返します。

  3. Amazon WorkMail は、プレーンテキストのメールボックスキーと Advanced Encryption Standard (AES) アルゴリズムを使用して、AWS KMS の外部でメッセージキーを暗号化します。

  4. Amazon WorkMail は、暗号化されたメッセージのメタデータに暗号化されたメッセージキーを保存し、復号化できるようにします。

メールボックスメッセージの復号

メッセージを復号化するために、Amazon WorkMail は次のプロセスを使用します。

  1. Amazon WorkMail は、AWS KMS Decrypt オペレーションを呼び出し、暗号化されたメールボックスキーで渡します。AWS KMS は組織の KMS キーを使用してメールボックスキーを復号し、Amazon WorkMail にプレーンテキストのメールボックスキーを返します。

  2. Amazon WorkMail は、プレーンテキストのメールボックスキーと Advanced Encryption Standard (AES) アルゴリズムを使用して、AWS KMS の外部で暗号化されたメッセージキーを復号します。

  3. Amazon WorkMail は、プレーンテキストのメッセージキーを使用して、暗号化されたメッセージを復号化します。

メールボックスキーのキャッシュ

パフォーマンスを改善し、AWS KMS への呼び出しを最小限に抑えるために、Amazon WorkMail は、各クライアントの各プレーンテキストのメールボックスキーを最大 1 分間ローカルにキャッシュします。キャッシュ期間の終了時に、メールボックスキーは削除されます。キャッシュ期間中にそのクライアントのメールボックスキーが必要な場合、Amazon WorkMail では AWS KMS を呼び出す代わりに、キャッシュからキーを取得できます。メールボックスキーはキャッシュで保護されており、プレーンテキストでディスクに書き込まれることはありません。

KMS キーの使用を許可する

Amazon WorkMail は、暗号化オペレーションで AWS KMS key を使用する際、メールボックス管理者の代理として機能します。

ユーザーに代わってシークレットに AWS KMS key を使用するには、管理者に次のアクセス許可が必要です。IAM ポリシーまたはキーポリシーで、これらの必要なアクセス許可を指定できます。

  • kms:Encrypt

  • kms:Decrypt

  • kms:CreateGrant

Amazon WorkMail で発生するリクエストにのみ KMS キーが使用されるようにするには、kms:ViaService 条件キーを workmail.<region>.amazonaws.com 値で使用します。

また、暗号化オペレーションに KMS キーを使用する条件として、暗号化コンテキストでキーまたは値を使用することもできます。例えば、IAM またはキーポリシードキュメントで文字列条件演算子を使用したり、許可で許可制約を使用したりできます。

キーポリシー (AWS マネージドキー 用)

Amazon WorkMail の AWS マネージドキー のキーポリシーでは、Amazon WorkMail がユーザーに代わってリクエストを行った場合にのみ、指定されたオペレーションに KMS キーを使用する許可がユーザーに付与されます。このキーポリシーでは、ユーザーが KMS キーを直接使用することは許可されません。

このキーポリシーは、すべての AWS マネージドキー のポリシーと同様に、サービスによって確立されます。キーポリシーは変更できませんが、いつでも表示できます。詳細については、「キーポリシーの表示」を参照してください。

このキーポリシーのポリシーステートメントには次の効果があります。

  • リクエストがユーザーの Amazon WorkMail から送信された場合にのみ、アカウントとリージョンのユーザーが暗号化オペレーションに KMS キーを使用して、権限を作成することを許可します。kms:ViaService 条件キーで、この制限を適用します。

  • KMS キープロパティを表示し、権限を取り消すことをユーザーに許可する IAM ポリシーを AWS アカウント が作成できるようにします。

以下は、Amazon WorkMail のサンプル AWS マネージドキー のキーポリシーです。

{ "Version" : "2012-10-17", "Id" : "auto-workmail-1", "Statement" : [ { "Sid" : "Allow access through WorkMail for all principals in the account that are authorized to use WorkMail", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Decrypt", "kms:CreateGrant", "kms:ReEncrypt*", "kms:DescribeKey", "kms:Encrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "workmail.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:RevokeGrant" ], "Resource" : "*" } ] }

Amazon WorkMail の認証に許可を使用する

Amazon WorkMail はキーポリシーに加えて、権限を使用して各組織の KMS キーにアクセス許可を追加します。アカウントの KMS キーの権限を表示するには、ListGrants オペレーションを使用します。

Amazon WorkMail は権限を使用して、組織の KMS キーに次のアクセス許可を追加します。

  • Amazon WorkMail がメールボックスキーを暗号化することを kms:Encrypt 許可する権限を追加します。

  • Amazon WorkMail に、KMS キーを使用してメールボックスキーを復号できる kms:Decrypt 許可を追加します。Amazon WorkMail では、メールボックスメッセージを読み取るリクエストは、メッセージを読み取っているユーザーのセキュリティコンテキストを使用するため、許可でこのアクセス許可が必要です。リクエストは AWS アカウント の認証情報を使用しません。Amazon WorkMail は、組織の KMS キー選択時にこの権限を作成します。

許可を作成するために、Amazon WorkMail は、組織を作成したユーザーの代わりに CreateGrant を呼び出します。権限付与を作成するアクセス許可はキーポリシーから付与されます。このポリシーにより、Amazon WorkMail が認可されたユーザーの代わりにリクエストを行う際に、アカウントユーザーが組織の KMS キーで CreateGrant を呼び出すことができます。

キーポリシーはアカウントルートが AWS マネージドキー で権限を取り消すことも許可します。ただし、許可を取り消すと、Amazon WorkMail はメールボックスの暗号化されたデータを復号化できません。

Amazon WorkMail 暗号化コンテキスト

暗号化コンテキストは、任意のシークレットデータを含まない、一連のキーと値のペアです。データを暗号化するリクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化されたデータに暗号化してバインドします。データを復号化するには、同じ暗号化コンテキストに渡す必要があります。

Amazon WorkMail は、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキスト形式を使用します。暗号化コンテキストを使用して、AWS CloudTrail などの監査レコードやログで、暗号化オペレーションを確認できます。また、ポリシーと許可で認可の条件として確認することもできます。

AWS KMS への Encrypt および Decrypt リクエストで、Amazon WorkMail は、キーが aws:workmail:arn、値が組織の Amazon リソースネーム (ARN) である暗号化コンテキストを使用します。

"aws:workmail:arn":"arn:aws:workmail:region:account ID:organization/organization ID"

例えば、次の暗号化コンテキストには、米国東部 (オハイオ) (us-east-2) リージョンの組織 ARN の例が含まれています。

"aws:workmail:arn":"arn:aws:workmail:us-east-2:111122223333:organization/m-68755160c4cb4e29a2b2f8fb58f359d7"

Amazon WorkMail と AWS KMS の対話をモニタリングする

AWS CloudTrail および Amazon CloudWatch Logs を使用して、Amazon WorkMail がユーザーに代わって AWS KMS に送信するリクエストを追跡できます。

Encrypt

新しいメールボックスを作成すると、Amazon WorkMail はメールボックスキーを生成し、AWS KMS を呼び出してメールボックスキーを暗号化します。Amazon WorkMail はプレーンテキストのメールボックスキーと Amazon WorkMail 組織の KMS キーの識別子を使用して、Encrypt リクエストを AWS KMS に送信します。

Encrypt オペレーションを記録するイベントは、次のようなサンプルイベントになります。ユーザーは Amazon WorkMail サービスです。パラメータには、KMS キー ID (keyId) と Amazon WorkMail 組織の暗号化コンテキストが含まれます。Amazon WorkMail もメールボックスキーを渡しますが、CloudTrail ログには記録されません。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-19T10:01:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" }, "keyId": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, "responseElements": null, "requestID": "76e96b96-7e24-4faf-a2d6-08ded2eaf63c", "eventID": "d5a59c18-128a-4082-aa5b-729f7734626a", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "d08e60f1-097e-4a00-b7e9-10bc3872d50c" }

Decrypt

メールボックスメッセージを追加、表示、削除すると、Amazon WorkMail は AWS KMS にメールボックスキーの復号を要求します。Amazon WorkMail は、暗号化されたメールボックスキーと Amazon WorkMail 組織の KMS キーの識別子を使用して、AWS KMS に Decrypt リクエストを送信します

Decrypt オペレーションを記録するイベントは、次のようなサンプルイベントになります。ユーザーは Amazon WorkMail サービスです。パラメータには (暗号化テキストの blob として) 暗号化メールボックスキーが含まれますが、ログ、および Amazon WorkMail 組織の暗号化コンテキストには記録されません。AWS KMS は暗号化テキストから KMS キーの ID を取得します。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-20T11:51:10Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" } }, "responseElements": null, "requestID": "4a32dda1-34d9-4100-9718-674b8e0782c9", "eventID": "ea9fd966-98e9-4b7b-b377-6e5a397a71de", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "241e1e5b-ff64-427a-a5b3-7949164d0214" }