

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

# 使用以下方法保护您的网关 Amazon WAF
<a name="gateway-waf"></a>

您可以将 Amazon WAF 与 Amazon Bedrock AgentCore Gateway 结合使用，以保护您的网关免受网络漏洞、机器人流量和容量攻击。 Amazon WAF 提供了一个内联安全层，可在所有入站请求到达目标之前对其进行评估。

当您将 Amazon WAF Web 访问控制列表 (Web ACL) 与网关关联时， Amazon WAF 会检查每个入站请求并应用您配置的规则。匹配屏蔽规则的请求在到达任何目标之前都会被拒绝。您在网关级别关联一个 Web ACL，每个网关关联一个 Web ACL。

## 操作方法 Amazon WAF 可与您的网关配合使用
<a name="gateway-waf-how-it-works"></a>

当您将 Web ACL 与网关关联时，会出现以下请求流：

1. 客户端向您的网关终端节点发送请求。

1.  Amazon WAF 根据关联的 Web ACL 中的规则评估请求。

1. 如果允许该请求，则网关会将其路由到相应的目标。

1. 如果请求被阻止，网关会在不转发请求的情况下向客户端返回错误。

 Amazon WAF 会在线评估每个入站请求。如果没有 Web ACL 与您的网关关联，则开销为零，也不会进行 Amazon WAF 评估。

## 先决条件
<a name="gateway-waf-prerequisites"></a>

在将 Web ACL 与网关关联之前，请确保满足以下要求：
+ 您的 Amazon WAF Web ACL 必须与您的网关位于同一个 Amazon 区域中。
+ 您必须使用区域性网页 ACL。 CloudFront （全局）不支持 Web ACL。
+ 您的网关必须处于`READY`状态。
+ 您的 IAM 身份必须具有以下权限：
  +  `wafv2:AssociateWebACL` 
  +  `wafv2:DisassociateWebACL` 
  +  `wafv2:GetWebACLForResource` 
  +  `wafv2:ListResourcesForWebACL` 
  +  `bedrock-agentcore:GatewayAssociateWebACL` 
  +  `bedrock-agentcore:GatewayDisassociateWebACL` 
  +  `bedrock-agentcore:GatewayGetWebACLForResource` 
  +  `bedrock-agentcore:GatewayListResourcesForWebACL` 

## 将 Web ACL 与您的网关关联
<a name="gateway-waf-associate"></a>

您可以使用 Amazon WAF 控制台或 CL Amazon I 将 Web ACL 与网关关联。一个网关最多可以有一个 Web ACL。但是，一个 Web ACL 可以与多个网关关联。要更改与您的网关关联的 Web ACL，请关联一个新的 Web ACL。新协会取代了现有协会。

要使用 CL Amazon I 将 Web ACL 与您的网关关联，请运行以下命令：

```
aws wafv2 associate-web-acl \
    --web-acl-arn arn:aws:wafv2:us-east-1:123456789012:regional/webacl/my-web-acl/a1b2c3d4-5678-90ab-cdef-example11111 \
    --resource-arn arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-id
```

将 ARN 值替换为您的 Web ACL ARN 和网关 ARN。

## 断开 Web ACL 与网关的关联
<a name="gateway-waf-disassociate"></a>

要从您的网关中移除 Amazon WAF 保护，请取消关联 Web ACL。必须先取消任何 Web ACL 与网关的关联，然后才能删除网关。

要使用 CL Amazon I 解除 Web ACL 与网关的关联，请运行以下命令：

```
aws wafv2 disassociate-web-acl \
    --resource-arn arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-id
```

将 ARN 值替换为您的网关 ARN。

## 配置   Amazon WAF 故障模式
<a name="gateway-waf-failure-mode"></a>

如果 Amazon WAF 在请求评估期间无法访问或超时，则网关使用配置的故障模式来确定是阻止还是允许请求。

 `FAIL_CLOSE`   
网关阻止了该请求。这是默认行为。

 `FAIL_OPEN`   
网关允许在没有 Amazon WAF 评估的情况下将请求传送到目标。

要配置故障模式，请使用带有以下`wafConfiguration`参数`UpdateGateway`的 API：

```
aws bedrock-agentcore-control update-gateway \
    --gateway-identifier my-gateway-id \
    --name my-gateway \
    --role-arn arn:aws:iam::123456789012:role/my-gateway-service-role \
    --authorizer-type CUSTOM_JWT \
    --authorizer-configuration '{
      "customJWTAuthorizer": {
        "discoveryUrl": "https://cognito-idp.us-east-1.amazonaws.com/my-user-pool/.well-known/openid-configuration",
        "allowedClients": ["clientId"]
      }
    }' \
    --waf-configuration '{"failureMode": "FAIL_OPEN"}'
```

**重要**  
默认故障模式为`FAIL_CLOSE`，它提供了一种安全优先的方法。`FAIL_OPEN`仅在工作负载的可用性比安全性更关键时使用。

## Amazon WAF 响应处理
<a name="gateway-waf-response-handling"></a>

当 Amazon WAF 阻止请求时，错误响应取决于您的目标类型：

MCP 目标  
被屏蔽的请求会返回 JSON-RPC 错误的代码`-32002`和消息`"Authorization error - Request forbidden"`。

HTTP 和直通目标  
被阻止的请求返回 HTTP 403。

如果 Amazon WAF 在`FAIL_CLOSE`配置后超时，则网关会返回与被阻止的请求相同的错误。如果 Amazon WAF 返回 5xx 错误，MCP 目标将收到包含代码`-32603`和 JSON-RPC 消息的错误。`"Internal error - Server error"`

## 监控 Amazon WAF 活动
<a name="gateway-waf-monitoring"></a>

您可以使用亚马逊 CloudWatch 指标监控网关的 Amazon WAF 活动。

`AWS/Bedrock-AgentCore`命名空间中有以下指标可用：


| 指标 | 说明 | 
| --- | --- | 
|  `WafBlocks`  | 被 Amazon WAF 阻止的请求数，包括默认和自定义区块响应。 | 
|  `WafFailOpens`  | 无法访问 Amazon WAF 且网关的故障模式为`FAIL_OPEN`，因此请求在没有 Amazon WAF 评估的情况下转发到目标的请求数。持续的非零值表示您的网关在未经过 Amazon WAF 检查的情况下允许流量通过。 | 
|  `WafFailCloses`  | 无法访问 Amazon WAF 且网关的故障模式为`FAIL_CLOSE`，因此请求被拒绝的请求数。持续的非零值表示由于 Amazon WAF 无法访问，您的网关正在丢失流量。 | 

要获取有关被阻止请求的规则级别详细信息，请使用 Amazon WAF 日志记录。您可以将网关日志中的请求 ID 与 Amazon WAF 日志相关联。

## 配额和限制
<a name="gateway-waf-quotas"></a>

以下配额和限制适用于 Amazon WAF 与您的网关的集成：
+ 每个账户最多 100 个 Web ACL 关联。
+  Amazon WAF 关联仅在网关级别，不在每个目标层面。要对不同的目标应用不同的规则，请使用基于 URI 路径的 Amazon WAF 规则。
+  Amazon WAF 集成适用于同时提供 Amazon WAF 和 AgentCore 网关的 Amazon 区域。

## 最佳实践
<a name="gateway-waf-best-practices"></a>

在网关中使用 Amazon WAF 时，我们建议采取以下做法：
+ 使用 Amazon 管理规则规则组来提供针对已知威胁的常见保护。
+ 实施基于速率的规则以防范容量攻击。
+ 使用 IP-based 规则将已知来源列入许可名单或拒绝列入名单。
+ 在切换到`COUNT`模式之前，先在模式下测试 Amazon WAF 规则，`BLOCK`以了解其对流量的影响。
+ 监控`WafBlocks``WafFailOpens`、和`WafFailCloses`指标以调整您的规则并发现问题。
+ 对安全敏感型工作负载使用默认`FAIL_CLOSE`模式。`FAIL_OPEN`仅在可用性至关重要且有其他安全控制措施时使用。