Azure Web Application Firewall은 일반적인 악용과 취약성으로부터 웹 애플리케이션을 중앙 집중식으로 보호합니다. 모든 Azure Web Application Firewall 기능은 정책 내에 존재하며, 게이트웨이 API YAML 구성 내의 수신기 또는 경로 기반 라우팅 규칙에서 참조할 수 있습니다.
컨테이너용 Application Gateway 구현
보안 정책
컨테이너용 Application Gateway는 Azure Resource Manager에서 SecurityPolicy라는 새 자식 리소스를 도입합니다.
SecurityPolicy 리소스는 ALB 컨트롤러가 참조할 수 있는 Azure Web Application Firewall 정책의 범위를 가져옵니다.
Kubernetes 사용자 지정 리소스
컨테이너용 Application Gateway는 라는 WebApplicationFirewallPolicy새 사용자 지정 리소스를 도입합니다. 사용자 지정 리소스는 어떤 Azure Web Application Firewall 정책을 어떤 범위에서 사용해야 하는지 정의하는 역할을 합니다.
WebApplicationFirewallPolicy 리소스는 다음 Kubernetes 리소스를 대상으로 할 수 있습니다.
GatewayHTTPRoute
WebApplicationFirewallPolicy 리소스는 추가 세분성을 위해 이름으로 다음 섹션을 참조할 수도 있습니다.
-
Gateway:Listener
예제 구현
게이트웨이 리소스로 정책 범위 지정
다음은 지정된 Application Gateway for Containers 프런트 엔드 리소스의 모든 수신기에 적용되는 게이트웨이 리소스를 대상으로 하는 예제 YAML 구성입니다.
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: contoso-waf-route
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
게이트웨이 리소스의 특정 수신기로 정책 범위 지정
Gateway 리소스 내에서 다른 수신기(예: contoso.com 및 fabrikam.com)로 정의된 호스트 이름이 다를 수 있습니다. contoso.com listenerA의 호스트 이름이고 fabrikam.com listenerB의 호스트 이름인 경우 적절한 수신기(예: contoso.com 수신기A)를 선택하는 속성을 정의 sectionNames 할 수 있습니다.
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: contoso-waf-route
namespace: test-infra
sectionNames: ["contoso-listener"]
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
모든 경로 및 경로에서 정책의 범위 설정
이 예제에서는 정의된 HTTPRoute 리소스를 대상으로 지정하여 지정된 HTTPRoute 리소스 내의 모든 라우팅 규칙 및 경로에 정책을 적용하는 방법을 보여 줍니다.
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathA
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
특정 경로로 정책 범위 지정
동일한 Gateway 또는 게이트웨이 -> 수신기 sectionName의 다른 경로에 서로 다른 WAF 정책을 사용하려면 각각 해당 WAF 정책을 참조하는 고유한 경로를 사용하여 두 개의 HTTPRoute 리소스를 정의할 수 있습니다.
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy-A
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathA
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-0
---
apiVersion: alb.networking.azure.io/v1
kind: WebApplicationFirewallPolicy
metadata:
name: sample-waf-policy-B
namespace: test-infra
spec:
targetRef:
group: gateway.networking.k8s.io
kind: HTTPRoute
name: contoso-pathB
namespace: test-infra
webApplicationFirewall:
id: /subscriptions/.../Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy-1
제한점
다음 기능은 컨테이너용 Application Gateway와 연결된 Azure Web Application Firewall 정책에서 지원되지 않습니다.
- 지역 간, 구독 간 정책: WAF 정책은 Application Gateway for Containers 리소스와 동일한 구독 및 지역에 있어야 합니다.
- CRS(핵심 규칙 집합) 관리 규칙: 컨테이너용 Application Gateway WAF는 DRS(기본 규칙 집합) 관리 규칙 집합만 지원합니다.
- 레거시 봇 관리자 규칙 집합: Bot Manager 규칙 집합 0.1은 지원되지 않지만 Bot Manager 규칙 집합 버전 1.0 및 1.1이 지원됩니다.
- Bot Manager 규칙에 대한 JavaScript 챌린지 작업: Bot Manager 규칙의 작업을 JavaScript 챌린지로 설정할 수 없습니다.
- Bot Manager 규칙에 대한 Captcha 챌린지 작업: 봇 관리자 규칙의 작업을 Captcha로 설정할 수 없습니다.
- Microsoft Security Copilot: 컨테이너 WAF용 Application Gateway에서는 Microsoft Security Copilot이 지원되지 않습니다.
- 사용자 지정 블록 응답: WAF 정책에서 사용자 지정 블록 응답 설정은 컨테이너 WAF용 Application Gateway에서 지원되지 않습니다.
- XFF(X-Forwarded-For) 헤더: 컨테이너용 Application Gateway WAF는 사용자 지정 규칙에서 XFF 변수를 지원하지 않습니다.
- HTTP DDoS 규칙 집합: 이 관리되는 규칙 집합은 컨테이너용 Application Gateway에서 지원되지 않습니다.
Pricing
가격 책정 세부 정보는 컨테이너용 Application Gateway에 대한 가격 책정 이해를 참조하세요.