將 AWS WAF Web ACL 與您的服務產生關聯 - AWS App Runner

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

將 AWS WAF Web ACL 與您的服務產生關聯

AWS WAF 是一個 Web 應用程序防火牆,可用於保護您的應用程序運行器服務。使用 AWS WAF Web 訪問控制列表(Web ACL),您可以保護您的應用程序 Runner 服務端點免受常見的 Web 漏洞攻擊和不需要的漫遊器。

Web ACL 為您提供了對應用程序運行器服務的所有傳入 Web 請求的精細控制。您可以在 Web ACL 中定義規則,以允許、封鎖或監控 Web 流量,以確保只有經過授權和合法的要求才會傳送到您的 Web 應用程式和 API。您可以根據特定的業務和安全性需求自訂 Web ACL 規則。若要進一步了解基礎設施安全性和套用網路 ACL 的最佳實務,請參閱 Amazon VPC 使用者指南中的控制網路流量

重要

與 WAF Web ACL 相關聯的應用程式執行器私人服務的來源 IP 規則不遵守 IP 型規則。這是因為我們目前不支援將要求來源 IP 資料轉送至與 WAF 相關聯的 App Runner 私人服務。如果您的應用程式執行器應用程式需要來源 IP/CIDR 傳入流量控制規則,您必須針對私有端點使用安全群組規則,而不是 WAF Web ACL。

傳入的 Web 請求流程

當 AWS WAF Web ACL 與應用程式執行器服務相關聯時,傳入的 Web 要求會執行下列程序:

  1. 應用程序運行器將原始請求的內容轉發到 AWS WAF。

  2. AWS WAF 檢查請求並將其內容與您在 Web ACL 中指定的規則進行比較。

  3. 根據其檢查, AWS WAF 返回allowblock響應應用程序運行器。

    • 如果傳回回allow應,App Runner 會將要求轉寄至您的應用程式。

    • 如果傳回回block應,應用程式執行器會封鎖要求,避免到達您的 Web 應用程式。它轉發從您的block應用程序 AWS WAF 的響應。

      注意

      默認情況下,如果沒有響應返回,則應用程序運行器阻止請求 AWS WAF。

如需有關 AWS WAF Web ACL 的詳細資訊,請參閱AWS WAF 開發人員指南中的 Web 存取控制清單 (Web ACL)

注意

您需要支付標準 AWS WAF 定價。您不需要為應用程式執行器服務使用 AWS WAF Web ACL 產生任何額外費用。 如需有關定價的詳細資訊,請參閱AWS WAF 定價

將 WAF 網絡 ACL 關聯到您的應用程序運行器服務

以下是將 AWS WAF Web ACL 與您的應用程式執行器服務相關聯的高階程序:

  1. 在 AWS WAF 主控台中建立 Web ACL。如需詳細資訊,請參AWS WAF 開發人員指南中的建立 Web ACL

  2. 更新您的 AWS Identity and Access Management (IAM) 許可 AWS WAF。如需詳細資訊,請參閱 許可

  3. 使用下列其中一種方法,將 Web ACL 與應用程式執行器服務產生關聯:

    • 應用程式執行器主控台立或新應用程式執行器服務時,使用應用程式執行器主控台關聯現有的 Web ACL。如需指示,請參閱管理 AWS WAF 網路 ACL

    • AWS WAF 控制台:使用控制 AWS WAF 台為現有的應用程序運行器服務關聯 Web ACL。如需詳細資訊,請參閱開發人員指南中的建立 Web ACL 與 AWS 資源的關聯或取消關聯。AWS WAF

    • AWS CLI:使用公用 API 建立網路 ACL 的 AWS WAF 關聯。如需有關 AWS WAF 公用 API 的詳細資訊,請參閱 AWS WAF API 參考指南中的 AssociateWebACL

考量事項

  • 與 WAF Web ACL 相關聯的應用程式執行器私人服務的來源 IP 規則不遵守 IP 型規則。這是因為我們目前不支援將要求來源 IP 資料轉送至與 WAF 相關聯的 App Runner 私人服務。如果您的應用程式執行器應用程式需要來源 IP/CIDR 傳入流量控制規則,您必須針對私有端點使用安全群組規則,而不是 WAF Web ACL。

  • 一個應用程式執行器服務只能與一個 Web ACL 產生關聯。但是,您可以將一個 Web ACL 與多個應用程式執行器服務以及多個 AWS 資源相關聯。範例包括 Amazon Cognito 使用者集區和 Application Load Balancer 資源。

  • 建立 Web ACL 時,在 Web ACL 完全傳播之前會經過少量時間,並且可供應用程式執行器使用。傳輸時間可以是幾秒鐘到分鐘數。 AWS WAF WAFUnavailableEntityException當您嘗試在網頁 ACL 完全傳播之前建立關聯時,會傳回 a。

    如果您在 Web ACL 完全傳播之前重新整理瀏覽器或離開 App Runner 主控台,則關聯將無法發生。但是,您可以在應用程序運行器控制台中進行導航。

  • AWS WAF 當您呼叫處於無效狀態的 App Runner 服務的下列其中一個 AWS WAF API 時,會傳回WAFNonexistentItemException錯誤:

    • AssociateWebACL

    • DisassociateWebACL

    • GetWebACLForResource

    您的應用程序運行器服務的無效狀態包括:

    • CREATE_FAILED

    • DELETE_FAILED

    • DELETED

    • OPERATION_IN_PROGRESS

      注意

      OPERATION_IN_PROGRESS只有當您的應用程序運行器服務被刪除時,狀態才無效。

  • 您的請求可能會導致承載大於 AWS WAF 可檢查內容的限制。有關如何 AWS WAF 處理來自 App Runner 的過大請求的詳細信息,請參閱AWS WAF 開發人員指南中的超大請求組件處理,以了解如何 AWS WAF 處理來自 App Runner 的過大請求。

  • 如果您未設定適當的規則或流量模式變更,Web ACL 可能無法有效保護您的應用程式。

許可

若要使用中的 Web ACL AWS App Runner,請新增下列的 IAM 許可 AWS WAF:

  • apprunner:ListAssociatedServicesForWebAcl

  • apprunner:DescribeWebAclForService

  • apprunner:AssociateWebAcl

  • apprunner:DisassociateWebAcl

如需 IAM 許可的詳細資訊,請參閱 IAM 使用者指南中的 IAM 中的政策和許可。

以下是更新後的 IAM 政策範例 AWS WAF。此 IAM 政策包含與應用程式執行器服務搭配使用的必要許可。

{ { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "wafv2:ListResourcesForWebACL", "wafv2:GetWebACLForResource", "wafv2:AssociateWebACL", "wafv2:DisassociateWebACL", "apprunner:ListAssociatedServicesForWebAcl", "apprunner:DescribeWebAclForService", "apprunner:AssociateWebAcl", "apprunner:DisassociateWebAcl" ], "Resource":"*" } ] }
注意

雖然您必須授與 IAM 許可,但列出的操作僅限許可,並且不對應於 API 操作。