AWS Key Management Service
開発者ガイド

Amazon WorkSpaces で AWS KMS を使用する方法

Amazon WorkSpaces を使用して、エンドユーザーごとにクラウドベースのデスクトップ (WorkSpace) をプロビジョニングできます。新しい WorkSpace を起動するとき、そのボリュームの暗号化を選択し、暗号化に使用する AWS KMS カスタマーマスターキー (CMK)を決定することができます。Amazon WorkSpaces (aws/workspaces) 用の AWS 管理 CMK またはカスタマー管理 CMK を選択できます。

暗号化されたボリュームを使用して WorkSpace を作成する方法の詳細については、『Amazon WorkSpaces Administration Guide』の「​WorkSpace の暗号化」を参照してください。

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

暗号化されたボリュームを使用して WorkSpace を作成すると、Amazon WorkSpaces は Amazon Elastic Block Store (Amazon EBS) を使用してそれらのボリュームを作成および管理します。どちらのサービスも、KMS カスタマーマスターキー (CMK) を使用して暗号化されたボリュームを操作します。EBS ボリュームの暗号化の詳細については、以下のドキュメントを参照してください。

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

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

  2. Amazon WorkSpaces は、WorkSpace の暗号化された EBS ボリュームを作成し、使用する CMK とボリュームのユーザーおよびディレクトリを指定します (ステップ ステップ 1 で指定したのと同じ情報)。このアクションにより、Amazon EBS にこの WorkSpace とボリュームでのみ —(つまり、指定されたユーザーとディレクトリに関連付けられた WorkSpace、および指定されたボリュームでのみ) CMK の使用を許可する許可が作成されます。

  3. Amazon EBS は、CMK によって暗号化されたボリュームデータキーをリクエストし、WorkSpace ユーザーの Sid とディレクトリ ID、ボリューム ID を暗号化コンテキストとして指定します。

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

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

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

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

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

  9. AWS マネジメントコンソール を使用して WorkSpace を削除すると (または、Amazon WorkSpaces API で TerminateWorkspaces アクションを使用すると)、Amazon WorkSpaces と Amazon EBS はその WorkSpace での CMK の使用を許可していた許可を削除します。

Amazon WorkSpaces 暗号化コンテキスト

Amazon WorkSpaces は、カスタマーマスターキー (CMK) を暗号化操作 (EncryptDecryptGenerateDataKey など) に直接使用することがありません。つまり、Amazon WorkSpaces は暗号化コンテキストが含まれる AWS KMS にリクエストを送信しません。ただし、Amazon EBS が、WorkSpace の暗号化されたボリュームに対して暗号化されたデータキーをリクエストするとき (「AWS KMS を使用した Amazon WorkSpaces 暗号化の概要」のステップ 3) と、そのデータキーのプレーンテキストコピーをリクエストするとき (ステップ 5) には、リクエストに暗号化コンテキストが含められます。暗号化コンテキストは、データの整合性を保証するために AWS KMS で使用される追加の認証データ (AAD) を提供します。また、暗号化コンテキストが AWS CloudTrail ログファイルに書き込まれるため、特定のカスタマーマスターキー (CMK) が使用された理由を理解するうえで役立ちます。Amazon EBS では、暗号化コンテキストとして次のものが使用されます

  • WorkSpace に関連付けられている AWS Directory Service ユーザーの sid

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

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

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

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

お客様に代わって CMK を使用する権限を Amazon WorkSpaces に付与する

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

Amazon WorkSpaces で使用するための顧客管理 CMK を準備するには、次の手順を実行します。

Amazon WorkSpaces 管理者は、Amazon WorkSpaces を使用するためのアクセス許可も必要とします。これらの権限の詳細については、『Amazon WorkSpaces Administration Guide』の「Amazon WorkSpaces リソースへのアクセスの制御」を参照してください。

パート 1: CMK のキーユーザーに WorkSpace 管理者を追加する

Amazon WorkSpaces 管理者に必要なアクセス許可を付与するには、AWS マネジメントコンソール または AWS KMS API を使用できます。

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

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

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

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

  4. カスタマー管理 CMK のキー ID またはエイリアスを選択します。

  5. [Key policy (キーポリシー)] セクションの [Key users (キーユーザー)] で、[Add (追加)] を選択します。

  6. IAM ユーザーとロールのリストで、WorkSpace 管理者に対応するユーザーとロールを選択し、[Attach] を選択します。

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

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

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

  3. PutKeyPolicy オペレーションを使用して、更新されたキーポリシードキュメントを CMK に適用します。

パート 2: WorkSpace 管理者に追加のアクセス許可を付与する

カスタマー管理の CMK を使用して Amazon WorkSpaces データを保護する場合、WorkSpace 管理者はデフォルトキーポリシーのキーユーザーセクションの権限に加えて、CMK の権限を作成する権限が必要です。また、AWS マネジメントコンソール を使用して暗号化されたボリュームを持つ WorkSpace を作成する場合、WorkSpace 管理者にはエイリアスとキーを一覧表示するためのアクセス許可が必要です。IAM ユーザーポリシーの作成と編集については、IAM ユーザーガイド の「管理ポリシーとインラインポリシー」を参照してください。

これらのアクセス許可を WorkSpace 管理者に付与するには、IAM ポリシーを使用します。各 WorkSpace 管理者の IAM ポリシーに、次の例のようなポリシーステートメントを追加します。例の CMK ARN (arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab) を有効なものに置き換えます。WorkSpace 管理者が (コンソールではなく) Amazon WorkSpaces API のみを使用する場合は、"kms:ListAliases" および "kms:ListKeys" のアクセス権を持つ 2 番目のポリシーステートメントを省略できます。

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