View a markdown version of this page

安全 - AWS 上的分散式負載測試

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

安全

當您在 AWS 基礎設施上建置系統時,安全責任會由您和 AWS 共同承擔。此共同責任模型可減少您的操作負擔,因為 AWS 會操作、管理和控制元件,包括主機作業系統、虛擬化層,以及服務操作所在設施的實體安全性。如需 AWS 安全性的詳細資訊,請造訪 AWS Cloud Security

IAM 角色

AWS Identity and Access Management (IAM) 角色可讓客戶將精細的存取政策和許可指派給 AWS 雲端上的服務和使用者。此解決方案會建立 IAM 角色,授予解決方案的 AWS Lambda 函數建立區域資源的存取權。

Amazon CloudFront

此解決方案部署託管在 Amazon S3 儲存貯體中的 Web UI,該儲存貯體由 Amazon CloudFront 分發。為了協助減少延遲並改善安全性,此解決方案包含具有原始存取身分的 CloudFront 分佈,這是提供解決方案網站儲存貯體內容公開存取的 CloudFront 使用者。根據預設,CloudFront 分佈會使用 TLS 1.2 來強制執行最高層級的安全通訊協定。如需詳細資訊,請參閱《Amazon CloudFront 開發人員指南》中的限制對 Amazon S3 原始伺服器的存取Amazon CloudFront

CloudFront 會啟用其他安全緩解措施,將 HTTP 安全標頭附加到每個檢視器回應。如需詳細資訊,請參閱在 CloudFront 回應中新增或移除 HTTP 標頭

此解決方案使用預設 CloudFront 憑證,其具有 TLS v1.0 的最低支援安全通訊協定。若要強制使用 TLS v1.2 或 TLS v1.3,您必須使用自訂 SSL 憑證,而非預設 CloudFront 憑證。如需詳細資訊,請參閱如何將 CloudFront 分佈設定為使用 SSL/TLS 憑證

Amazon API Gateway

此解決方案部署邊緣最佳化的 Amazon API Gateway 端點,以使用預設 APIs Gateway 端點而非自訂網域為負載測試功能提供 RESTful API。對於使用預設端點的邊緣最佳化 APIs,API Gateway 會使用 TLS-1-0 安全政策。如需詳細資訊,請參閱《Amazon APIs》中的使用 REST API。 Amazon API Gateway

此解決方案使用預設 API Gateway 憑證,其具有 TLS v1.0 的最低支援安全通訊協定。若要強制使用 TLS v1.2 或 TLS v1.3,您必須使用具有自訂 SSL 憑證的自訂網域,而非預設 API Gateway 憑證。如需詳細資訊,請參閱設定 REST APIs的自訂網域名稱

AWS Fargate 安全群組

根據預設,此解決方案會將 AWS Fargate 安全群組的傳出規則開放給大眾。如果您想要封鎖 AWS Fargate 到處傳送流量,請將傳出規則變更為特定無類別網域間路由 (CIDR)。

此安全群組也包含傳入規則,允許連接埠 50,000 上任何屬於相同安全群組的來源的本機流量。這用於允許容器彼此通訊。

Amazon VPC

VPC:以 Amazon VPC 服務為基礎的虛擬私有雲端 (VPC) 為您提供 AWS 雲端中邏輯上隔離的私有網路。

您可以在部署期間在 AWS CloudFormation 參數中指定自己的 VPC。VPC 僅供產生負載的 ECS 任務使用;Web 主控台和 API 不會部署在此 VPC 中。如果您未指定現有的 VPC,解決方案將使用所需的聯網組態建立新的 VPC。如果您選擇使用現有的 VPC,則必須符合下列要求,才能成功執行負載測試任務。

VPC 要求

與 AWS 上的分散式負載測試搭配使用的 VPC 最低需求如下所示。

  • VPC 必須至少包含兩個 AZs

  • VPC 必須至少包含兩個子網路,每個子網路都位於個別的 AZ 中

  • VPC 子網路可以是公有或私有,但必須使用相同的組態 (公有或私有)

  • VPC 必須提供 ECR、CloudWatch Logs、S3 和 IoT Core 端點的存取權。

  • VPC 必須提供負載測試鎖定目標的 (服務) 存取權。

注意

如果您沒有符合這些條件的 VPC,您可以使用 VPC 精靈快速建立 VPC。如需詳細資訊,請參閱建立一個 VPC

公有子網路可以滿足這些要求,方法是包含下列項目:

  • 連接至 VPC 的網際網路閘道

  • 網際網路閘道的路由 (0.0.0.0/0)

私有子網路可能會透過使用 NAT Gateway 或 VPC 端點來滿足這些需求,如下所述。

選項 1:NAT 閘道

  • 在具有私有子網路的每個 AZ 中部署 NAT 閘道

  • 設定路由表以透過 NAT Gateway 路由網際網路繫結流量 (0.0.0.0/0)

選項 2:VPC 端點

在 VPC 中建立下列 VPC 端點:

  • Amazon ECR API 端點: com.amazonaws.<region>.ecr.api

  • Amazon ECR DKR 端點: com.amazonaws.<region>.ecr.dkr

  • Amazon CloudWatch Logs 端點: com.amazonaws.<region>.logs

  • Amazon S3 Gateway 端點: com.amazonaws.<region>.s3

  • AWS IoT Core 端點 (如果使用即時資料圖表則為必要) com.amazonaws.<region>.iot.data

其他 VPC 組態也可能運作。

重要

連接到每個 VPC 端點界面的安全群組必須允許來自 ECS 任務安全群組的連接埠 443 上的傳入 TCP 流量。

安全群組組態

在部署期間,解決方案會在 VPC 中建立安全群組,以允許 ECS 叢集中具有任務的下列流量:

  • 所有傳出流量

  • 連接埠 50000 上的傳入流量來自相同安全群組中的其他任務,以促進工作者和領導者任務之間的協調。

網路壓力測試

您有責任根據 Amazon EC2 測試政策使用此解決方案。此政策涵蓋從 Amazon EC2 執行個體執行到其他 Amazon EC2 執行個體、AWS 服務或外部端點的大量網路測試。這些測試有時稱為壓力測試、負載測試或遊戲日測試。檢閱政策以了解網路壓力測試和 DDoS 模擬之間的差異 (EC2 上禁止,DDoS 模擬測試政策另外涵蓋),並注意 AWS 可能會採用流量工程或在高流量量下進行調整。執行大量測試之前,請參閱政策頁面以了解目前的閾值和指引。

限制對公有使用者介面的存取

限制 Web 主控台存取的方法取決於您選擇的部署選項。

預設 (CloudFront + S3) 部署 — 若要限制存取 IAM 和 Amazon Cognito 提供的身分驗證和授權機制以外的公開使用者介面,您可以將 AWS WAF Web ACL 與 CloudFront 分佈建立關聯。請考慮使用 AWS WAF 安全自動化解決方案,該解決方案會部署一組預先設定的 AWS WAF 規則,以篩選常見的 Web 型攻擊。預設 CloudFront + S3 範本不會自動部署 WAF 資源。

ALB + ECS Fargate 部署 — 解決方案會自動在 ALB 前面部署 AWS WAF Web ACL,其中包含可針對常見 Web 型攻擊提供基準保護的受管規則。您可以自訂 WAF 規則以符合您的特定安全需求,包括新增 IP 型允許或封鎖清單、地理限制、速率限制或其他 AWS 受管規則群組。如需修改 WAF 組態的說明,請參閱部署說明中的 WAF 整合一節。

MCP 伺服器安全性 (選用)

如果您部署選用的 MCP Server 整合,解決方案會使用 Amazon Bedrock AgentCore Gateway 提供安全的存取,以載入 AI 代理器的測試資料。AgentCore Gateway 會驗證每個請求的 Amazon Cognito 身分驗證字符,確保只有授權使用者才能存取 MCP 伺服器。MCP Server Lambda 函數實作唯讀存取模式,防止 AI 代理器修改測試組態或結果。所有 MCP 伺服器互動都使用與 Web 主控台相同的許可界限和存取控制。

ALB + ECS Fargate 託管 Web 主控台安全性 (選用)

如果您選擇 ALB + ECS Fargate 部署選項,則適用下列安全性考量:

  • VPC 封鎖公開存取相容性 — ALB + ECS Fargate 選項專為 VPC 封鎖公開存取 (BPA) 政策封鎖來自公有 CloudFront 分佈的流量的環境而設計。ALB 可以部署為 VPC 中的內部負載平衡器,只能透過您的公司網路、VPN 或 AWS PrivateLink 存取,符合零公有網際網路暴露要求。

  • ACM 憑證管理 — ALB 使用 ACM 憑證來終止 HTTPS。您有責任確保憑證保持有效,並在過期前續約。ACM 會自動續約其管理的憑證,但匯入的憑證必須手動續約。如需詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的受管憑證續約

  • AWS WAF 保護 — 預設會使用 ALB + ECS Fargate 範本部署 WAF。如需詳細資訊,請參閱限制對公有使用者介面的存取

無周邊 (使用您自己的 Web 伺服器) 安全性 (選用)

如果您選擇無周邊部署選項,並在您自己的 Web 伺服器上託管 Web 主控台,您必須負責下列安全性考量:

  • HTTPS 組態 — 我們強烈建議在 Web 伺服器上設定 HTTPS。

  • 存取控制 — 您有責任在 Web 伺服器上實作存取控制、防火牆規則和網路安全。

  • 安全強化:將組織的安全強化標準套用至 Web 伺服器,包括修補、監控和入侵偵測。

第三方測試架構

AWS 上的分散式負載測試綁定三個第三方測試架構:Apache JMeter、Grafana K6 和 Locust。在 AWS 共同責任模型下,您有責任在執行負載測試之前,評估這些架構及其綁定版本是否符合組織的安全需求。解決方案會在建置時間和執行時間使用 SHA512 檢查總和來分配每個架構,而無需修改並驗證綁定的二進位檔。

如需安裝每個架構的時間及其佈建方式的詳細資訊,請參閱測試架構佈建

Apache JMeter

Apache JMeter 的綁定版本具有已知的安全漏洞,無法在未中斷與 Taurus 測試自動化架構和解決方案所依賴的 JMeter 外掛程式生態系統相容性的情況下從外部完全修補。在執行負載測試之前,請檢閱 Apache JMeter 安全建議,並評估它們是否可能對您造成安全漏洞。

注意

Apache JMeter 也會在單一 HTTP 端點測試類型的許可下執行。當您在 Web 主控台中設定 URL、方法、標頭和內文承載時,解決方案會產生 JMeter 測試計劃,並使用綁定的 JMeter 二進位檔執行它。因此,本節所述的 JMeter 安全考量也適用於單一 HTTP 端點測試。

如果您需要 JMeter 的修補版本,您有兩個選項。這兩個選項都需要測試封存,且僅適用於 JMeter 測試類型:

  • 提供修補的 JMeter 二進位檔 — 在測試存檔中包含修補的 JMeter 二進位檔。解決方案會使用二進位檔取代綁定版本。

  • 覆寫個別外掛程式 JARs — 使用外掛程式覆寫機制,將特定易受攻擊的外掛程式 JARs 取代為修補程式版本。如需詳細資訊,請參閱 JMeter 測試

單一 HTTP 端點測試類型不接受測試封存,因此無法覆寫綁定的 JMeter 二進位或外掛程式。如果您需要使用修補的 JMeter 執行 HTTP 端點測試,請使用 JMeter 測試類型,並提供 JMeter 指令碼 (.jmx) 或包含修補的 JMeter 二進位檔或外掛程式 JARs .zip 封存檔。

Grafana K6

K6 是根據 AGPL-3.0 授權發行。當您建立新的 K6 測試時,Web 主控台會顯示授權確認訊息。在此解決方案發行時,K6 套件版本中未發現已知的安全漏洞。解決方案不會持續監控 K6 是否有新的漏洞;您必須負責在 K6 使用期間針對您的安全需求評估 K6。

Locust

在此解決方案發行時,並未在 Locust 的套件版本中發現已知的安全漏洞。解決方案不會持續監控 Locust 是否有新的漏洞;您負責在整個使用過程中根據您的安全需求評估 Locust。