如何 WorkSpaces 使用 AWS KMS - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何 WorkSpaces 使用 AWS KMS

您可以使WorkSpaces用為每個使用者佈建雲端桌面 (a WorkSpace)。當您啟動新的磁碟區時 WorkSpace,您可以選擇加密其磁碟區,並決定AWS KMS key要使用哪個磁碟區進行加密。您可以選擇 AWS 受管金鑰for WorkSpaces (aws/Workspace) 或對稱的客戶管理金鑰。

重要

WorkSpaces 僅支援對稱式加密 KMS 金鑰。您無法使用非對稱 KMS 金鑰來加密 WorkSpaces. 如需有關如何判斷 KMS 金鑰是對稱還是不對稱的說明,請參閱識別非對稱 KMS 金鑰

如需有關 WorkSpaces 使用加密磁碟區建立的詳細資訊,請參閱 Amazon WorkSpaces 管理指南 WorkSpace中的加密 a

使用的 WorkSpaces 加密概述 AWS KMS

使 WorkSpaces 用加密磁碟區建立時,請 WorkSpaces 使用 Amazon Elastic Block Store (Amazon EBS) 來建立和管理這些磁碟區。這兩種服務都使用您 AWS KMS key 來處理加密卷。如需 EBS 磁碟區加密的詳細資訊,請參閱下列文件:

當您 WorkSpaces 使用加密磁碟區啟動時, end-to-end 程序的運作方式如下:

  1. 您可以指定用於加密的 KMS 金鑰,以及使用 WorkSpace者和目錄。此動作會建立僅允許針對此使 WorkSpaces 用 KMS 金鑰的授權,也就是 WorkSpace說,僅適用於與指定的使用者和目錄 WorkSpace 相關聯的 KMS 金鑰。

  2. WorkSpaces 會建立加密的 EBS 磁碟區, WorkSpace 並指定要使用的 KMS 金鑰以及磁碟區的使用者和目錄 (與您在指定的資訊相同步驟 1)。此動作會建立授權,讓 Amazon EBS 僅針對此 WorkSpace 和磁碟區使用您的 KMS 金鑰 — 也就是說,僅針對與指定的使用者和目錄 WorkSpace 相關聯的使用者和目錄,而且僅針對指定的磁碟區使用您的 KMS 金鑰。

  3. Amazon EBS 請求使用 KMS 金鑰加密的磁碟區資料金鑰,並將 WorkSpace 使用者Sid和目錄 ID 以及磁碟區 ID 指定為加密內容。

  4. AWS KMS 建立新的資料金鑰,在您的 KMS 金鑰下加密該金鑰,然後將加密的資料金鑰傳送到 Amazon EBS。

  5. WorkSpaces 使用 Amazon EBS 將加密磁碟區附加到您的 WorkSpace. Amazon EBS 會隨Decrypt請求一 AWS KMS 起傳送加密的資料金鑰Sid,並指定使用 WorkSpace 者的目錄 ID 和磁碟區 ID (用作加密內容)。

  6. AWS KMS 使用您的 KMS 金鑰解密資料金鑰,然後將純文字資料金鑰傳送至 Amazon EBS。

  7. Amazon EBS 使用純文字資料金鑰來加密進出已加密磁碟區的所有資料。只要磁碟區已連接到,Amazon EBS 就會在記憶體中保留純文字資料金鑰。 WorkSpace

  8. Amazon EBS 會將加密的資料金鑰 (接收於步驟 4) 與磁碟區中繼資料一起儲存,以備 future 在重新啟動或重建時使用。 WorkSpace

  9. 當您使用移 AWS Management Console 除 WorkSpace (或使用 WorkSpaces API 中的TerminateWorkspaces動作) 時, WorkSpaces Amazon EBS 會淘汰允許他們為此使用 KMS 金鑰的授權。 WorkSpace

WorkSpaces 加密上下文

WorkSpaces 不會 AWS KMS key 直接使用您的加密操作(例如 Encrypt,等)DecryptGenerateDataKey,這意味著 WorkSpaces 不會將請求發送到包含加密上下文 AWS KMS的請求。但是,當 Amazon EBS 為 WorkSpaces (步驟 3在中使用的 WorkSpaces 加密概述 AWS KMS) 的加密磁碟區請求加密的資料金鑰時,當它要求該資料金鑰的純文字複本 (步驟 5) 時,它會在請求中包含加密內容。加密內容提供額外的驗證資料 (AAD),可 AWS KMS 用來確保資料完整性。加密內容也會寫入您的 AWS CloudTrail 記錄檔中,以協助您瞭解使用指定 AWS KMS key 的原因。Amazon EBS 將以下項目用於加密內容:

  • sid AWS Directory Service WorkSpace

  • AWS Directory Service 與 WorkSpace

  • 加密磁碟區的磁碟區 ID

以下範例顯示 Amazon EBS 所用加密內容的 JSON 顯示方式:

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

WorkSpaces 授予代表您使用 KMS 金鑰的權限

您可以在 AWS 受管金鑰 for WorkSpaces (aws/workspace) 或客戶受管金鑰下保護工作區資料。如果您使用客戶受管金鑰,則需要 WorkSpaces 授予權限,才能代表帳戶中的系統管理 WorkSpaces員使用 KMS 金鑰。依預設, AWS 受管金鑰 對 WorkSpaces 具有必要的權限。

若要準備您的客戶管理金鑰以供搭配使用 WorkSpaces,請遵循下列步驟。

WorkSpaces 管理員還需要使用權限 WorkSpaces。如需有關這些許可的詳細資訊,請參Amazon WorkSpaces 管理指南中的控制 WorkSpaces資源存取。

第 1 部分:將 WorkSpaces 管理員新增至 KMS 金鑰的金鑰使用者

若要提供 WorkSpaces 管理員所需的權限,您可以使用 AWS Management Console 或 AWS KMS API。

將 WorkSpaces 管理員新增為 KMS 金鑰的金鑰使用者 (主控台)

  1. 登入 AWS Management Console 並開啟 AWS Key Management Service (AWS KMS) 主控台,網址為 https://console.aws.amazon.com/kms

  2. 若要變更 AWS 區域,請使用頁面右上角的「地區」選取器。

  3. 在導覽窗格中,選擇 Customer managed keys (客戶受管金鑰)。

  4. 選擇您偏好的客戶受管金鑰的金鑰 ID 或別名。

  5. 選擇 Key policy (金鑰政策) 標籤。在 Key users (金鑰使用者) 中,選擇 Add (新增)。

  6. 在 IAM 使用者和角色清單中,選取對應至 WorkSpaces 管理員的使用者和角色,然後選擇 [連接]。

將 WorkSpaces 管理員新增為 KMS 金鑰 (AWS KMS API) 的金鑰使用者

  1. 使用此GetKeyPolicy作業取得現有金鑰原則,然後將原則文件儲存至檔案。

  2. 在您偏好的文字編輯器中開啟政策文件。將與您的 WorkSpaces 管理員對應的 IAM 使用者和角色新增至授予關鍵使用者權限的政策陳述式。接著儲存檔案。

  3. 使用此PutKeyPolicy作業將金鑰原則套用至 KMS 金鑰。

第 2 部分:賦予 WorkSpaces 管理員額外權限

如果您使用客戶管理的金鑰來保護您的 WorkSpaces 資料,除了預設金鑰原則的金鑰使用者區段中的權限外,管理 WorkSpaces 員還需要對 KMS 金鑰建立權的權限。此外,如果他們使用建立AWS Management Console WorkSpaces 加密磁碟區,則 WorkSpaces 管理員需要列出別名和列出金鑰的權限。如需建立和編輯 IAM 使用者政策的詳細資訊,請參閱《IAM 使用者指南》中的受管政策和內嵌政策

若要將這些權限授予您的 WorkSpaces 管理員,請使用 IAM 政策。將類似下列範例的政策陳述式新增至每個 WorkSpaces管理員的 IAM 政策。將範例 KMS 金鑰 ARN (arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab) 以有效的 ARN 取代。如果您的 WorkSpaces 系統管理員只使用 WorkSpaces API (而非主控台),您可以省略具有"kms:ListAliases""kms:ListKeys"權限的第二個原則陳述式。

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