

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

# 強制執行傳輸中的 VPC 加密
<a name="vpc-encryption-controls"></a>

VPC 加密控制是一項安全與合規功能，可讓您集中進行授權控制，以監控流量的加密狀態、協助您識別允許純文字通訊的資源，並最終為您提供機制，以強制執行區域內跨 VPCs傳輸中的加密

VPC Encryption Controls 同時使用應用程式層加密和 nitro AWS 系統硬體的內建傳輸中加密功能，以確保加密強制執行。此功能也會將原生硬體層加密延伸至現代 Nitro 執行個體以外的 AWS 其他服務，包括 Fargate、Application Load Balancer、Transit Gateways 等。

此功能專為想要確保可見性和控制所有流量加密狀態的任何人而設計。在資料加密對於符合 HIPAA、FedRamp 和 PCI DSS 等合規標準至關重要的產業中特別有用。安全管理員和雲端架構師可以使用它，在其 AWS 環境中集中執行傳輸政策中的加密

此功能可用於兩種模式：監控模式和強制執行模式。

## 加密控制模式
<a name="encryption-controls-modes"></a>

**監控模式**  
在監控模式中，Encryption Controls 可讓您了解 VPCs 內外 AWS 資源之間流量的加密狀態。它還可協助您識別未強制執行傳輸中加密的 VPC 資源。您可以設定 VPC 流程日誌以發出富集欄位 - `encryption-status` -，告知您的流量是否已加密。您也可以使用主控台或`GetVpcResourcesBlockingEncryptionEnforcement`命令來識別未強制執行傳輸中加密的資源。

**注意**  
現有的 VPCs 只能先在監控模式中啟用。這可讓您了解允許或可能允許純文字流量的資源。只有在這些資源開始強制執行加密 （或您為其建立排除） 時，您才能在 VPC 上開啟強制執行模式。

**強制執行模式**  
在強制執行模式中，VPC 加密控制可防止您使用允許 VPC 邊界內未加密流量的任何功能或服務。您無法在現有 VPCs 上直接在強制模式下啟用加密控制。您必須先在監控模式中開啟加密控制、識別和修改不合規的資源，以強制執行傳輸中的加密，然後開啟強制執行模式。不過，您可以在建立期間以強制模式為新 VPCs開啟加密控制。

啟用時，強制模式會防止您建立或連接未加密的 VPC 資源，例如不支援原生內建加密的舊 EC2 執行個體，或網際網路閘道等。如果您想要在加密強制執行的 VPC 中執行不合規的資源，您必須建立該資源的排除。

## 監控流量流程的加密狀態
<a name="monitoring-encryption-status"></a>

您可以使用 VPC 流程日誌中的 `encryption-status` 欄位，稽核 VPC 內流量的加密狀態。可包含下列值：
+ `0` = 未加密
+ `1` = nitro 加密 （由 VPC 加密控制管理）
+ `2` = 應用程式加密 
  +  界面端點到 AWS 服務的 TCP 連接埠 443 上的流程 \$1 
  +  閘道端點 TCP 連接埠 443 上的流程 \$1 
  +  透過 VPC 端點流向加密 Redshift 叢集 \$1\$1 
+ `3` = 同時加密 nitro 和應用程式
+ `(-)` = 加密狀態未知或 VPC 加密控制已關閉

**請注意：**

\$1 對於介面和閘道端點， AWS 不會查看封包資料來判斷加密狀態，而是依賴用來取得加密狀態的連接埠。

\$1\$1 對於指定的 AWS 受管端點， 會根據服務組態中的 TLS 需求來 AWS 確定加密狀態。

**VPC 流程日誌限制**
+ 若要啟用 VPC 加密控制的流程日誌，您需要使用加密狀態欄位手動建立新的流程日誌。encryption-status 欄位不會自動新增至現有的流程日誌。
+ 建議您將 \$1\$1traffic-path\$1 和 \$1\$1flow-direction\$1 欄位新增至流程日誌，以取得流程日誌中更多詳細資訊。

  範例：

  ```
  aws ec2 create-flow-logs \
  --resource-type VPC \
  --resource-ids vpc-12345678901234567 \
  --traffic-type ALL \
  --log-group-name my-flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs
  --log-format '${encryption-status} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${traffic-path} ${flow-direction} ${reject-reason}'
  ```

## VPC 加密控制排除
<a name="vpc-encryption-controls-exclusions"></a>

VPC 加密控制強制執行模式需要 VPC 中的所有資源強制執行加密。這可確保區域中 AWS 內的加密。不過，您可能有網際網路閘道、NAT 閘道或虛擬私有閘道等資源，允許在負責設定和維護end-to-end加密 AWS的網路外部進行連線。若要在加密強制執行VPCs 中執行這些資源，您可以建立資源排除。排除會為資源建立可稽核的例外狀況，其中客戶負責維護加密 （通常是在應用程式層）。

VPC 加密控制僅支援 8 個排除。如果您的 VPC 中有這些資源，並且想要移至強制執行模式，則必須在從監視器切換到強制執行模式時新增這些排除。不可排除其他資源。您可以遷移 VPC 以強制執行模式，方法是建立這些資源的排除。您負責加密進出這些資源的流量
+ 網際網路閘道
+ NAT 閘道
+ 輸出限定網際網路閘道
+ 加密未強制執行 VPC VPCs 對等互連 （詳細案例請參閱 VPC 對等互連支援一節）
+ 虛擬私有閘道
+ VPC 內的 Lambda 函數
+ VPC Lattice
+ 彈性檔案系統

## 實作工作流程
<a name="implementation-workflow"></a>

1. **啟用監控** - 在監控模式下建立 VPC 加密控制

1. **分析流量** - 檢閱流程日誌以監控流量的加密狀態

1. **分析資源** - 使用主控台或`GetVpcResourcesBlockingEncryptionEnforcement`命令來識別未強制執行傳輸中加密的資源。

1. **準備 【選用】** - 如果您想要開啟強制執行模式，請規劃資源遷移和必要的排除

1. **強制執行 【選用】** - 切換為強制執行模式並設定必要的排除

1. **稽核** - 透過流程日誌持續監控合規

如需詳細設定說明，請參閱部落格[介紹 VPC 加密控制：強制執行區域內 VPCs內和之間傳輸中的加密](https://aws.amazon.com/blogs/aws/introducing-vpc-encryption-controls-enforce-encryption-in-transit-within-and-across-vpcs-in-a-region)。

## VPC 加密控制狀態
<a name="vpc-encryption-controls-states"></a>

VPC 加密控制可以有下列其中一種狀態：

**建立**  
正在 VPC 上建立 VPC 加密控制。

**modify-in-progress**  
正在 VPC 上修改 VPC 加密控制

**正在刪除**  
正在 VPC 上刪除 VPC 加密控制項

**有用**  
VPC 加密控制在 VPC 上成功實作監控模式或強制執行模式

## AWS 服務支援和相容性
<a name="aws-service-support-compatibility"></a>

若要符合加密規範，資源必須一律在硬體層或應用程式層強制執行傳輸中的加密。對於大多數資源，您不需要採取任何動作。

### 具有自動合規的服務
<a name="services-automatic-compliance"></a>

PrivateLink 支援的大多數 AWS 服務，包括跨區域 PrivateLinks，都會接受在應用程式層加密的流量。您不需要對這些資源進行任何變更。 AWS 會自動捨棄任何未經application-layer-encrypted的流量。某些例外狀況包括 Redshift 叢集 （已佈建和無伺服器 - 您需要在其中手動遷移基礎資源）

### 自動遷移的資源
<a name="resources-migrate-automatically"></a>

Network Load Balancer、Application Load Balancer、Fargate 叢集、EKS 控制平面會在您開啟監控模式後自動遷移至原生支援加密的硬體。您不需要修改這些資源。 會自動 AWS 處理遷移。

### 需要手動遷移的資源
<a name="resources-requiring-manual-migration"></a>

某些 VPC 資源和服務要求您選取基礎執行個體類型。所有現代 EC2 執行個體都支援傳輸中加密。如果您的服務已使用現代 EC2 執行個體，則不需要進行任何變更。您可以使用 主控台或 GetVpcResourcesBlockingEncryptionEnforcement 命令來識別是否有任何這些服務正在使用較舊的執行個體。如果您識別此類資源，則必須將其升級至支援 nitro 系統硬體原生加密的任何現代 EC2 執行個體。這些服務包括 EC2 執行個體、Auto Scaling 群組、RDS （所有資料庫和文件資料庫）、Elasticache Provisioned、Amazon Redshift Provisioned Clusters、EKS、ECS-EC2、OpenSearch Provisioned 和 EMR。

**相容資源：**  
下列資源與 VPC 加密控制相容：
+ [Nitro 型 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/data-protection.html#encryption-transit)
+ Network Load Balancer （有限制）
+ Application Load Balancer
+ AWS Fargate 叢集
+ Amazon Elastic Kubernetes Service (EKS)
+ Amazon EC2 Auto Scaling 群組
+ Amazon Relational Database Service (RDS - 所有資料庫）
+ Amazon ElastiCache 節點型叢集
+ Amazon Redshift 佈建和無伺服器叢集
+ Amazon Elastic Container Service (ECS) - EC2 容器執行個體
+ Amazon OpenSearch Service
+ Amazon Elastic MapReduce (EMR)
+ Amazon Managed Streaming for Apache Kafka (Amazon MSK)
+ VPC 加密控制會對透過 PrivateLink 存取的所有 AWS 服務在應用程式層強制執行加密。在應用程式層未加密的任何流量，都會由託管在 VPC 內的 PrivateLink 端點捨棄，且加密控制處於強制執行模式

### 服務特定的限制
<a name="service-specific-limitations"></a>

**Network Load Balancer 限制**  
TLS 組態：在包含 VPC 的 上強制執行加密控制時，您無法使用 TLS 接聽程式將加密和解密的工作卸載至負載平衡器。不過，您可以將目標設定為執行 TLS 加密和解密

**Redshift 佈建和無伺服器**  
客戶無法在具有現有叢集/端點的 VPC 上移至強制執行模式。若要搭配 Redshift 使用 VPC 加密控制，您必須從快照還原叢集或命名空間。對於佈建叢集，建立現有 Redshift 叢集的快照，然後使用叢集快照操作的還原從快照還原。對於無伺服器，建立現有命名空間的快照，然後使用無伺服器工作群組上快照操作的還原，從快照還原。請注意，若未執行快照和還原程序，無法在現有叢集或命名空間上啟用 VPC 加密控制。如需建立快照，請參閱 [Amazon Redshift 文件](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html)。

**Amazon MSK (Apache Kafka 的受管串流）**  
4.1 的新叢集在其自己的 VPC 中支援此功能。下列步驟將協助您搭配 MSK 使用 VPC 加密。
+ 客戶在沒有其他 MSK 叢集的 VPC 上啟用 VPC 加密
+ 客戶使用 Kafka 4.1 版和 M7g 的執行個體類型建立叢集

### 區域和區域限制
<a name="regional-zone-limitations"></a>
+ **本機區域子網路**：強制執行模式中不支援 - 必須從 VPC 刪除

### VPC 對等互連支援
<a name="vpc-peering-support"></a>

為了確保兩個 VPCs 之間使用 VPC 對等互連傳輸中的加密，兩個 VPCs 必須位於相同區域，並在沒有任何排除的情況下以強制執行模式開啟加密控制。如果您想要將加密強制執行的 VPC 對等對等至位於不同區域的另一個 VPC，或未啟用強制執行模式的加密控制 （沒有排除），則必須建立對等排除。

如果兩個 VPCs處於強制執行模式並彼此對等，則您無法將模式從強制執行變更為監控。您必須先建立對等排除，才能修改要監控的 VPC 加密控制模式。

### 傳輸閘道加密支援
<a name="transit-gateway-encryption-support"></a>

您必須在 Transit Gateway 上明確啟用加密支援，以加密已開啟加密控制的 VPCs之間的流量。在現有的 Transit Gateway 上啟用加密不會對現有流量造成干擾，而且 VPC 連接遷移到加密通道將順暢自動發生。兩個 VPCs之間透過 Transit Gateway 以強制執行模式 （不含排除） 周遊 100% 加密通道的流量。傳輸閘道上的加密也可讓您連接兩個處於不同加密控制模式VPCs。當您想要在連接到non-encryption-enforced加密強制執行 VPC 的 VPC 中強制執行加密控制時，您應該使用它。在這種情況下，加密強制執行 VPC 內的所有流量都會加密，包括 VPC 間流量。加密強制執行 VPC 中的資源與 Transit Gateway 之間的 VPC 間流量會加密。除此之外，加密取決於流量在非強制執行 VPC 中傳送至的資源，且不保證會加密 （因為 VPC 未處於強制執行模式）。所有 VPCs位於相同的區域。（請參閱[此處](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-encryption-support.html)的詳細資訊）。

![\[具有不同加密控制狀態VPCs 之間的流量流程\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/vpc-enc-control-arch.png)

+ 在此圖表中，VPC 1、VPC 2 和 VPC3 在強制模式下具有加密控制，並且它們連接到在監控模式下執行加密控制的 VPC 4。
+ VPC1, VPC2 和 VPC3 之間的所有流量都會加密。
+ 為了詳細說明，VPC 1 中的資源與 VPC 4 中的資源之間的任何流量都會加密，直到 Transit Gateway 使用 nitro 系統硬體提供的加密為止。除了加密狀態之外， 還取決於 VPC 4 中的資源，且不保證會加密。

如需 Transit Gateway 加密支援的詳細資訊，請參閱[傳輸閘道文件](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-encryption-support.html)。

## 定價
<a name="pricing"></a>

如需定價資訊，請參閱 [Amazon VPC 定價](https://aws.amazon.com/vpc/pricing/)。

## AWS CLI 命令參考
<a name="cli-commands-reference"></a>

### 設定與組態
<a name="setup-configuration"></a>
+ [aws ec2 create-vpc-encryption-control](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-encryption-control.html)
+ [aws ec2 modify-vpc-encryption-control](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-encryption-control.html)
+ [aws ec2 tgw modify-transit-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-transit-gateway.html)

### 監控和疑難排解
<a name="monitoring-troubleshooting"></a>
+ [aws ec2 describe-vpc-encryption-controls](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-encryption-controls.html)
+ [aws ec2 get-vpc-resources-blocking-encryption-enforcement](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-vpc-resources-blocking-encryption-enforcement.html)
+ [aws ec2 create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html)
+ [aws ec2 describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html)
+ [aws 日誌查詢](https://docs.aws.amazon.com/cli/latest/reference/logs/query.html)

### 清除
<a name="cleanup"></a>
+ [aws ec2 delete-vpc-encryption-control](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc-encryption-control.html)

## 其他資源
<a name="additional-resources"></a>

如需詳細設定說明，請參閱部落格[介紹 VPC 加密控制：強制執行區域內 VPCs內和之間傳輸中的加密](https://aws.amazon.com/blogs/aws/introducing-vpc-encryption-controls-enforce-encryption-in-transit-within-and-across-vpcs-in-a-region)。

如需更詳細的 API 資訊，請參閱 [EC2 API 參考指南](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html)。