

# Protegendo seu gateway com AWS WAF
<a name="gateway-waf"></a>

Você pode usar o AWS WAF com o Amazon Bedrock AgentCore Gateway para proteger seu gateway contra explorações da web, tráfego de bots e ataques volumétricos. AWS O WAF fornece uma camada de segurança em linha que avalia todas as solicitações recebidas antes que elas atinjam suas metas.

Quando você associa uma lista de controle de acesso à web (Web ACL) do AWS WAF ao seu gateway, o AWS WAF inspeciona cada solicitação de entrada e aplica as regras que você configura. Solicitações que correspondem a uma regra de bloqueio são rejeitadas antes de atingirem qualquer alvo. Você associa uma ACL da web no nível do gateway, com uma ACL da web por gateway.

## Como AWS O WAF funciona com seu gateway
<a name="gateway-waf-how-it-works"></a>

Quando você associa uma Web ACL ao seu gateway, ocorre o seguinte fluxo de solicitações:

1. Um cliente envia uma solicitação para o endpoint do gateway.

1.  AWS O WAF avalia a solicitação em relação às regras na ACL da web associada.

1. Se a solicitação for permitida, o gateway a encaminhará para o destino apropriado.

1. Se a solicitação for bloqueada, o gateway retornará um erro ao cliente sem encaminhar a solicitação.

 AWS O WAF avalia cada solicitação de entrada em linha. Quando nenhuma ACL da web está associada ao seu gateway, não há sobrecarga e nenhuma avaliação do AWS WAF ocorre.

## Pré-requisitos
<a name="gateway-waf-prerequisites"></a>

Antes de associar uma Web ACL ao seu gateway, certifique-se de atender aos seguintes requisitos:
+ Seu AWS WAF web ACL deve existir na mesma AWS região do seu gateway.
+ Você deve usar uma ACL da web regional. CloudFront Não há suporte para ACLs da web (globais).
+ Seu gateway deve estar no `READY` estado.
+ Sua identidade do IAM deve ter as seguintes permissões:
  +  `wafv2:AssociateWebACL` 
  +  `wafv2:DisassociateWebACL` 
  +  `wafv2:GetWebACLForResource` 
  +  `wafv2:ListResourcesForWebACL` 
  +  `bedrock-agentcore:GatewayAssociateWebACL` 
  +  `bedrock-agentcore:GatewayDisassociateWebACL` 
  +  `bedrock-agentcore:GatewayGetWebACLForResource` 
  +  `bedrock-agentcore:GatewayListResourcesForWebACL` 

## Associando uma ACL da web ao seu gateway
<a name="gateway-waf-associate"></a>

Você pode associar uma Web ACL ao seu gateway usando o console AWS WAF ou a CLI AWS . Um gateway pode ter no máximo uma Web ACL. No entanto, uma Web ACL pode ser associada a vários gateways. Para alterar a ACL da web associada ao seu gateway, associe uma nova ACL da web. A nova associação substitui a existente.

Para associar uma Web ACL ao seu gateway usando a AWS CLI, execute o seguinte comando:

```
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
```

Substitua os valores do ARN pelo ARN da Web ACL e pelo ARN do gateway.

## Desassociando uma Web ACL do seu gateway
<a name="gateway-waf-disassociate"></a>

Para remover a proteção AWS WAF do seu gateway, desassocie a Web ACL. Você deve desassociar qualquer Web ACL do seu gateway antes de excluir o gateway.

Para desassociar uma Web ACL do seu gateway usando a AWS CLI, execute o seguinte comando:

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

Substitua o valor do ARN pelo ARN do gateway.

## Configurando o   AWS Modo de falha do WAF
<a name="gateway-waf-failure-mode"></a>

Se o AWS WAF estiver inacessível ou expirar durante a avaliação da solicitação, o gateway usará o modo de falha configurado para determinar se deseja bloquear ou permitir a solicitação.

 `FAIL_CLOSE`   
O gateway bloqueia a solicitação. Esse é o comportamento padrão.

 `FAIL_OPEN`   
O gateway permite que a solicitação chegue ao destino sem a avaliação do AWS WAF.

Para configurar o modo de falha, use a `UpdateGateway` API com o `wafConfiguration` parâmetro:

```
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"}'
```

**Importante**  
O modo de falha padrão é`FAIL_CLOSE`, que fornece uma abordagem que prioriza a segurança. Use `FAIL_OPEN` somente quando a disponibilidade for mais importante do que a segurança para sua carga de trabalho.

## AWS Tratamento de respostas do WAF
<a name="gateway-waf-response-handling"></a>

Quando o AWS WAF bloqueia uma solicitação, a resposta de erro depende do tipo de destino:

Metas do MCP  
Solicitações bloqueadas retornam um JSON-RPC erro com o código `-32002` e a mensagem`"Authorization error - Request forbidden"`.

Alvos HTTP e de passagem  
Solicitações bloqueadas retornam HTTP 403.

Se o AWS WAF atingir o tempo limite com a `FAIL_CLOSE` configuração, o gateway retornará o mesmo erro de uma solicitação bloqueada. Se o AWS WAF retornar um erro 5xx, os alvos MCP receberão um JSON-RPC erro com o código `-32603` e a mensagem. `"Internal error - Server error"`

## Monitoramento AWS Atividade do WAF
<a name="gateway-waf-monitoring"></a>

Você pode monitorar a atividade AWS do WAF no seu gateway usando CloudWatch as métricas da Amazon.

As métricas a seguir estão disponíveis no `AWS/Bedrock-AgentCore` namespace:


| Métrica | Description | 
| --- | --- | 
|  `WafBlocks`  | A contagem de solicitações bloqueadas pelo AWS WAF, incluindo respostas de bloqueio padrão e personalizadas. | 
|  `WafFailOpens`  | A contagem de solicitações em que o AWS WAF estava inacessível e o modo de falha do gateway é`FAIL_OPEN`, portanto, a solicitação foi encaminhada ao destino sem a avaliação do WAF. AWS Valores sustentados diferentes de zero indicam que seu gateway está deixando o tráfego passar sem a inspeção do AWS WAF. | 
|  `WafFailCloses`  | A contagem de solicitações em que o AWS WAF estava inacessível e o modo de falha do gateway está`FAIL_CLOSE`, portanto, a solicitação foi rejeitada. Valores sustentados diferentes de zero indicam que seu gateway está reduzindo o tráfego devido à inacessibilidade do WAF. AWS  | 

Para obter detalhes em nível de regra sobre solicitações bloqueadas, use o registro do AWS WAF. Você pode correlacionar o ID da solicitação nos registros do gateway com os registros do AWS WAF.

## Cotas e limitações
<a name="gateway-waf-quotas"></a>

As cotas e limitações a seguir se aplicam à integração do AWS WAF com seu gateway:
+ Máximo de 100 associações de ACL da web por conta.
+  AWS A associação do WAF está somente no nível do gateway, não por alvo. Para aplicar regras diferentes a destinos diferentes, use regras AWS WAF baseadas em caminhos de URI.
+  AWS A integração do WAF está disponível em AWS regiões onde o AWS WAF e o AgentCore Gateway estão disponíveis.

## Práticas recomendadas
<a name="gateway-waf-best-practices"></a>

Recomendamos as seguintes práticas ao usar o AWS WAF com seu gateway:
+ Use grupos de regras de regras AWS gerenciadas para obter proteções comuns contra ameaças conhecidas.
+ Implemente regras baseadas em taxas para se proteger contra ataques volumétricos.
+ Use IP-based regras para permitir ou negar fontes conhecidas.
+ Teste as regras AWS do WAF no `COUNT` modo antes de mudar `BLOCK` para entender o impacto no seu tráfego.
+ Monitore as `WafFailCloses` métricas `WafBlocks``WafFailOpens`, e para ajustar suas regras e identificar problemas.
+ Use o `FAIL_CLOSE` modo padrão para cargas de trabalho sensíveis à segurança. Use `FAIL_OPEN` somente quando a disponibilidade for crítica e você tiver outros controles de segurança em vigor.