使用 AWS WAF 保護您的閘道
您可以搭配 Amazon Bedrock AgentCore Gateway 使用 AWS WAF 來保護閘道免受 Web 入侵、機器人流量和磁碟區攻擊。 AWS WAF 提供內嵌安全層,可在所有傳入請求到達目標之前對其進行評估。
當您將 AWS WAF Web 存取控制清單 (Web ACL) 與閘道建立關聯時, AWS WAF 會檢查每個傳入請求,並套用您設定的規則。符合封鎖規則的請求會在到達任何目標之前遭到拒絕。您可以將閘道層級的 Web ACL 與每個閘道的一個 Web ACL 建立關聯。
AWS WAF 如何與您的閘道搭配使用
當您將 Web ACL 與閘道建立關聯時,會發生下列請求流程:
-
用戶端傳送請求到您的閘道端點。
-
AWS WAF 會根據相關聯 Web ACL 中的規則評估請求。
-
如果允許請求,閘道會將其路由到適當的目標。
-
如果請求遭到封鎖,閘道會將錯誤傳回給用戶端,而不轉送請求。
AWS WAF 會評估內嵌的每個傳入請求。當沒有 Web ACL 與您的閘道相關聯時,不會產生額外負荷,也不會發生 AWS WAF 評估。
先決條件
將 Web ACL 與閘道建立關聯之前,請確定您符合下列要求:
-
您的 AWS WAF Web ACL 必須與閘道位於相同的 AWS 區域中。
-
您必須使用區域 Web ACL。不支援 CloudFront (全域) Web ACLs。
-
您的閘道必須處於
READY狀態。 -
您的 IAM 身分必須具有下列許可:
-
wafv2:AssociateWebACL -
wafv2:DisassociateWebACL -
wafv2:GetWebACLForResource -
wafv2:ListResourcesForWebACL -
bedrock-agentcore:GatewayAssociateWebACL -
bedrock-agentcore:GatewayDisassociateWebACL -
bedrock-agentcore:GatewayGetWebACLForResource -
bedrock-agentcore:GatewayListResourcesForWebACL
-
將 Web ACL 與您的閘道建立關聯
您可以使用 AWS WAF 主控台或 CLI 將 Web ACL AWS 與閘道建立關聯。一個閘道最多可以有一個 Web ACL。不過,一個 Web ACL 可以與多個閘道建立關聯。若要變更與閘道相關聯的 Web ACL,請關聯新的 Web ACL。新的關聯會取代現有的關聯。
若要使用 CLI 將 Web ACL AWS 與您的閘道建立關聯,請執行下列命令:
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 與閘道的關聯
若要從閘道移除 AWS WAF 保護,請取消 Web ACL 的關聯。您必須先取消任何 Web ACL 與閘道的關聯,才能刪除閘道。
若要使用 AWS CLI 取消 Web ACL 與閘道的關聯,請執行下列命令:
aws wafv2 disassociate-web-acl \ --resource-arn arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-id
將 ARN 值取代為您的閘道 ARN。
設定 AWS WAF 失敗模式
如果 AWS WAF 在請求評估期間無法連線或逾時,閘道會使用設定的失敗模式來決定是否封鎖或允許請求。
-
FAIL_CLOSE -
閘道會封鎖請求。這是預設行為。
-
FAIL_OPEN -
閘道允許透過 向目標提出請求,無需 AWS WAF 評估。
若要設定失敗模式,請使用 UpdateGateway API 搭配 wafConfiguration 參數:
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 只有當可用性比工作負載的安全性更重要時,才使用 。
AWS WAF 回應處理
當 AWS WAF 封鎖請求時,錯誤回應取決於您的目標類型:
- MCP 目標
-
封鎖的請求會傳回 JSON-RPC 錯誤,其中包含程式碼
-32002和訊息"Authorization error - Request forbidden"。 - HTTP 和傳遞目標
-
封鎖的請求會傳回 HTTP 403。
如果已FAIL_CLOSE設定 AWS WAF 逾時,閘道會傳回與封鎖請求相同的錯誤。如果 AWS WAF 傳回 5xx 錯誤,MCP 目標會收到 JSON-RPC 錯誤,其中包含程式碼-32603和訊息 "Internal error - Server error"。
監控 AWS WAF 活動
您可以使用 Amazon CloudWatch 指標監控閘道的 AWS WAF 活動。
AWS/Bedrock-AgentCore 命名空間提供下列指標:
| 指標 | 說明 |
|---|---|
|
|
AWS WAF 封鎖的請求計數,包括預設和自訂區塊回應。 |
|
|
無法連線 AWS WAF 且閘道失敗模式為 的請求計數 |
|
|
無法連線 AWS WAF 且閘道失敗模式為 的請求計數 |
若要取得有關封鎖請求的規則層級詳細資訊,請使用 AWS WAF 記錄。您可以將閘道日誌中的請求 ID 與 AWS WAF 日誌建立關聯。
限制和配額
下列配額和限制適用於 AWS WAF 與您的閘道整合:
-
每個帳戶最多 100 個 Web ACL 關聯。
-
AWS WAF 關聯僅位於閘道層級,而非每個目標。若要將不同的規則套用至不同的目標,請使用 URI 路徑型 AWS WAF 規則。
-
AWS WAF 整合可在同時使用 AWS WAF 和 AgentCore Gateway 的 AWS 區域中使用。
最佳實務
將 AWS WAF 與閘道搭配使用時,我們建議您採用下列實務:
-
使用 AWS 受管規則規則群組,針對已知威脅提供常見保護。
-
實作以速率為基礎的規則,以防止容積攻擊。
-
使用 IP 型規則來允許列出或拒絕列出已知來源。
-
在切換至 之前,在
COUNT模式下測試 AWS WAF 規則BLOCK,以了解對流量的影響。 -
監控
WafBlocks、WafFailOpens和WafFailCloses指標,以調整您的規則並識別問題。 -
針對安全敏感工作負載使用預設
FAIL_CLOSE模式。FAIL_OPEN僅在可用性至關重要且您擁有其他安全控制時,才使用 。