

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

# Amazon EC2 Auto Scaling 中的資料保護
<a name="ec2-auto-scaling-data-protection"></a>

 AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon EC2 Auto Scaling 中的資料保護。如此模型所述， AWS 負責保護執行所有 的全域基礎設施 AWS 雲端。您負責維護在此基礎設施上託管內容的控制權。您也同時負責所使用 AWS 服務 的安全組態和管理任務。如需資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需有關歐洲資料保護的相關資訊，請參閱*AWS 安全性部落格*上的[AWS 共同責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，我們建議您保護 AWS 帳戶 登入資料，並使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 設定個別使用者。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 設定 API 和使用者活動記錄 AWS CloudTrail。如需有關使用 CloudTrail 追蹤擷取 AWS 活動的資訊，請參閱*AWS CloudTrail 《 使用者指南*》中的[使用 CloudTrail 追蹤](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解決方案，以及其中的所有預設安全控制 AWS 服務。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。
+ 如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-3 驗證的密碼編譯模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包括當您使用 Amazon EC2 Auto Scaling 或使用 AWS 服務 主控台、API AWS CLI或其他 AWS SDKs 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL，我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

當您啟動 Amazon EC2 執行個體時，您可以選擇將使用者資料傳遞給執行個體，以在執行個體開機時執行其他組態。我們也建議您絕不要在將要傳送到執行個體的使用者資料中加入機密或敏感資訊。

## 使用 AWS KMS keys 加密 Amazon EBS 磁碟區
<a name="encryption"></a>

您可以設定 Auto Scaling 群組，以此加密透過 AWS KMS keys存放於雲端的 Amazon EBS 磁碟區資料。Amazon EC2 Auto Scaling 支援 AWS 受管金鑰和客戶受管金鑰來加密您的資料。請注意，使用啟動組態時，無法使用 `KmsKeyId` 選項來指定客戶受管金鑰。若要指定客戶受管金鑰，請改用啟動範本。如需詳細資訊，請參閱[為 Auto Scaling 群組建立啟動範本](create-launch-template.md)。如需有關如何建立、存放和管理 AWS KMS 加密金鑰的資訊，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。

您既可以在 EBS 後端 AMI 中設定客戶受管金鑰，然後再設定啟動範本或啟動組態；也可以使用預設加密功能，強制加密您建立的新 EBS 磁碟區和快照副本。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[使用加密搭配 EBS 支援的 AMIs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIEncryption.html)，以及《*Amazon EBS 使用者指南*》中的[預設加密](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html)。 *Amazon EC2 * 

**注意**  
如需如何設定在使用客戶受管金鑰進行加密時，啟動 Auto Scaling 執行個體所需之金鑰政策的相關資訊，請參閱 [與加密磁碟區搭配使用的必要 AWS KMS 金鑰政策](key-policy-requirements-EBS-encryption.md)。

## 相關資源
<a name="data-protection-related-resources"></a>

如需 Amazon EBS 提供的資料保護指導方針，請參閱《Amazon *EBS* [使用者指南》中的 Amazon Elastic Block Store 中的資料保護](https://docs.aws.amazon.com/ebs/latest/userguide/data-protection.html)。

# 與加密磁碟區搭配使用的必要 AWS KMS 金鑰政策
<a name="key-policy-requirements-EBS-encryption"></a>

Amazon EC2 Auto Scaling [使用服務連結角色](autoscaling-service-linked-role.md)將許可委派給其他 AWS 服務。Amazon EC2 Auto Scaling 服務連結角色已預先定義，並包含 Amazon EC2 Auto Scaling AWS 服務 代表您呼叫其他 所需的許可。預先定義的許可也包含對 的存取 AWS 受管金鑰。不過，其不包括對客戶受管金鑰的存取權，該存取權允許您保有對這些金鑰的完整控制權。

本主題介紹在為 Amazon EBS 加密指定客戶受管金鑰時，如何設定啟動 Auto Scaling 執行個體所需的金鑰政策。

**注意**  
Amazon EC2 Auto Scaling 不需要額外的授權，就能使用預設的 AWS 受管金鑰 來保護帳戶中的加密磁碟區。

**Contents**
+ [概要](#overview)
+ [設定金鑰政策](#configuring-key-policies)
+ [範例 1：允許存取客戶受管金鑰的金鑰政策區段](#policy-example-cmk-access)
+ [範例 2：允許跨帳戶存取客戶受管金鑰的金鑰政策區段](#policy-example-cmk-cross-account-access)
+ [在 AWS KMS 主控台中編輯金鑰政策](#eding-key-policies-console)

## 概要
<a name="overview"></a>

當 Amazon EC2 Auto Scaling 啟動執行個體時， AWS KMS keys 以下可用於 Amazon EBS 加密： Amazon EC2 
+ [AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) – Amazon EBS 在您的帳戶中建立、擁有和管理的加密金鑰。這是新帳戶的預設加密金鑰。除非您指定客戶受管金鑰，否則 AWS 受管金鑰 會用於加密。
+ [客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) – 您所建立、擁有和管理的自訂加密金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

  注意：金鑰必須為對稱金鑰。Amazon EBS 不支援非對稱客戶受管金鑰。

您可以在建立會指定加密磁碟區的加密快照或啟動範本時，設定客戶受管金鑰，或依預設啟用加密。

## 設定金鑰政策
<a name="configuring-key-policies"></a>

您的 KMS 金鑰必須具有金鑰政策，允許 Amazon EC2 Auto Scaling 使用透過客戶受管金鑰加密的 Amazon EBS 磁碟區來啟動執行個體。

請使用此頁面上的範例來設定金鑰政策，為客戶受管金鑰提供 Amazon EC2 Auto Scaling 存取權。您可以在建立金鑰時修改客戶受管金鑰的金鑰政策，或之後再修改。

您必須至少新增兩個政策陳述式到金鑰政策，該政策才能與 Amazon EC2 Auto Scaling 搭配運作。
+ 第一個陳述式允許 `Principal` 元素中指定的 IAM 身分直接使用客戶受管金鑰。它包含對金鑰執行 AWS KMS `Encrypt`、`Decrypt`、`GenerateDataKey*`、 `ReEncrypt*`和 `DescribeKey`操作的許可。
+ 第二個陳述式允許 `Principal`元素中指定的 IAM 身分使用 `CreateGrant`操作來產生授予，將其自身許可的子集委派給與 AWS KMS 或其他主體整合 AWS 服務 的 。這允許其使用金鑰來代表您建立加密資源。

在您為金鑰政策新增政策陳述式時，請勿變更政策中任何現有的陳述式。

對於下列每個範例，必須取代的引數，例如金鑰 ID 或服務連結角色的名稱，會顯示為*使用者預留位置文字*。在大多數情況下，您可以將服務連結角色的名稱取代為 Amazon EC2 Auto Scaling 服務連結角色的名稱。

如需詳細資訊，請參閱下列資源：
+ 若要使用 建立金鑰 AWS CLI，請參閱 [create-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-key.html)。
+ 若要使用 更新金鑰政策 AWS CLI，請參閱 [put-key-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/put-key-policy.html)。
+ 若要尋找金鑰 ID 和 Amazon Resource Name (ARN)，請參閱《AWS Key Management Service 開發人員指南》中的[尋找金鑰 ID 和 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)。
+ 如需 Amazon EC2 Auto Scaling 服務連結角色的詳細資訊，請參閱 [Amazon EC2 Auto Scaling 的服務連結角色](autoscaling-service-linked-role.md)。
+ 如需有關 Amazon EBS 加密和 KMS 一般的資訊，請參閱《[Amazon EBS 使用者指南》和《 開發人員指南》中的 Amazon EBS 加密](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html)。 ** [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)

## 範例 1：允許存取客戶受管金鑰的金鑰政策區段
<a name="policy-example-cmk-access"></a>

請將以下兩個政策陳述式新增至客戶受管金鑰的金鑰政策，以將範例 ARN 取代為可存取金鑰的適當服務連結角色的 ARN。在此範例中，該政策區段會授予服務連結角色名為 **AWSServiceRoleForAutoScaling** 的許可，讓他們能夠使用客戶受管金鑰。

```
{
   "Sid": "Allow service-linked role use of the customer managed key",
   "Effect": "Allow",
   "Principal": {
       "AWS": [
           "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
       ]
   },
   "Action": [
       "kms:Encrypt",
       "kms:Decrypt",
       "kms:ReEncrypt*",
       "kms:GenerateDataKey*",
       "kms:DescribeKey"
   ],
   "Resource": "*"
}
```

```
{
   "Sid": "Allow attachment of persistent resources",
   "Effect": "Allow",
   "Principal": {
       "AWS": [
           "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
       ]
   },
   "Action": [
       "kms:CreateGrant"
   ],
   "Resource": "*",
   "Condition": {
       "Bool": {
           "kms:GrantIsForAWSResource": true
       }
    }
}
```

## 範例 2：允許跨帳戶存取客戶受管金鑰的金鑰政策區段
<a name="policy-example-cmk-cross-account-access"></a>

如果您建立的客戶受管金鑰所在帳戶與 Auto Scaling 群組不同，您必須使用搭配金鑰政策的授權，以便允許存取跨帳戶存取權金鑰。

必須依照下列順序完成兩個步驟：

1. 首先，將以下兩個政策陳述式新增至客戶受管金鑰的金鑰政策。將範例 ARN 取代為其他帳戶的 ARN，請務必將 *111122223333* 取代為 AWS 帳戶 您要建立 Auto Scaling 群組的 的實際帳戶 ID。這允許您為特定帳戶中的 IAM 使用者或角色授予許可，以使用下文的 CLI 命令為金鑰建立授權。但是，這不會將任何使用者存取權提供給金鑰。

   ```
   {
      "Sid": "Allow external account 111122223333 use of the customer managed key",
      "Effect": "Allow",
      "Principal": {
          "AWS": [
              "arn:aws:iam::111122223333:root"
          ]
      },
      "Action": [
          "kms:Encrypt",
          "kms:Decrypt",
          "kms:ReEncrypt*",
          "kms:GenerateDataKey*",
          "kms:DescribeKey"
      ],
      "Resource": "*"
   }
   ```

   ```
   {
      "Sid": "Allow attachment of persistent resources in external account 111122223333",
      "Effect": "Allow",
      "Principal": {
          "AWS": [
              "arn:aws:iam::111122223333:root"
          ]
      },
      "Action": [
          "kms:CreateGrant"
      ],
      "Resource": "*"
   }
   ```

1. 然後，從您要建立 Auto Scaling 群組的所在帳戶建立授權以將相關許可委派給適當的服務連結角色。授權的 `Grantee Principal` 元素是適當服務連結角色的 ARN。`key-id` 為金鑰的 ARN。

   以下是 [create-grant](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-grant.html) CLI 命令範例，此命令可對帳戶 *111122223333* 中名為 **AWSServiceRoleForAutoScaling** 的服務連結角色，提供在 *444455556666* 帳戶中使用客戶受管金鑰的許可。

   ```
   aws kms create-grant \
     --region us-west-2 \
     --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d \
     --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling \
     --operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"
   ```

   若要讓此命令成功，提出請求的使用者必須有執行 `CreateGrant` 動作的許可。

   下列 IAM 政策範例允許帳戶 *111122223333* 中的 IAM 身分 (使用者或角色)，為帳戶 *444455556666* 中的客戶受管金鑰建立許可。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowCreationOfGrantForTheKMSKeyinExternalAccount444455556666",
         "Effect": "Allow",
         "Action": "kms:CreateGrant",
         "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
       }
     ]
   }
   ```

------

   如需在其他 AWS 帳戶中為 KMS 金鑰建立授權的詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的「[AWS KMS中的授權](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)」。
**重要**  
指定為承授者主體的服務連結角色名稱必須是現有角色的名稱。建立授與後，為確保授與允許 Amazon EC2 Auto Scaling 使用指定的 KMS 金鑰，請勿刪除和重新建立服務連結角色。

## 在 AWS KMS 主控台中編輯金鑰政策
<a name="eding-key-policies-console"></a>

前幾節的範例僅顯示如何對金鑰政策新增陳述式，而這只是其中一個用來變更金鑰政策的方法。變更金鑰政策的最簡單方法是針對金鑰政策使用 AWS KMS 主控台的預設檢視，並將 IAM 身分 （使用者或角色） 設為適當金鑰政策的*其中一個金鑰使用者*。如需詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[使用 AWS 管理主控台 預設檢視](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to-console-default-view)。

**重要**  
請務必謹慎進行。主控台的預設檢視政策陳述式包含對客戶受管金鑰執行 AWS KMS `Revoke`操作的許可。如果您授予 帳戶中客戶受管金鑰的 AWS 帳戶 存取權，而且您不小心撤銷授予他們此許可的授予，外部使用者將無法再存取其加密的資料或用來加密其資料的金鑰。