

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

# Amazon EBS 加密
<a name="ebs-encryption"></a>

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

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

您可以將加密和未加密磁碟區同時連接到執行個體。所有 Amazon EC2 執行個體類型都支援 Amazon EBS 加密。

**Topics**
+ [Amazon EBS 加密的運作方式](how-ebs-encryption-works.md)
+ [Amazon EBS 加密的要求](ebs-encryption-requirements.md)
+ [預設啟用 Amazon EBS 加密](encryption-by-default.md)
+ [加密 EBS 資源](#encryption-parameters)
+ [輪換用於 Amazon EBS 加密的 AWS KMS 金鑰](kms-key-rotation.md)
+ [Amazon EBS 加密範例](encryption-examples.md)

# Amazon EBS 加密的運作方式
<a name="how-ebs-encryption-works"></a>

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

當您建立加密 EBS 磁碟區並連接到支援的執行個體類型時，便會加密下列資料類型：
+ 磁碟區內的待用資料
+ 所有在磁碟區和執行個體間移動的資料
+ 所有從磁碟區建立的快照
+ 所有從那些快照建立的磁碟區

Amazon EBS 會使用業界標準 AES-256 [資料加密，使用資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)來加密您的磁碟區。資料金鑰由 產生， AWS KMS 然後由 AWS KMS 使用 AWS KMS 金鑰加密，然後再與您的磁碟區資訊一起存放。Amazon EBS 會在您建立 Amazon EBS 資源 AWS 受管金鑰 的每個區域中自動建立唯一的 。KMS 金鑰的[別名](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)為 `aws/ebs`。根據預設，Amazon EBS 使用此 KMS 金鑰 來加密。或者，您可以使用您建立的對稱客戶受管加密金鑰。使用您自己的 KMS 金鑰 可為您提供更多彈性，包括能夠建立、旋轉和停用 KMS 金鑰。

Amazon EC2 使用 AWS KMS 來加密和解密 EBS 磁碟區的方式略有不同，具體取決於您建立加密磁碟區的快照是加密還是未加密。

## 加密快照時 EBS 加密的運作方式
<a name="how-ebs-encryption-works-encrypted-snapshot"></a>

當您從您擁有的加密快照建立加密磁碟區時，Amazon EC2 會搭配 AWS KMS 來加密和解密 EBS 磁碟區，如下所示：

1. Amazon EC2 傳送 [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 請求給 AWS KMS，指定您為磁碟區加密選擇的 KMS 金鑰。

1. 如果使用與快照相同的 KMS 金鑰加密磁碟區， AWS KMS 會使用與快照相同的資料金鑰，並在相同的 KMS 金鑰下加密磁碟區。如果磁碟區使用不同的 KMS 金鑰加密， AWS KMS 會產生新的資料金鑰，並使用您指定的 KMS 金鑰進行加密。加密的資料金鑰會傳送給 Amazon EBS，隨磁碟區中繼資料一起存放。

1. 當您將加密磁碟區連接至執行個體時，Amazon EC2 會傳送 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求至 AWS KMS ，以便它可以解密資料金鑰。

1. AWS KMS 會解密加密的資料金鑰，並將解密的資料金鑰傳送至 Amazon EC2。

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

## 快照未加密時 EBS 加密的運作方式
<a name="how-ebs-encryption-works-unencrypted-snapshot"></a>

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

1. Amazon EC2 會將 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求傳送至 AWS KMS，以便加密從快照建立的磁碟區。

1. Amazon EC2 傳送 [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 請求給 AWS KMS，指定您為磁碟區加密選擇的 KMS 金鑰。

1. AWS KMS 會產生新的資料金鑰、在您選擇用於磁碟區加密的 KMS 金鑰下進行加密，並將加密的資料金鑰傳送至 Amazon EBS，以與磁碟區中繼資料一起存放。

1. Amazon EC2 會將[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求傳送至 AWS KMS 以解密加密的資料金鑰，然後使用此金鑰來加密磁碟區資料。

1. 當您將加密磁碟區連接至執行個體時，Amazon EC2 會傳送 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求至 AWS KMS，以便它可以解密資料金鑰。

1. 當您將加密磁碟區連接至執行個體時，Amazon EC2 會傳送[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)請求給 AWS KMS，並指定加密的資料金鑰。

1. AWS KMS 會解密加密的資料金鑰，並將解密的資料金鑰傳送至 Amazon EC2。

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

如需詳細資訊，請參閱*AWS Key Management Service 開發人員指南*中的 [Amazon Elastic Block Store (Amazon EBS) 如何使用 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-ebs.html)和[Amazon EC2 的兩則範例](https://docs.aws.amazon.com/kms/latest/developerguide/ct-ec2two.html)。

## 無法使用的 KMS 金鑰如何影響資料金鑰
<a name="unusable-keys"></a>

當 KMS 金鑰變得無法使用時，效果幾乎是即時的 (視最終一致性而定)。KMS 金鑰的金鑰狀態變更反映了其最新狀況，所有在密碼編譯操作中使用 KMS 金鑰的請求都將失敗。

當您執行會導致 KMS 金鑰無法使用的動作，不會立即影響 EC2 執行個體或連接的 EBS 磁碟區。當磁碟區連接執行個體時，Amazon EC2 會採用資料金鑰 (而非 KMS 金鑰) 來加密所有磁碟 I/O。

然而，當加密的 EBS 磁碟區從 EC2 執行個體中斷連接時，Amazon EBS 就會從 Nitro 硬體移除資料金鑰。下次再將加密的 EBS 磁碟區連接到 EC2 執行個體，連接會失敗，因為 Amazon EBS 無法使用 KMS 金鑰來解密磁碟區的加密資料金鑰。若要再次使用 EBS 磁碟區，您必須讓 KMS 金鑰變得再次可用。

**提示**  
如果您不想再存取存放在 EBS 磁碟區中的資料，且該資料已透過您打算設為無法使用的 KMS 金鑰所產生的資料金鑰進行加密，建議您先將 EBS 磁碟區從 EC2 執行個體中分離，然後再將 KMS 金鑰設為無法使用。

如需詳細資訊，請參閱*《AWS Key Management Service 開發人員指南》*中的[無法使用的 KMS 金鑰如何影響資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#unusable-kms-keys)。

# Amazon EBS 加密的要求
<a name="ebs-encryption-requirements"></a>

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

**Topics**
+ [支援的磁碟區類型](#ebs-encryption-volume-types)
+ [支援的執行個體類型](#ebs-encryption_supported_instances)
+ [使用者的許可](#ebs-encryption-permissions)
+ [執行個體的許可](#ebs-encryption-instance-permissions)

## 支援的磁碟區類型
<a name="ebs-encryption-volume-types"></a>

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

## 支援的執行個體類型
<a name="ebs-encryption_supported_instances"></a>

Amazon EBS 加密適用於所有[目前世代](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#current-gen-instances)和[上一世代](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#previous-gen-instances)的執行個體類型。

## 使用者的許可
<a name="ebs-encryption-permissions"></a>

當您使用 KMS 金鑰進行 EBS 加密時，KMS 金鑰政策可讓可存取必要 AWS KMS 動作的任何使用者使用此 KMS 金鑰來加密或解密 EBS 資源。您必須授予使用者呼叫下列動作的許可，才能使用 EBS 加密：
+ `kms:CreateGrant`
+ `kms:Decrypt`
+ `kms:DescribeKey`
+ `kms:GenerateDataKeyWithoutPlainText`
+ `kms:ReEncrypt`

**提示**  
若要遵循最低權限原則人，請勿允許 `kms:CreateGrant` 的完整存取。反之，使用 `kms:GrantIsForAWSResource`條件金鑰來允許使用者只在由 AWS 服務代使用者建立授予時，才在 KMS 金鑰上建立授予，如下列範例所示。

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) **政策**。

## 執行個體的許可
<a name="ebs-encryption-instance-permissions"></a>

當執行個體嘗試與加密的 AMI、磁碟區或快照進行互動，系統會向執行個體的僅限身分識別角色發放 KMS 金鑰權限。僅限身分識別角色是一種 IAM 角色，可讓執行個體用來代表您與加密的 AMI、磁碟區或快照互動。

僅限身分識別的角色不需要手動建立或刪除，也沒有相關聯的政策。此外，您無法存取僅限身分識別的角色憑證。

**注意**  
執行個體上的應用程式不會使用僅限身分角色來存取其他 AWS KMS 加密資源，例如 Amazon S3 物件或 Dynamo DB資料表。這些操作會使用 Amazon EC2 執行個體角色的登入資料，或您在執行個體上設定的其他 AWS 登入資料來完成。

僅限身分識別的角色受到[服務控制政策](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP) 和 [KMS 金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)的約束。如果 SCP 或 KMS 金鑰拒絕僅限身分角色存取 KMS 金鑰，您可能無法啟動具有加密磁碟區的 EC2 執行個體，或使用加密的 AMI 或快照。

如果您要建立 SCP 或金鑰政策，根據使用 `aws:SourceIp`、`aws:SourceVpc`、 `aws:VpcSourceIp`或 `aws:SourceVpce` AWS 全域條件金鑰的網路位置拒絕存取，則必須確保這些政策陳述式不適用於僅限執行個體的角色。如需範例政策，請參閱[資料周邊政策範例](https://github.com/aws-samples/data-perimeter-policy-examples/tree/main)。

僅限身分識別的角色 ARN 使用下列格式：

```
arn:aws-partition:iam::account_id:role/aws:ec2-infrastructure/instance_id
```

將金鑰權限發給執行個體時，金鑰權限會發給該執行個體專屬的擔任角色工作階段。承授者主體 ARN 使用下列格式：

```
arn:aws-partition:sts::account_id:assumed-role/aws:ec2-infrastructure/instance_id
```

# 預設啟用 Amazon EBS 加密
<a name="encryption-by-default"></a>

您可以設定 AWS 帳戶，強制加密您建立的新 EBS 磁碟區和快照副本。例如，當您啟動執行個體和您從未加密快照複製的快照，Amazon EBS 會加密所建立的 EBS 磁碟區。如需從未加密轉移至已加密 EBS 資源的範例，請參閱 [加密未加密的資源](ebs-encryption.md#encrypt-unencrypted)。

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

**考量事項**
+ 預設加密是區域特有設定。如果您對區域啟用它，則無法對該區域中的個別磁碟區或快照停用它。
+ 根據預設，所有[目前世代](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#current-gen-instances)和[上一世代](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#previous-gen-instances)的執行個體類型都支援 Amazon EBS 加密。
+ 如果複製快照並將其加密為新的 KMS 金鑰，則會建立完整 (非增量) 複本。這會導致額外的儲存成本。

------
#### [ Console ]

**對區域啟用預設加密**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

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

1. 從導覽窗格，選取 **EC2 Dashboard (EC2 儀表板)**。

1. 在頁面右上角選擇 **帳戶屬性**及**資料保護和安全性**。

1. 在 **EBS 加密**區段中，選擇**管理**。

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

1. 選擇 **Update EBS encryption** (更新 EBS 加密)。

------
#### [ AWS CLI ]

**依預設設定檢視加密**

使用 [get-ebs-encryption-by-default](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-ebs-encryption-by-default.html) 命令。
+ 對於特定區域

  ```
  aws ec2 get-ebs-encryption-by-default --region region
  ```
+ 對於您帳戶中的所有區域

  ```
  echo -e "Region      \t Encrypt \t Key"; \
  echo -e "----------- \t ------- \t -------" ; \
  for region in $(aws ec2 describe-regions --region us-east-1 --query "Regions[*].[RegionName]" --output text);
  do
      default=$(aws ec2 get-ebs-encryption-by-default --region $region --query "{Encryption_By_Default:EbsEncryptionByDefault}" --output text); 
      kms_key=$(aws ec2 get-ebs-default-kms-key-id --region $region | jq '.KmsKeyId'); 
      echo -e "$region \t $default \t\t $kms_key"; 
  done
  ```

**依預設啟用加密**

使用 [enable-ebs-encryption-by-default](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-ebs-encryption-by-default.html) 命令。
+ 對於特定區域

  ```
  aws ec2 enable-ebs-encryption-by-default --region region
  ```
+ 對於您帳戶中的所有區域

  ```
  echo -e "Region      \t Encrypt \t Key"; \
  echo -e "----------- \t ------- \t -------" ; \
  for region in $(aws ec2 describe-regions --region us-east-1 --query "Regions[*].[RegionName]" --output text); 
  do
      default=$(aws ec2 enable-ebs-encryption-by-default --region $region --query "{Encryption_By_Default:EbsEncryptionByDefault}" --output text); 
      kms_key=$(aws ec2 get-ebs-default-kms-key-id --region $region | jq '.KmsKeyId'); 
      echo -e "$region \t $default \t\t $kms_key"; 
  done
  ```

**依預設停用加密**

使用 [disable-ebs-encryption-by-default](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-ebs-encryption-by-default.html) 命令。
+ 對於特定區域

  ```
  aws ec2 disable-ebs-encryption-by-default --region region
  ```
+ 對於您帳戶中的所有區域

  ```
  echo -e "Region      \t Encrypt \t Key"; \
  echo -e "----------- \t ------- \t -------" ; \
  for region in $(aws ec2 describe-regions --region us-east-1 --query "Regions[*].[RegionName]" --output text); 
  do
      default=$(aws ec2 disable-ebs-encryption-by-default --region $region --query "{Encryption_By_Default:EbsEncryptionByDefault}" --output text); 
      kms_key=$(aws ec2 get-ebs-default-kms-key-id --region $region | jq '.KmsKeyId'); 
      echo -e "$region \t $default \t\t $kms_key"; 
  done
  ```

------
#### [ PowerShell ]

**依預設設定檢視加密**

使用 [Get-EC2EbsEncryptionByDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2EbsEncryptionByDefault.html) cmdlet。
+ 對於特定區域

  ```
  Get-EC2EbsEncryptionByDefault -Region region
  ```
+ 對於您帳戶中的所有區域

  ```
  (Get-EC2Region).RegionName |
      ForEach-Object {
      [PSCustomObject]@{ 
          Region                    = $_
          EC2EbsEncryptionByDefault = Get-EC2EbsEncryptionByDefault -Region $_
          EC2EbsDefaultKmsKeyId     = Get-EC2EbsDefaultKmsKeyId -Region $_ 
      } } |
      Format-Table -AutoSize
  ```

**依預設啟用加密**

使用 [Enable-EC2EbsEncryptionByDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2EbsEncryptionByDefault.html) cmdlet。
+ 對於特定區域

  ```
  Enable-EC2EbsEncryptionByDefault -Region region
  ```
+ 對於您帳戶中的所有區域

  ```
  (Get-EC2Region).RegionName |
      ForEach-Object { 
      [PSCustomObject]@{
          Region                    = $_
          EC2EbsEncryptionByDefault = Enable-EC2EbsEncryptionByDefault -Region $_
          EC2EbsDefaultKmsKeyId     = Get-EC2EbsDefaultKmsKeyId -Region $_ 
      } } |
      Format-Table -AutoSize
  ```

**依預設停用加密**

使用 [Disable-EC2EbsEncryptionByDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2EbsEncryptionByDefault.html) cmdlet。
+ 對於特定區域

  ```
  Disable-EC2EbsEncryptionByDefault -Region region
  ```
+ 對於您帳戶中的所有區域

  ```
  (Get-EC2Region).RegionName |
      ForEach-Object { 
      [PSCustomObject]@{
          Region                    = $_
          EC2EbsEncryptionByDefault = Disable-EC2EbsEncryptionByDefault -Region $_
          EC2EbsDefaultKmsKeyId     = Get-EC2EbsDefaultKmsKeyId -Region $_ 
      } } |
      Format-Table -AutoSize
  ```

------

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

## 加密 EBS 資源
<a name="encryption-parameters"></a>

當您建立想要加密的磁碟區時，可透過啟用加密來加密 EBS 磁碟區或使用 [預設加密](encryption-by-default.md) 來啟用加密。

當您加密磁碟區時，您可指定使用對稱加密 KMS 金鑰 來加密磁碟區。如果您未指定 KMS 金鑰，則用於加密的 KMS 金鑰 取決於來源快照的加密狀態及其擁有權。如需詳細資訊，請參閱 [加密結果表](encryption-examples.md#ebs-volume-encryption-outcomes)。

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

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

### 在建立時加密空白磁碟區
<a name="new-encrypted-volumes"></a>

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

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

雖然無法支援加密磁碟區的公有快照，但您可以和特定帳戶共享加密快照。如需詳細指示，請參閱 [與其他 AWS 帳戶共用 Amazon EBS 快照](ebs-modifying-snapshot-permissions.md)。

### 加密未加密的資源
<a name="encrypt-unencrypted"></a>

您無法直接加密現有的未加密磁碟區或快照。

若要加密未加密的磁碟區，請建立該磁碟區的快照，然後使用快照建立新的加密磁碟區。如需詳細資訊，請參閱[建立快照](ebs-create-snapshot.md)及[建立磁碟區](ebs-creating-volume.md)。

若要加密未加密的快照，請建立該快照的加密複本。如需詳細資訊，請參閱[複製快照](ebs-copy-snapshot.md)。

如果您預設啟用帳戶進行加密，則從未加密快照建立的磁碟區和快照複本一律會加密。否則，您必須在請求中指定加密參數。如需詳細資訊，請參閱[預設啟用加密](encryption-by-default.md)。

# 輪換用於 Amazon EBS 加密的 AWS KMS 金鑰
<a name="kms-key-rotation"></a>

密碼編譯最佳實務不鼓勵大量重複使用加密金鑰。

若要建立新的密碼編譯資料以與 Amazon EBS 加密搭配使用，您可以建立新的客戶受管金鑰，然後變更應用程式以使用該新的 KMS 金鑰。或者，您可以為現有的客戶受管金鑰啟用自動金鑰輪換。

當您為客戶受管金鑰啟用自動金鑰輪換時， 會每年為 KMS 金鑰 AWS KMS 產生新的密碼編譯材料。 AWS KMS 會儲存所有先前版本的密碼編譯材料，以便您可以繼續解密並使用先前使用該 KMS 金鑰材料加密的磁碟區和快照。在您刪除 KMS 金鑰之前， AWS KMS 不會刪除任何輪換的金鑰材料。

當您使用輪換的客戶受管金鑰來加密新的磁碟區或快照時， AWS KMS 會使用目前的 （新） 金鑰材料。當您使用輪換的客戶受管金鑰來解密磁碟區或快照時， AWS KMS 會使用用來加密磁碟區或快照的密碼編譯資料版本。如果磁碟區或快照是使用舊版密碼編譯資料加密， AWS KMS 會繼續使用該舊版來解密。 AWS KMS 不會在金鑰輪換後重新加密先前加密的磁碟區或快照，以使用新的密碼編譯資料。它們會使用最初加密時使用的密碼編譯資料進行加密。您可以在應用程式 AWS 和服務中安全地使用輪換的客戶受管金鑰，無需變更程式碼。

**注意**  
只有具有 AWS KMS 建立之金鑰材料的對稱客戶受管金鑰才支援自動金鑰輪換。
AWS KMS AWS 受管金鑰 每年會自動輪換。您無法啟用或停用 AWS 受管金鑰的金鑰輪換。

如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》中的[輪換 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works)。

# Amazon EBS 加密範例
<a name="encryption-examples"></a>

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

下列範例說明如何管理您磁碟區和快照的加密狀態。如需加密案例的完整清單，請參閱 [加密結果表](#ebs-volume-encryption-outcomes)。

**Topics**
+ [還原未加密磁碟區 (未啟用預設加密)](#volume-account-off)
+ [還原未加密磁碟區 (已啟用預設加密)](#volume-account-on)
+ [複製未加密快照 (未啟用預設加密)](#snapshot-account-off)
+ [複製未加密快照 (已啟用預設加密)](#snapshot-account-on)
+ [重新加密已加密的磁碟區](#reencrypt-volume)
+ [重新加密未加密快照](#reencrypt-snapshot)
+ [在加密和未加密磁碟區間遷移資料](#migrate-data-encrypted-unencrypted)
+ [加密結果](#ebs-volume-encryption-outcomes)

## 還原未加密磁碟區 (未啟用預設加密)
<a name="volume-account-off"></a>

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

![\[當您從未加密的快照建立磁碟區時，請指定 KMS 金鑰來建立加密的磁碟區。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/volume-encrypt-account-off.png)


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

如需詳細資訊，請參閱[建立 Amazon EBS 磁碟區](ebs-creating-volume.md)。

## 還原未加密磁碟區 (已啟用預設加密)
<a name="volume-account-on"></a>

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

![\[當您從未加密快照建立磁碟區，但預設啟用加密時，我們會使用預設 KMS 金鑰來建立加密磁碟區。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/volume-encrypt-account-on.png)


如果想要將還原的磁碟區加密為對稱的客戶受管加密金鑰，則您必須同時提供 `Encrypted` 中顯示的 `KmsKeyId` 和 [還原未加密磁碟區 (未啟用預設加密)](#volume-account-off) 參數。

## 複製未加密快照 (未啟用預設加密)
<a name="snapshot-account-off"></a>

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

下圖說明此程序。

![\[從未加密快照建立已加密快照。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/snapshot-encrypt-account-off.png)


將未加密的快照複製到加密的快照，然後從加密的快照建立磁碟區，即可以加密 EBS 磁碟區。如需詳細資訊，請參閱 [複製 Amazon EBS 快照](ebs-copy-snapshot.md)。

## 複製未加密快照 (已啟用預設加密)
<a name="snapshot-account-on"></a>

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

![\[從未加密快照建立已加密快照。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/snapshot-encrypt-account-on.png)


## 重新加密已加密的磁碟區
<a name="reencrypt-volume"></a>

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

![\[複製已加密快照並將複本加密為新 KMS 金鑰。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/volume-reencrypt.png)


如需詳細資訊，請參閱[建立 Amazon EBS 磁碟區](ebs-creating-volume.md)。

## 重新加密未加密快照
<a name="reencrypt-snapshot"></a>

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

![\[複製已加密快照並將複本加密為新 KMS 金鑰。\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/images/snap-reencrypt.png)


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

## 在加密和未加密磁碟區間遷移資料
<a name="migrate-data-encrypted-unencrypted"></a>

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

### Linux 執行個體
<a name="migrate-data-encrypted-unencrypted-lin"></a>

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

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

### Windows 執行個體
<a name="migrate-data-encrypted-unencrypted-win"></a>

例如，使用 **robocopy** 命令來複製資料。在下列命令中，來源資料位於 `D:\`，目標磁碟區則掛載於 `E:\`。

```
PS C:\> robocopy D:\sourcefolder E:\destinationfolder /e /copyall /eta
```

我們建議使用資料夾，而非複製整個磁碟區，因為這可避免隱藏資料夾的潛在問題。

## 加密結果
<a name="ebs-volume-encryption-outcomes"></a>



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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/ebs/latest/userguide/encryption-examples.html)

\$1 這是帳戶 AWS 和區域用於 EBS 加密的預設客戶受管金鑰。根據預設，這是 AWS 受管金鑰 EBS 的唯一項目，您也可以指定客戶受管金鑰。

\$1\$1 這是啟動時針對磁碟區指定的客戶受管金鑰。此客戶受管金鑰是用來取代 AWS 帳戶和區域的預設客戶受管金鑰。