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 ECS 上唯一可用於 AWS Fargate 任務的模式。

任務的安全群組

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

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

重要

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

Amazon ECR 和 Amazon ECS 都支援端點政策。這些政策可讓您完善服務的 API 存取。例如,您可以為 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 屬性的條件來進一步增強此功能。這樣可以防止由不屬於 AWS Organizations. 如需詳細資訊,請參閱 aws:PrincipalOrgID

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

容器代理設定

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

重要

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

網路安全性建議

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

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

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

現代瀏覽器在連接至不安全的站點時警告使用者。如果面向大眾的負載平衡器前端是您的伺服器,請使用 TLS/SSL 加密從用戶端瀏覽器到負載平衡器的流量,並在授權時重新加密至後端。

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

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

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

當網路流量需要嚴格隔離時,在不同的 Amazon VPC 中建立 Amazon ECS 叢集

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

您應該在保固時設定 AWS PrivateLink 端點端點。如果您的安全政策阻止您將 Internet Gateway (IGW) 連接到 Amazon VPC,請為 Amazon ECS 和其他服務 (例如 Amazon ECR 和 Amazon) 設定 AWS PrivateLink 端點。 AWS Secrets Manager CloudWatch

使用 Amazon VPC 流程日誌來分析 Amazon ECS 中長時間執行任務的流量

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

注意

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