将 AWS WAF Web ACL 与您的服务关联 - AWS App Runner

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 AWS WAF Web ACL 与您的服务关联

AWS WAF 是一个 Web 应用程序防火墙,您可以使用它来保护您的 App Runner 服务。借助 AWS WAF Web 访问控制列表 (Web ACL),您可以保护您的 App Runner 服务端点免受常见的 Web 漏洞和不想要的机器人的侵害。

Web ACL 可让您精细控制所有传入 App Runner 服务的 Web 请求。您可以在 Web ACL 中定义规则,以允许、阻止或监控 Web 流量,确保只有经过授权和合法的请求才能到达您的 Web 应用程序和 API。您可以根据自己的特定业务和安全需求自定义 Web ACL 规则。要详细了解基础设施安全和应用网络 ACL 的最佳实践,请参阅 A mazon VPC 用户指南中的控制网络流量

重要

与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WAF Web ACL。

传入的 Web 请求流

当 AWS WAF Web ACL 与 App Runner 服务关联时,传入的 Web 请求将经过以下过程:

  1. App Runner 会将原始请求的内容转发给。 AWS WAF

  2. AWS WAF 检查请求并将其内容与您在 Web ACL 中指定的规则进行比较。

  3. 根据其检查,向 App Runner AWS WAF 返回allowblock响应。

    • 如果返回allow响应,App Runner 会将请求转发给您的应用程序。

    • 如果返回block响应,App Runner 会阻止该请求到达您的 Web 应用程序。它会将来自的block响应转发 AWS WAF 给您的应用程序。

      注意

      默认情况下,如果没有返回任何响应,App Runner 会阻止该请求 AWS WAF。

有关 AWS WAF Web ACL 的更多信息,请参阅《AWS WAF 开发人员指南》中的 Web 访问控制列表 (Web ACL)

注意

您需要支付标准 AWS WAF 价格。在 App Runner 服务中使用 AWS WAF 网页 ACL 不会产生任何额外费用。 有关定价的更多信息,请参阅AWS WAF 定价

将 WAF 网页 ACL 关联到你的 App Runner 服务

以下是将 AWS WAF Web ACL 与 App Runner 服务关联的高级流程:

  1. 在 AWS WAF 控制台中创建 Web ACL。有关更多信息,请参阅《AWS WAF 开发者指南》中的创建 Web ACL

  2. 更新您的 AWS Identity and Access Management (IAM) 权限 AWS WAF。有关更多信息,请参阅 权限

  3. 使用以下方法之一将 Web ACL 与 App Runner 服务相关联:

    • App Runner 控制台创建更新 App Runner 服务时,使用 App Runner 控制台关联现有的 Web ACL。有关说明,请参阅管理 AWS WAF Web ACL

    • AWS WAF 控制台:使用控制 AWS WAF 台为现有 App Runner 服务关联 Web ACL。有关更多信息,请参阅 AWS WAF 开发人员指南中的将 Web ACL 与 AWS 资源关联或取消关联

    • AWS CLI:使用 AWS WAF 公共 API 关联 Web ACL。有关 AWS WAF 公共 API 的更多信息,请参阅 AWS WAF API 参考指南中的 AssociateWebACL

注意事项

  • 与 WAF Web ACL 关联的 App Runner 私有服务的源 IP 规则不符合基于 IP 的规则。这是因为我们目前不支持将请求源 IP 数据转发到与 WAF 关联的 App Runner 私有服务。如果您的 App Runner 应用程序需要源 IP/CIDR 传入流量控制规则,则必须对私有端点使用安全组规则,而不是 WAF Web ACL。

  • 一个 App Runner 服务只能与一个 Web ACL 关联。但是,您可以将一个 Web ACL 与多个 App Runner 服务和多个 AWS 资源相关联。示例包括 Amazon Cognito 用户池和 Application Load Balancer 资源。

  • 创建 Web ACL 时,经过一小段时间后,Web ACL 才会完全传播并可用于 App Runner。传播时间可以从几秒钟到几分钟不等。 AWS WAF WAFUnavailableEntityException当您尝试在 Web ACL 完全传播之前将其关联时,会返回。

    如果您在 Web ACL 完全传播之前刷新浏览器或离开了 App Runner 控制台,则关联将失败。但是,您可以在 App Runner 控制台中导航。

  • AWS WAF 当您为处于无效状态的 App Runner 服务调用以下 AWS WAF API 之一时,会返回WAFNonexistentItemException错误:

    • AssociateWebACL

    • DisassociateWebACL

    • GetWebACLForResource

    您的 App Runner 服务的无效状态包括:

    • CREATE_FAILED

    • DELETE_FAILED

    • DELETED

    • OPERATION_IN_PROGRESS

      注意

      OPERATION_IN_PROGRESS仅当你的 App Runner 服务被删除时,状态才无效。

  • 您的请求可能会导致有效载荷大于 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 策略包括使用 App Runner 服务的必要权限。

{ { "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 操作。