AWS WAF로 게이트웨이 보호
Amazon Bedrock AgentCore Gateway와 함께 AWS WAF를 사용하여 웹 악용, 봇 트래픽 및 볼륨 공격으로부터 게이트웨이를 보호할 수 있습니다. AWS WAF는 모든 인바운드 요청이 대상에 도달하기 전에 평가하는 인라인 보안 계층을 제공합니다.
AWS WAF 웹 액세스 제어 목록(웹 ACL)을 게이트웨이와 연결하면 AWS WAF는 모든 인바운드 요청을 검사하고 구성한 규칙을 적용합니다. 블록 규칙과 일치하는 요청은 대상에 도달하기 전에 거부됩니다. 게이트웨이 수준에서 웹 ACL을 게이트웨이당 하나의 웹 ACL과 연결합니다.
AWS WAF가 게이트웨이와 작동하는 방식
웹 ACL을 게이트웨이와 연결하면 다음과 같은 요청 흐름이 발생합니다.
-
클라이언트는 게이트웨이 엔드포인트에 요청을 보냅니다.
-
AWS WAF는 연결된 웹 ACL의 규칙을 기준으로 요청을 평가합니다.
-
요청이 허용되는 경우 게이트웨이는 요청을 적절한 대상으로 라우팅합니다.
-
요청이 차단되면 게이트웨이는 요청을 전달하지 않고 클라이언트에 오류를 반환합니다.
AWS WAF는 모든 인바운드 요청을 인라인으로 평가합니다. 게이트웨이와 연결된 웹 ACL이 없는 경우 오버헤드가 없으며 AWS WAF 평가가 수행되지 않습니다.
사전 조건
웹 ACL을 게이트웨이에 연결하기 전에 다음 요구 사항을 충족하는지 확인합니다.
-
AWS WAF 웹 ACL은 게이트웨이와 동일한 AWS 리전에 있어야 합니다.
-
리전 웹 ACL을 사용해야 합니다. CloudFront(글로벌) 웹 ACLs은 지원되지 않습니다.
-
게이트웨이가
READY상태여야 합니다. -
IAM 자격 증명에는 다음 권한이 있어야 합니다.
-
wafv2:AssociateWebACL -
wafv2:DisassociateWebACL -
wafv2:GetWebACLForResource -
wafv2:ListResourcesForWebACL -
bedrock-agentcore:GatewayAssociateWebACL -
bedrock-agentcore:GatewayDisassociateWebACL -
bedrock-agentcore:GatewayGetWebACLForResource -
bedrock-agentcore:GatewayListResourcesForWebACL
-
웹 ACL을 게이트웨이와 연결
AWS WAF 콘솔 또는 AWS CLI를 사용하여 웹 ACL을 게이트웨이와 연결할 수 있습니다. 하나의 게이트웨이에는 최대 하나의 웹 ACL이 있을 수 있습니다. 그러나 하나의 웹 ACL을 여러 게이트웨이와 연결할 수 있습니다. 게이트웨이와 연결된 웹 ACL을 변경하려면 새 웹 ACL을 연결합니다. 새 연결이 기존 연결을 대체합니다.
AWS CLI를 사용하여 웹 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 값을 웹 ACL ARN 및 게이트웨이 ARN으로 바꿉니다.
게이트웨이에서 웹 ACL 연결 해제
게이트웨이에서 AWS WAF 보호를 제거하려면 웹 ACL의 연결을 해제합니다. 게이트웨이를 삭제하려면 먼저 게이트웨이에서 웹 ACL의 연결을 해제해야 합니다.
AWS CLI를 사용하여 게이트웨이에서 웹 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 평가 없이 대상에 대한 요청을 허용합니다.
실패 모드를 구성하려면 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 경우에만를 사용합니다.
AWS WAF 응답 처리
AWS WAF가 요청을 차단하면 오류 응답은 대상 유형에 따라 달라집니다.
- MCP 대상
-
차단된 요청은 코드
-32002및 메시지와 함께 JSON-RPC 오류를 반환합니다"Authorization error - Request forbidden". - HTTP 및 패스스루 대상
-
차단된 요청은 HTTP 403을 반환합니다.
AWS WAF가 FAIL_CLOSE 구성된 시간이 초과되면 게이트웨이는 차단된 요청과 동일한 오류를 반환합니다. AWS WAF가 5xx 오류를 반환하면 MCP 대상은 코드-32603와 메시지가 포함된 JSON-RPC 오류를 수신합니다"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개의 웹 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경우에만를 사용합니다.