本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon 的網路安全最佳實務 ECS
網路安全性是包含數個子主題的廣泛主題。其中包括 encryption-in-transit、網路分割和隔離、防火牆、流量路由和可觀測性。
傳輸中加密
加密網路流量可防止未經授權的使用者在經由網路傳輸資料時攔截和讀取資料。使用 Amazon 時ECS,可以透過下列任何方式實作網路加密。
-
使用服務網格 (TLS):
透過 AWS App Mesh,您可以設定使用網格端點部署的 Envoy 代理之間的TLS連線。兩個範例為虛擬節點和虛擬閘道。TLS 憑證可以來自 AWS Certificate Manager (ACM)。或者,此憑證可以來自您自己的私人憑證授權機構。
-
使用 Nitro 執行個體:
根據預設,會自動加密下列 Nitro 執行個體類型之間的流量:C5n、G4、I3en、M5dn、M5n、P3dn、R5dn 和 R5n。當流量透過傳輸閘道、負載平衡器或類似媒介進行路由時,不會加密流量。
-
搭配 Application Load Balancer 使用伺服器名稱指示 (SNI):
Application Load Balancer (ALB) 和 Network Load Balancer (NLB) 支援伺服器名稱指示 ()SNI。透過使用 SNI,您可以將多個安全應用程式放在單一接聽程式後方。因此,每個 都有自己的TLS憑證。建議您使用 AWS Certificate Manager (ACM) 為負載平衡器佈建憑證,然後將其新增至接聽程式的憑證清單。 AWS 負載平衡器搭配 使用智慧憑證選取演算法SNI。如果用戶端提供的主機名稱符合憑證清單中的單一憑證,負載平衡器會選擇該憑證。如果用戶端提供的主機名稱符合清單中的多個憑證,負載平衡器會選取用戶端可支援的憑證。範例包括自我簽署憑證或透過 產生的憑證ACM。
-
End-to-end 使用TLS憑證加密:
這涉及使用任務部署TLS憑證。這可以是自我簽署的憑證,也可以是受信任憑證授權機構的憑證。您可以透過參考憑證的秘密來取得憑證。否則,您可以選擇執行向 發出憑證簽署請求 (CSR) 的容器,ACM然後將產生的秘密掛載到共用磁碟區。
任務聯網
下列建議會考量 Amazon ECS的運作方式。Amazon ECS不使用覆蓋網路。反之,任務會設定為在不同的網路模式下運作。例如,設定為使用 bridge
模式的任務會從每部主機上執行的 Docker 網路取得不可路由的 IP 地址。設定為使用 awsvpc
網路模式的任務會從主機的子網路取得 IP 地址。設定為使用 host
網路的任務會使用主機的網路介面。awsvpc
是偏好的網路模式。這是因為此模式為唯一可用來為任務指派安全群組的模式。它也是 Amazon 上可用於 AWS Fargate 任務的唯一模式ECS。
任務的安全群組
建議您將任務設定為使用 awsvpc
網路模式。將任務設定為使用此模式後,Amazon ECS代理程式會自動佈建並將彈性網路介面 (ENI) 連接至任務。佈建 ENI 時,任務會註冊到 AWS 安全群組中。安全群組做為虛擬防火牆,可用於控制傳入及傳出的流量。
AWS PrivateLink 和 Amazon ECS
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端點。
為 Amazon AWS PrivateLink 設定端點 ECS
如有必要,您應該設定 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。
注意
由於容器的暫時性本質,流程日誌不一定是分析不同容器或容器以及其他網路資源之間流量模式的有效方法。