暗号化されたWorkSpaces - Amazon WorkSpaces

暗号化されたWorkSpaces

WorkSpaces は AWS Key Management Service (AWS KMS) と統合されています。これにより、お客様の AWS KMS キーを使用して WorkSpace のストレージボリュームを暗号化できるようになりました。WorkSpace を起動する際に、ルートボリューム (Microsoft Windows の場合は C ドライブ、Linux の場合は /) およびユーザーボリューム (Windows の場合は D ドライブ、Linux の場合は /home) を暗号化できます。これにより、保管時のデータ、ボリュームへのディスク I/O、ボリュームから作成されたスナップショットを暗号化することができます。

注記

WorkSpaces の暗号化に加えて、特定の AWS 米国リージョンで FIPS エンドポイント暗号化を使用することもできます。詳細については、「FedRAMP 認証または DoD SRG 準拠のために Amazon WorkSpaces をセットアップする」を参照してください。

前提条件

暗号化プロセスを開始する前に、AWS KMS キーが必要です。この KMS キーは、AmazonWorkSpaces の AWS 管理 KMS キーaws/workspaces)または対称カスタマー管理の KMS キーのいずれかになります。

  • AWS 管理の KMS キー – リージョンの WorkSpaces コンソールから、暗号化されていない WorkSpace を最初に起動すると、Amazon WorkSpaces によってアカウントに AWS 管理の KMS (aws/workspaces) が自動的に作成されます。この AWS 管理の KMS を選択して、WorkSpace のユーザーとルートボリュームを暗号化することができます。詳細については、「AWS KMS を使用した WorkSpaces 暗号化の概要」を参照してください。

    この AWS 管理の KMS (ポリシーと許可を含む) を表示し、AWS CloudTrail ログでその使用を追跡することはできますが、この KMS を使用または管理することはできません。Amazon WorkSpaces は、この KMS キーを作成および管理します。Amazon WorkSpaces だけがこの KMS を使用でき、WorkSpaces はアカウント内の WorkSpaces リソースの暗号化だけに使用できます。

    AWS 管理の KMS キー (Amazon WorkSpaces がサポートするキーも含む) は、3 年ごとに更新されます。詳細については、 AWS KMS デベロッパーガイドの 「AWS Key Management Service keys ローテーション」を参照してください。

  • カスタマーマネージド KMS キー — または、AWS KMS を使用して作成した対称カスタマー管理 KMS キーを選択することもできます。ポリシーの設定を含め、この KMS キーを表示、使用、管理できます。KMS キーの作成の詳細については、 AWS Key Management Service デベロッパーガイドキーの作成 を参照してください。AWS KMS API を使用して KMS キーを作成する方法の詳細については、AWS Key Management Service デベロッパーガイドキーの使用を参照してください。

    自動キー更新を有効にしない限り、カスタマー管理の KMS キー は自動的に更新されません。詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMSキーのローテーション」を参照してください。

重要

KMS キーを更新する際には、元の KMS キーと新しい KMS キーの両方を有効にしたままにし、元の KMS キーにより暗号化された WorkSpaces を、AWS KMS が復号化できるようにする必要があります。元の KMS キーを有効にしたくない場合は、WorkSpaces を再作成し、新しい KMS キーを使用して暗号化する必要があります。

AWS KMS キー を使用して WorkSpaces を暗号化するには、以下の条件を満たす必要があります。

制限

  • 既存の WorkSpace は暗号化できません。WorkSpace を起動するときは、暗号化する必要があります。

  • 暗号化された WorkSpace からのカスタムイメージの作成は、サポートされていません。

  • 暗号化された WorkSpace の暗号化を無効にすることは、現在サポートされていません。

  • ルートボリュームの暗号化を有効にした状態で起動された WorkSpaces では、プロビジョニングに最大 1 時間かかる場合があります。

  • 暗号化された WorkSpace を再起動または再構築するには、AWS KMS KMS キーが有効であることを最初に確認します。有効でない場合、WorkSpace は使用できません。KMS キーが有効になっているかどうかを確認する方法については、「AWS Key Management Service デベロッパーガイド」の 「コンソールで KMS キーを表示する」を参照してください。

AWS KMS を使用した WorkSpaces 暗号化の概要

暗号化されたボリュームで WorkSpaces を作成すると、WorkSpaces は Amazon Elastic Block Store (Amazon EBS) を使用してこれらのボリュームを作成および管理します。Amazon EBS は、業界標準の AES-256 アルゴリズムを使用してデータキーでボリュームを暗号化します。Amazon EBS と Amazon WorkSpaces の両方が KMS キーを使用して暗号化されたボリュームを操作します。EBS ボリューム暗号化の詳細については、Windows インスタンス用の Amazon EC2 ユーザーガイドAmazon EBS 暗号化を参照してください。

暗号化されたボリュームを使用するWorkSpaces を起動すると、エンドツーエンドの処理が次のように行われます。

  1. 暗号化に使用する KMS キーと、WorkSpace のユーザーとディレクトリを指定します。このアクションにより、この WorkSpaces (指定されたユーザーとディレクトリに関連付けられた WorkSpace )にのみ KMS キーの使用を許可する権限が作成されます。

  2. WorkSpaces は、WorkSpace の暗号化された EBS ボリュームを作成し、使用する KMS キーとボリュームのユーザーおよびディレクトリを指定します。このアクションにより、Amazon EBS が WorkSpace とボリューム (指定されたユーザーとディレクトリに関連付けられた WorkSpace および指定されたボリューム) にのみ KMS キーを使用できるようにする権限が作成されます。

  3. Amazon EBS は、KMS キーによって暗号化されたボリュームデータキーをリクエストし、WorkSpace ユーザーの Active Directory セキュリティ識別子 (SID) および AWS Directory Service ディレクトリ ID、ならびに暗号化コンテキストとしての Amazon EBS ボリューム ID を指定します。

  4. AWS KMS は、新しいデータキーを作成し、KMS キーによって暗号化して、暗号化されたデータキーを Amazon EBS に送信します。

  5. WorkSpaces は、Amazon EBS を使用して、暗号化されたボリュームを WorkSpace にアタッチします。Amazon EBS は、Decrypt リクエストを使って暗号化されたデータキーを AWS KMS に送信し、WorkSpace ユーザーの SID、ディレクトリ ID、および暗号化コンテキストとして使用されるボリューム ID を指定します。

  6. AWS KMS は、KMS キーを使用してデータキーを復号化し、プレーンテキストのデータキーを Amazon EBS に送信します。

  7. Amazon EBS は、プレーンテキストデータキーを使用して、暗号化されたボリュームを出入りするすべてのデータを暗号化します。Amazon EBS は、ボリュームが WorkSpace にアタッチされている限り、プレーンテキストデータキーをメモリ内に保持します。

  8. Amazon EBS は、暗号化されたデータキー (ステップ 4 で受け取ったデータキー) とボリュームメタデータを保存し、後で WorkSpace を再起動または再構築した場合に使用できるようにします。

  9. AWS Management Console を使用して WorkSpace を削除すると (または WorkSpaces API で TerminateWorkspaces アクションを使用すると)、WorkSpaces および Amazon EBS はその WorkSpace で KMS キーの使用を許可していた権限を使用停止にします。

WorkSpaces 暗号化コンテキスト

WorkSpaces は、KMS キーを暗号化オペレーション (EncryptDecryptGenerateDataKey など) に直接使用することがありません。つまり、WorkSpaces は暗号化コンテキストが含まれる AWS KMS にリクエストを送信しません。ただし、Amazon EBS が、WorkSpaces の暗号化されたボリュームに対して暗号化されたデータキーをリクエストするとき (ステップ 3AWS KMS を使用した WorkSpaces 暗号化の概要) と、そのデータキーのプレーンテキストコピーをリクエストするとき (ステップ 5) には、リクエストに暗号化コンテキストが含められます。

暗号化コンテキストは、データの整合性を保証するために AWS KMS で使用される追加の認証データ (AAD) を提供します。また、暗号化コンテキストは AWS CloudTrail ログファイルにも書き込まれるため、特定の KMS キーが使用された原因を理解するのに役立ちます。Amazon EBS では、暗号化コンテキストとして次のものが使用されます。

  • WorkSpace に関連付けられている Active Directory ユーザーのセキュリティ識別子 (SID)

  • WorkSpace に関連付けられた AWS Directory Service ディレクトリのディレクトリ ID

  • 暗号化されたボリュームの Amazon EBS ボリューム ID

次の例は、Amazon EBS が使用する暗号化コンテキストの JSON 表現を示しています。

{ "aws:workspaces:sid-directoryid": "[S-1-5-21-277731876-1789304096-451871588-1107]@[d-1234abcd01]", "aws:ebs:id": "vol-1234abcd" }

ユーザーに代わって KMS キーを使用する許可を WorkSpaces に付与する

WorkSpaces の AWS 管理の KMS キー (aws/workspaces) またはカスタマー管理の KMS キーで WorkSpace データを保護することができます。カスタマー管理 KMS キーを使用する場合は、アカウントの WorkSpaces 管理者に代わって KMS キーを使用する WorkSpaces 許可を与える必要があります。WorkSpaces の AWS 管理 KMS キーには、デフォルトで必要な許可が設定されます。

WorkSpaces で使用する KNS キーを準備するには、次の手順を実行します。

WorkSpaces 管理者には、WorkSpaces を使用する許可も必要です。これらのアクセス許可の詳細については、WorkSpaces の Identity and Access Management にアクセスしてください。

パート 1: WorkSpaces の管理者をキーユーザーとして追加する

WorkSpaces 管理者に必要な許可を付与するには、AWS Management Console または AWS KMS API を使用できます。

KMS キーのキーユーザーとして WorkSpaces 管理者を追加するには (コンソール)

  1. AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. ナビゲーションペインで、[Customer managed keys] (カスタマー管理型のキー) を選択します。

  4. 任意のカスタマーマネージドキーの KMS キーの キー ID またはエイリアスを選択する

  5. [キーポリシー] タブを選択します。[Key users] (キーユーザー) で [Add] (追加) を選択します。

  6. IAM ユーザーとロールのリストで、WorkSpaces 管理者に対応するユーザーとロールを選択し、[Add] (追加) を選択します。

KMS キーのキーユーザーとして WorkSpaces 管理者を追加するには ( API)

  1. GetKeyPolicy オペレーションを使用して既存のキーポリシードキュメントを取得し、キーポリシードキュメントをファイルに保存します。

  2. 任意のテキストエディタでポリシードキュメントを開きます。WorkSpaces 管理者に対応する IAM ユーザーとロールを、キーユーザーにアクセス許可を付与するポリシーステートメントに追加します。その後、ファイルを保存します。

  3. PutKeyPolicy オペレーションを使用して、KMS キーにキーポリシーを適用します。

パート 2: IAM ポリシーを使用して WorkSpaces 管理者に追加の許可を付与する

カスタマー管理の KMS キーを選択して暗号化に使用する場合は、アカウントで暗号化された WorkSpaces を起動する IAM ユーザーの代わりに、Amazon WorkSpaces で KMS キーの使用を許可する IAM ポリシーを確立する必要があります。また、そのユーザーにも、Amazon WorkSpaces を使用するための許可が必要です。IAM ユーザーポリシーの作成と編集の詳細については、IAM ユーザーガイドIAM ポリシーを管理するおよび WorkSpaces の Identity and Access Management を参照してください。

WorkSpaces の暗号化では、KMS キーへのアクセスを制限する必要があります。以下は、使用できるサンプルキーのポリシーです。このポリシーにより、AWS KMS KMS キーを管理できるプリンシパルと、この KMS キーを使用できるプリンシパルが分離されます。このサンプルキーポリシーを使用する前に、サンプルアカウント ID と IAM ユーザー名を、アカウントの実際の値に置き換えてください。

最初のステートメントは、デフォルトの AWS KMS キーポリシーと一致します。これにより、IAM ポリシーを使用して KMS キーへのアクセスを制御するためのアクセス許可がアカウントに付与されます。2 番目と 3 番目のプリンシパルは、キーを管理できる AWS プリンシパルと、キーを使用できる プリンシパルをそれぞれ定義します。4 番目のステートメントでは、AWS KMS と統合された AWS サービスが、指定されたプリンシパルに代わってキーを使用できるようにします。このステートメントは、AWS のサービスが許可を作成、管理できるようにします。このステートメントでは、KMS キーに付与される許可を、アカウントのユーザーに代わって AWS のサービスによって付与される許可に制限する条件要素を使用します。

注記

WorkSpaces 管理者が AWS Management Console を使用して暗号化されたボリュームで WorkSpaces を作成する場合、管理者はエイリアスおよびキーをリストするための許可 ("kms:ListAliases" および "kms:ListKeys" 許可) が必要です。WorkSpaces 管理者が (コンソールではなく) Amazon WorkSpaces API のみを使用する場合は、"kms:ListAliases" および "kms:ListKeys" のアクセス許可を省略できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*" ], "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:user/Alice"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ] }

WorkSpace を暗号化しているロールまたはユーザーに適用する IAM ポリシーには、カスタマー管理の KMS キーを使用するためのアクセス許可と WorkSpaces へのアクセス権が必要です。IAM ユーザーまたはロールに WorkSpaces のアクセス許可を付与するには、以下のサンプルポリシーを IAM ユーザーまたはロールにアタッチします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:*", "ds:DescribeDirectories", "workspaces:*", "workspaces:DescribeWorkspaceBundles", "workspaces:CreateWorkspaces", "workspaces:DescribeWorkspaceBundles", "workspaces:DescribeWorkspaceDirectories", "workspaces:DescribeWorkspaces", "workspaces:RebootWorkspaces", "workspaces:RebuildWorkspaces" ], "Resource": "*" } ] }

ユーザーが を使用するには、次の IAM ポリシーが必要ですAWS KMS これにより、KMS キーへの読み取り専用アクセスと、許可を作成する能力がユーザーに付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Describe*", "kms:List*" ], "Resource": "*" } ] }

ポリシーで KMS キーを指定する場合は、次のような IAM ポリシーを使用します。サンプルKMS キー ARN を有効なものに置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:ListKeys" ], "Resource": "*" } ] }

WorkSpace を暗号化します。

WorkSpace を暗号化するには

  1. https://console.aws.amazon.com/workspaces/ で WorkSpaces コンソールを開きます。

  2. [Launch WorkSpaces] を選択し、最初の 3 つの手順を完了します。

  3. [WorkSpaces Configuration] のステップで、以下を行います。

    1. 暗号化するボリュームを選択します。[Root Volume]、[User Volume]、または両方のボリュームとなります。

    2. [Encryption Key] (暗号化キー) で、AWS KMS キー (Amazon WorkSpaces によって作成された AWS 管理の KMS キーまたはユーザーが作成した KMS キー) を選択します。選択する KMS キーは対称である必要があります。Amazon WorkSpaces では、非対称 KMS キーがサポートされていません。

    3. [Next Step] を選択します。

  4. [Launch WorkSpaces] を選択します。

暗号化された WorkSpaces を表示する

どの WorkSpaces とボリュームが WorkSpaces コンソールから暗号化されたのかを表示するには、左のナビゲーションバーから [WorkSpaces] を選択します。[Volume Encryption] 列に、各 WorkSpace で暗号化が有効になっているか無効になっているかが表示されます。特定のボリュームが暗号化されているかどうかを表示するには、WorkSpace エントリを展開して [Encrypted Volumes] フィールドを確認します。