Amazon 的網路安全最佳實務 ECS - Amazon Elastic Container Service

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

Amazon 的網路安全最佳實務 ECS

網路安全性是包含數個子主題的廣泛主題。其中包括 encryption-in-transit、網路分割和隔離、防火牆、流量路由和可觀測性。

傳輸中加密

加密網路流量可防止未經授權的使用者在經由網路傳輸資料時攔截和讀取資料。使用 Amazon 時ECS,可以透過下列任何方式實作網路加密。

任務聯網

下列建議會考量 Amazon ECS的運作方式。Amazon ECS不使用覆蓋網路。反之,任務會設定為在不同的網路模式下運作。例如,設定為使用 bridge 模式的任務會從每部主機上執行的 Docker 網路取得不可路由的 IP 地址。設定為使用 awsvpc 網路模式的任務會從主機的子網路取得 IP 地址。設定為使用 host 網路的任務會使用主機的網路介面。awsvpc 是偏好的網路模式。這是因為此模式為唯一可用來為任務指派安全群組的模式。它也是 Amazon 上可用於 AWS Fargate 任務的唯一模式ECS。

任務的安全群組

建議您將任務設定為使用 awsvpc 網路模式。將任務設定為使用此模式後,Amazon ECS代理程式會自動佈建並將彈性網路介面 (ENI) 連接至任務。佈建 ENI 時,任務會註冊到 AWS 安全群組中。安全群組做為虛擬防火牆,可用於控制傳入及傳出的流量。

AWS PrivateLink 是一種聯網技術,可讓您為不同的 AWS 服務建立私有端點,包括 Amazon ECS。在沙盒環境中,如果 Amazon 沒有連接網際網路閘道 (IGW),VPC也沒有網際網路的替代路由,則需要端點。使用 AWS PrivateLink 可確保對 Amazon ECS服務的呼叫保留在 Amazon 內VPC,並且不會周遊網際網路。如需如何為 Amazon ECS和其他相關服務建立 AWS PrivateLink 端點的說明,請參閱 Amazon ECS 介面 Amazon VPC端點

重要

AWS Fargate 任務不需要 Amazon 的 AWS PrivateLink 端點ECS。

Amazon ECR和 Amazon ECS都支援端點政策。這些政策可讓您精簡對服務 的存取APIs。例如,您可以為 Amazon 建立端點政策ECR,僅允許將影像推送至特定 AWS 帳戶中的登錄。這類政策可用來防止資料透過容器映像外洩,同時允許使用者推送至授權的 Amazon ECR 登錄檔。如需詳細資訊,請參閱使用VPC端點政策

下列政策允許帳戶中的所有 AWS 主體僅針對 Amazon ECR儲存庫執行所有動作:

{ "Statement": [ { "Sid": "LimitECRAccess", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "arn:aws:ecr:region:account_id:repository/*" }, ] }

您可以透過設定使用新 PrincipalOrgID 屬性的條件來進一步增強此功能。這可防止不屬於 的IAM主體推拉影像 AWS Organizations。如需詳細資訊,請參閱 aws:PrincipalOrgID

建議對 com.amazonaws.region.ecr.dkrcom.amazonaws.region.ecr.api 端點套用相同的政策。

容器代理程式設定

Amazon ECS容器代理程式組態檔案包含數個與網路安全相關的環境變數。 ECS_AWSVPC_BLOCK_IMDS ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST 用於封鎖任務對 Amazon EC2中繼資料的存取。 HTTP_PROXY 用於設定代理程式透過HTTP代理路由以連線至網際網路。如需設定代理程式和 Docker 執行時間以透過代理路由的指示,請參閱HTTP代理組態

重要

這些設定在您使用 AWS Fargate時無法使用。

網路安全建議

建議您在設定 Amazon VPC、負載平衡器和網路時執行下列動作。

在適用於 Amazon 的情況下使用網路加密 ECS

您應該在適用的情況下使用網路加密。如果資料包含持卡人資料DSS,例如 PCI 等特定合規程式會要求您加密傳輸中的資料。如果您的工作負載有類似的需求,請設定網路加密。

現代瀏覽器在連接至不安全的站點時警告使用者。如果您的服務由面向公有的負載平衡器預付,請使用 TLS/SSL 來加密從用戶端瀏覽器到負載平衡器的流量,並在必要時重新加密到後端。

使用awsvpc網路模式和安全群組來控制 Amazon 中任務和其他資源之間的流量 ECS

當您需要控制任務之間以及任務與其他網路資源之間的流量時,您應該使用 awsvpc 網路模式和安全群組。如果您的服務位於 之後ALB,請使用安全群組,只允許使用與 相同的安全群組來自其他網路資源的傳入流量ALB。如果您的應用程式位於 後方NLB,請將任務的安全群組設定為僅允許來自 Amazon VPCCIDR範圍的傳入流量,以及指派給 的靜態 IP 地址NLB。

安全群組也應該用來控制任務與 Amazon RDS 資料庫VPC等 Amazon 內其他資源之間的流量。

需要嚴格隔離網路流量VPCs時,在個別 Amazon 中建立 Amazon ECS叢集

當需要嚴格隔離網路流量VPCs時,您應該在單獨的 Amazon 中建立叢集。避免在叢集上執行具有嚴格安全要求的工作負載,而工作負載不必遵循這些要求。強制進行嚴格網路隔離時,請在個別 Amazon 中建立叢集VPCs,並使用 Amazon VPC端點選擇性地VPCs將服務公開給其他 Amazon。如需詳細資訊,請參閱 Amazon VPC端點。

如有必要,您應該設定 AWS PrivateLink 端點端點。如果您的安全政策阻止您將網際網路閘道 (IGW) 連接至您的 Amazon VPCs,請設定 Amazon ECS和其他服務的 AWS PrivateLink 端點,例如 Amazon ECR、 AWS Secrets Manager和 Amazon CloudWatch。

使用 Amazon VPC Flow Logs 來分析 Amazon 中長時間執行任務的往返流量 ECS

您應該使用 Amazon VPC Flow Logs 來分析長時間執行任務的往返流量。使用awsvpc網路模式的任務會取得自己的 ENI。為此,您可以使用 Amazon VPC Flow Logs 監控往返個別任務的流量。Amazon VPC Flow Logs (v3) 的最新更新會將流量中繼資料豐富到日誌中,包括 vpc ID、子網路 ID 和執行個體 ID。此中繼資料可用於協助縮小調查範圍。如需詳細資訊,請參閱 Amazon VPC Flow Logs。

注意

由於容器的暫時性本質,流程日誌不一定是分析不同容器或容器以及其他網路資源之間流量模式的有效方法。