Amazon EBS 加密 - Amazon Elastic Compute Cloud

Amazon EBS 加密

使用 Amazon EBS 加密 作為與 EC2 執行個體相關聯的 EBS 資源的直接加密解決方案。使用 Amazon EBS 加密,您不需要建置、維護或保護自己的金鑰管理基礎設施。在建立加密磁碟區和快照時,Amazon EBS 加密會使用 AWS KMS keys。

加密操作會在主控 EC2 執行個體的伺服器上進行,確保執行個體和與其連接之 EBS 儲存體間待用資料和傳輸中資料的安全。

您可以將加密和未加密磁碟區同時連接到執行個體。

EBS 加密的運作方式

您可以同時加密 EC2 執行個體的開機和資料磁碟區。

當您建立加密 EBS 磁碟區並連接到支援的執行個體類型時,便會加密下列資料類型:

  • 磁碟區內的待用資料

  • 所有在磁碟區和執行個體間移動的資料

  • 所有從磁碟區建立的快照

  • 所有從那些快照建立的磁碟區

EBS 會使用業界標準的 AES-256 演算法資料金鑰加密您的磁碟區。在 EBS 使用您的 KMS 金鑰 加密資料之後,您的資料金鑰才會與您的加密資料一同存放於磁碟上。您的資料金鑰絕不會以純文字顯示在磁碟上。磁碟區的快照及任何後續從那些快照建立的磁碟區都會共享相同的資料金鑰。如需詳細資訊,請參閱AWS Key Management Service開發人員指南中的資料金鑰

Amazon EC2 搭配 AWS KMS 使用,可以根據您建立加密磁碟區的快照是加密還是未加密,以略微不同的方式加密和解密 EBS 磁碟區。

加密快照時 EBS 加密的運作方式

當您從您擁有的加密快照建立加密磁碟區時,可使用 AWS KMS 搭配 Amazon EC2 來加密和解密 EBS 磁碟區:

  1. Amazon EC2 會傳送 GenerateDataKeyWithoutPlaintext 請求至 AWS KMS,指定您選擇用於磁碟區加密的 KMS 金鑰。

  2. AWS KMS 會產生新的資料金鑰,並在您選擇用於磁碟區加密的 KMS 金鑰 下進行加密,然後傳送加密的資料金鑰至 Amazon EBS,以便與磁碟區中繼資料一起儲存。

  3. 當您將加密磁碟區連接至執行個體時,Amazon EC2 會傳送 CreateGrant 請求至 AWS KMS,以便它可以解密資料金鑰。

  4. AWS KMS 會解密加密的資料金鑰,然後傳送解密的資料金鑰給 Amazon EC2。

  5. Amazon EC2 使用存放在 Hypervisor 記憶體的純文字資料金鑰來加密磁碟區的磁碟 I/O。只要磁碟區連接到執行個體,純文字資料金鑰就會存在記憶體中。

快照未加密時 EBS 加密的運作方式

當您從未加密的快照建立加密磁碟區時,可使用 AWS KMS 搭配 Amazon EC2 來加密和解密 EBS 磁碟區:

  1. Amazon EC2 會傳送 CreateGrant 請求至 AWS KMS,以便它可以加密從快照建立的磁碟區。

  2. Amazon EC2 會傳送 GenerateDataKeyWithoutPlaintext 請求至 AWS KMS,指定您選擇用於磁碟區加密的 KMS 金鑰。

  3. AWS KMS 會產生新的資料金鑰,並在您選擇用於磁碟區加密的 KMS 金鑰 下進行加密,然後傳送加密的資料金鑰至 Amazon EBS,以便與磁碟區中繼資料一起儲存。

  4. Amazon EC2 會傳送 Decrypt 請求至 AWS KMS,以取得加密磁碟區資料的加密金鑰。

  5. 當您將加密磁碟區連接至執行個體時,Amazon EC2 會傳送 CreateGrant 請求至 AWS KMS,以便它可以解密資料金鑰。

  6. 當您將加密的磁碟區連接到執行個體時,Amazon EC2 會傳送 Decrypt 請求至 AWS KMS,指定加密的資料金鑰。

  7. AWS KMS 會解密加密的資料金鑰,然後傳送解密的資料金鑰給 Amazon EC2。

  8. Amazon EC2 使用存放在 Hypervisor 記憶體的純文字資料金鑰來加密磁碟區的磁碟 I/O。只要磁碟區連接到執行個體,純文字資料金鑰就會存在記憶體中。

如需詳細資訊,請參閱AWS Key Management Service開發人員指南中的Amazon Elastic Block Store (Amazon EBS) 如何使用AWS KMSAmazon EC2 的兩則範例

Requirements

開始之前,請確認符合下列要求。

支援的磁碟區類型

所有 EBS 磁碟區類型皆支援加密。您可以預期加密磁碟區和未加密磁碟區皆具有相同的 IOPS 效能,其對延遲僅會有最小程度的影響。您可以使用存取未加密磁碟區的相同方式存取加密磁碟區。加密和解密的處理過程皆相當透明,且無須您或您的應用程式進行任何額外動作。

支援的執行個體類型

Amazon EBS 加密 適用於所有最新一代的執行個體類型,以及下列上一代執行個體類型:A1、C3、cr1.8xlarge、G2、I2、M3 和 R3。

IAM 使用者的許可

當您為 EBS 加密的預設金鑰設定 KMS 金鑰,預設的 KMS 金鑰 政策允許任何具有請求的 KMS 動作的 IAM 使用者,使用此 KMS 金鑰 加密或解密 EBS 資源。您必須授與 IAM 使用者呼叫下列動作的許可,才能使用 EBS 加密:

  • kms:CreateGrant

  • kms:Decrypt

  • kms:DescribeKey

  • kms:GenerateDataKeyWithoutPlainText

  • kms:ReEncrypt

若要遵循最低權限原則人,請勿允許 kms:CreateGrant 的完整存取。相反地,只有 AWS 服務代表使用者建立授與時,才允許使用者在 KMS 金鑰上建立授與,如下列範例所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef" ], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

如需詳細資訊,請參閱AWS Key Management Service開發人員指南預設金鑰政策一節中的允許存取AWS帳戶並啟用 IAM 政策

EBS 加密的預設 KMS 金鑰

在您存放 AWS 資源的每個區域中,Amazon EBS 都會自動建立唯一的 AWS 受管金鑰。此 KMS 金鑰 具有別名 alias/aws/ebs。根據預設,Amazon EBS 使用此 KMS 金鑰 來加密。您也可以指定您已建立的對稱 受客戶管理的金鑰,做為 EBS 加密的預設 KMS 金鑰。使用您自己的 KMS 金鑰 可為您提供更多彈性,包括能夠建立、旋轉和停用 KMS 金鑰。

重要

Amazon EBS 不支援非對稱 KMS 金鑰。如需詳細資訊,請參閱AWS Key Management Service開發人員指南中的使用對稱和非對稱 KMS 金鑰

New console

對區域設定 EBS 加密的預設 KMS 金鑰

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 從導覽列中選取 Region (區域)。

  3. 從導覽窗格,選取 EC2 Dashboard (EC2 儀表板)

  4. 在頁面右上角選擇 Account Attributes (帳戶屬性)EBS encryption (EBS 加密)

  5. 選擇 Manage (管理)

  6. 對於 Default encryption key (預設加密金鑰),請選擇對稱 受客戶管理的金鑰。

  7. 選擇 Update EBS encryption (更新 EBS 加密)

Old console

對區域設定 EBS 加密的預設 KMS 金鑰

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 從導覽列中選取 Region (區域)。

  3. 從導覽窗格,選取 EC2 Dashboard (EC2 儀表板)

  4. 在頁面右上角選擇 Account Attributes (帳戶屬性)Save (儲存)

  5. 選擇 Change the default key (變更預設金鑰),然後選擇可用的 KMS 金鑰。

  6. 選擇儲存設定

預設加密

您可以設定 AWS 帳戶強制加密您建立的新 EBS 磁碟區和快照複本。例如,當您啟動執行個體和您從未加密快照複製的快照,Amazon EBS 會加密所建立的 EBS 磁碟區。如需從未加密轉移至已加密 EBS 資源的範例,請參閱 加密未加密的資源

預設加密不會影響現有的 EBS 磁碟區或快照。

Considerations

  • 預設加密是區域特有設定。如果您對區域啟用它,則無法對該區域中的個別磁碟區或快照停用它。

  • 若啟用預設加密,則只在執行個體類型支援 EBS 加密時,您才能啟動該執行個體。如需更多詳細資訊,請參閱 支援的執行個體類型

  • 如果複製快照並將其加密為新的 KMS 金鑰,則會建立完整 (非增量) 複本。這會導致額外的儲存成本。

  • 使用 AWS Server Migration Service (SMS) 遷移伺服器時,請勿啟用預設加密。如果預設加密已啟用,而您遇到差異複寫失敗,請關閉加密。反之,當您建立複寫任務時,請啟用 AMI 加密。

New console

對區域啟用預設加密

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 從導覽列中選取 Region (區域)。

  3. 從導覽窗格,選取 EC2 Dashboard (EC2 儀表板)

  4. 在頁面右上角選擇 Account Attributes (帳戶屬性)EBS encryption (EBS 加密)

  5. 選擇 Manage (管理)

  6. 選取 Enable (啟用)。您可以將 AWS 受管金鑰 (具有代表您建立的別名 alias/aws/ebs) 保留為預設加密金鑰,或選擇對稱客戶受管金鑰。

  7. 選擇 Update EBS encryption (更新 EBS 加密)

Old console

對區域啟用預設加密

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 從導覽列中選取 Region (區域)。

  3. 從導覽窗格,選取 EC2 Dashboard (EC2 儀表板)

  4. 在頁面右上角選擇 Account Attributes (帳戶屬性)Save (儲存)

  5. EBS Storage (EBS 儲存) 下,選取 Always encrypt new EBS volumes (一律加密新的 EBS 磁碟區)

  6. 選擇儲存設定

您不能變更與現有快照或加密磁碟區相關聯的 KMS 金鑰。但是,您可以在快照複製操作中建立與不同 KMS 金鑰 的關聯,讓複製後的快照使用新的 KMS 金鑰 來加密。

加密 EBS 資源

當您建立想要加密的磁碟區時,可透過啟用加密來加密 EBS 磁碟區或使用 預設加密 來啟用加密。

當您加密磁碟區時,您可以指定使用對稱 KMS 金鑰 來加密磁碟區。如果您未指定 KMS 金鑰,則用於加密的 KMS 金鑰 取決於來源快照的加密狀態及其擁有權。如需詳細資訊,請參閱 加密結果表

注意

如果您正在使用 API 或 AWS CLI 來指定 KMS 金鑰,請注意,AWS 會以非同步方式驗證 KMS 金鑰。因此,如果您指定的 KMS 金鑰 ID、別名或 ARN 無效,則動作雖顯示完成,但最終會失敗。

您不能變更與現有快照或磁碟區相關聯的 KMS 金鑰。但是,您可以在快照複製操作中建立與不同 KMS 金鑰 的關聯,讓複製後的快照使用新的 KMS 金鑰 來加密。

在建立時加密空白磁碟區

當您建立新的、空的 EBS 磁碟區,您可以透過對特定磁碟區建立操作來啟用加密。如果預設為啟用 EBS 加密,則會使用 EBS 加密的預設 KMS 金鑰 來自動加密磁碟區。您也可以為特定的磁碟區建立操作指定不同的對稱 KMS 金鑰。磁碟區在第一次可用時即會加密,因此您的資料始終受到保護。如需詳細程序,請參閱建立 Amazon EBS 磁碟區

依預設,您在建立磁碟區時選取的 KMS 金鑰 會加密您從其中產生的磁碟區,以及您從那些加密快照還原的磁碟區。您無法從已加密磁碟區或快照移除加密,這表示從已加密快照還原的磁碟區,或已加密快照的複本「一律」加密。

雖然無法支援加密磁碟區的公有快照,但您可以和特定帳戶共享加密快照。如需詳細指示,請參閱 共享 Amazon EBS 快照

加密未加密的資源

您無法直接加密現有的未加密磁碟區或快照。不過,您可以使用未加密的磁碟區或快照來建立加密的磁碟區或快照。如果您啟用預設加密,則 Amazon EBS 會使用預設 KMS 金鑰進行 EBS 加密,以此方式自動加密新的磁碟區及快照。您也可以在建立獨立的磁碟區或快照時啟用加密,藉此使用預設的 KMS 金鑰進行 EBS 加密,或使用對稱的客戶受管金鑰。如需詳細資訊,請參閱 建立 Amazon EBS 磁碟區複製 Amazon EBS 快照

若要以 受客戶管理的金鑰 將快照複本加密,則您必須同時啟用加密並指定 KMS 金鑰,如 複製未加密快照 (未啟用預設加密) 所示。

重要

Amazon EBS 不支援非對稱 KMS 金鑰。如需詳細資訊,請參閱AWS Key Management Service開發人員指南中的使用對稱和非對稱 KMS 金鑰

從 EBS 後端 AMI 啟動執行個體時,您也可以套用新的加密狀態。這是因為 EBS 後端 AMI 包括可依所述加密之 EBS 磁碟區的快照。如需更多詳細資訊,請參閱 對 EBS 後端 AMI 使用加密

加密案例

當您建立加密的 EBS 資源時,其會透過您帳戶預設的 EBS 加密 KMS 金鑰 來加密,除非您在磁碟區創建參數中或者 AMI 或執行個體的區塊型設備映射中指定了不同的 受客戶管理的金鑰。如需更多詳細資訊,請參閱 EBS 加密的預設 KMS 金鑰

下列範例說明如何管理您磁碟區和快照的加密狀態。如需加密案例的完整清單,請參閱 加密結果表

還原未加密磁碟區 (未啟用預設加密)

若未啟用預設加密,從未加密快照還原的磁碟區預設為未加密。不過,您可以設定 Encrypted 參數,並選擇性地設定 KmsKeyId 參數,來加密產生的磁碟區。下圖說明此程序。

如果您省略 KmsKeyId 參數,則產生的磁碟區會使用您 EBS 加密的預設 KMS 金鑰 來加密。您必須指定 KMS 金鑰 ID,才能將磁碟區加密為不同 KMS 金鑰。

如需更多詳細資訊,請參閱 從快照建立磁碟區

還原未加密磁碟區 (已啟用預設加密)

如果已啟用預設加密,必須對從未加密快照還原的磁碟區進行加密,而且不需要任何加密參數即可使用預設 KMS 金鑰。下圖顯示這個簡單的預設案例:

如果想要將還原的磁碟區加密為對稱 受客戶管理的金鑰,則您必須同時提供 Encrypted 中顯示的 KmsKeyId還原未加密磁碟區 (未啟用預設加密) 參數。

複製未加密快照 (未啟用預設加密)

若未啟用預設加密,未加密快照的複本預設為未加密。不過,您可以設定 Encrypted 參數,並選擇性地設定 KmsKeyId 參數,來加密產生的快照。如果您省略 KmsKeyId,則產生的快照會以預設 KMS 金鑰 來加密。您必須指定 KMS 金鑰 ID,才能將磁碟區加密為不同的對稱 KMS 金鑰。

下圖說明此程序。


                    從未加密快照建立已加密快照。

將未加密的快照複製到加密的快照,然後從加密的快照建立磁碟區,即可以加密 EBS 磁碟區。如需更多詳細資訊,請參閱 複製 Amazon EBS 快照

複製未加密快照 (已啟用預設加密)

如果已啟用預設加密,則必須對未加密快照的複本進行加密,而且若使用預設 KMS 金鑰,則不需要任何加密參數。下圖說明此預設案例:


                    從未加密快照建立已加密快照。

重新加密已加密的磁碟區

如果 CreateVolume 動作在已加密快照上運作,您可以選擇使用不同 KMS 金鑰 重新加密。下圖說明此程序。在此範例中,您擁有兩個 KMS 金鑰:KMS 金鑰 A 和 KMS 金鑰 B。來源快照以 KMS 金鑰 A 加密。在建立磁碟區期間,若指定 KMS 金鑰 B 的 KMS 金鑰 ID 為參數,來源資料會自動解密,然後以 KMS 金鑰 B 重新加密。


                    複製已加密快照並將複本加密為新 KMS 金鑰。

如需更多詳細資訊,請參閱 從快照建立磁碟區

重新加密未加密快照

在複製過程中加密快照的功能,可讓您將新的對稱 KMS 金鑰 套用到您所擁有的已加密快照。從結果複本還原的磁碟區也只能使用新的 KMS 金鑰 進行存取。下圖說明此程序。在此範例中,您擁有兩個 KMS 金鑰:KMS 金鑰 A 和 KMS 金鑰 B。來源快照以 KMS 金鑰 A 加密。在複製期間,若指定 KMS 金鑰 B 的 KMS 金鑰 ID 為參數,來源資料會自動以 KMS 金鑰 B 重新加密。


                    複製已加密快照並將複本加密為新 KMS 金鑰。

在相關案例中,您可以選擇將新的加密參數套用到與您共享之快照的複本。根據預設,複本也會使用快照擁有者共享的 KMS 金鑰 進行加密。但是,我們建議您使用由您控制的不同 KMS 金鑰 建立共享快照的複本。這可在原始 KMS 金鑰 洩露時,或是擁有者因各種原因撤銷 KMS 金鑰 時,保護您存取磁碟區的權限。如需更多詳細資訊,請參閱 加密和快照複製

在加密和未加密磁碟區間遷移資料

當您可以存取加密和未加密磁碟區時,您可以自由的在其間傳輸資料。EC2 會透明的進行加密和解密操作。

例如,使用 rsync 命令來複製資料。在下列命令中,來源資料位於 /mnt/source,目標磁碟區則掛載於 /mnt/destination

[ec2-user ~]$ sudo rsync -avh --progress /mnt/source/ /mnt/destination/

加密結果

下表說明每個可能設定組合的加密結果。

加密是否已啟用? 是否預設啟用加密? 磁碟區來源 預設 (未指定客戶受管金鑰) 自訂 (已指定客戶受管金鑰)
新的 (空白) 磁碟區 未加密 N/A
您擁有的未加密快照 未加密
您擁有的加密快照 以相同金鑰加密
與您共用的未加密快照 未加密
與您共用的加密快照 按預設客戶受管金鑰加密*
新磁碟區 按預設客戶受管金鑰加密 按指定客戶受管金鑰加密*
您擁有的未加密快照 按預設客戶受管金鑰加密
您擁有的加密快照 以相同金鑰加密
與您共用的未加密快照 按預設客戶受管金鑰加密
與您共用的加密快照 按預設客戶受管金鑰加密
新的 (空白) 磁碟區 按預設客戶受管金鑰加密 N/A
您擁有的未加密快照 按預設客戶受管金鑰加密
您擁有的加密快照 以相同金鑰加密
與您共用的未加密快照 按預設客戶受管金鑰加密
與您共用的加密快照 按預設客戶受管金鑰加密
新磁碟區 按預設客戶受管金鑰加密 按指定客戶受管金鑰加密
您擁有的未加密快照 按預設客戶受管金鑰加密
您擁有的加密快照 以相同金鑰加密
與您共用的未加密快照 按預設客戶受管金鑰加密
與您共用的加密快照 按預設客戶受管金鑰加密

* 這是預設客戶受管金鑰,它用於 AWS 帳戶和區域的 EBS 加密。依預設,這是用於 EBS 的唯一的 AWS 受管金鑰,或者您可以指定客戶受管金鑰。如需更多詳細資訊,請參閱 EBS 加密的預設 KMS 金鑰

** 這是啟動時針對磁碟區指定的客戶受管金鑰。對於 AWS 帳戶和區域,使用此客戶受管金鑰,而非預設客戶受管金鑰。

使用 API 和 CLI 設定加密預設值

您可以使用下列 API 動作和 CLI 命令來管理預設加密以及預設 KMS 金鑰。

API 動作 CLI 命令 描述

DisableEbsEncryptionByDefault

disable-ebs-encryption-by-default

停用預設加密。

EnableEbsEncryptionByDefault

enable-ebs-encryption-by-default

啟用預設加密。

GetEbsDefaultKmsKeyId

get-ebs-default-kms-key-id

描述預設 KMS 金鑰。

GetEbsEncryptionByDefault

get-ebs-encryption-by-default

指出預設加密是否已啟用。

ModifyEbsDefaultKmsKeyId

modify-ebs-default-kms-key-id

變更用來加密 EBS 磁碟區的預設 KMS 金鑰。

ResetEbsDefaultKmsKeyId

reset-ebs-default-kms-key-id

將 AWS 受管金鑰 重設為用來加密 EBS 磁碟區的預設 KMS 金鑰。