能否通过AWS CDK为ApplicationLoadBalancedFargateService添加WAF防护?
AWS WAF 配置:ApplicationLoadBalancedFargateService 相关问题解答
核心问题解答
1. 能否直接为负载均衡器添加WAF,还是必须部署在CloudFront之后?
可以直接为Application Load Balancer(ALB)关联AWS WAF,无需依赖CloudFront。AWS WAF支持与三类资源绑定:CloudFront分发、ALB、API Gateway。你的项目中ApplicationLoadBalancedFargateService默认使用的就是ALB,因此完全可以直接给该ALB绑定WebACL实现防护。
2. 控制台创建WebACL能否关联ApplicationLoadBalancedFargateService实例?
WebACL关联的是底层的ALB资源,而非Fargate服务实例本身。通过CDK创建ApplicationLoadBalancedFargateService时,CDK会自动生成对应的ALB。在AWS控制台创建WebACL时,选择关联资源类型为「Application Load Balancer」,找到CDK生成的目标ALB即可完成绑定,无需直接关联Fargate服务实例。
CDK代码示例(为ALB绑定WebACL)
如果需要在CDK中直接集成WAF配置,可参考以下TypeScript示例:
import * as cdk from 'aws-cdk-lib'; import { ApplicationLoadBalancedFargateService } from 'aws-cdk-lib/aws-ecs-patterns'; import { WebACL, Scope, ManagedRuleGroup } from 'aws-cdk-lib/aws-wafv2'; const app = new cdk.App(); const stack = new cdk.Stack(app, 'FargateWafStack'); // 创建带ALB的Fargate服务 const fargateService = new ApplicationLoadBalancedFargateService(stack, 'MyFargateService', { taskImageOptions: { image: cdk.aws_ecs.ContainerImage.fromRegistry('nginx'), // 示例镜像 }, cpu: 256, memoryLimitMiB: 512, }); // 创建区域级WebACL(适配ALB) const webAcl = new WebACL(stack, 'MyWebAcl', { scope: Scope.REGIONAL, defaultAction: { allow: {} }, rules: [ // 添加AWS托管核心防护规则示例 { name: 'AWSManagedRulesCommonRuleSet', priority: 1, statement: { managedRuleGroupStatement: { vendorName: 'AWS', name: 'AWSManagedRulesCommonRuleSet', }, }, overrideAction: { none: {} }, visibilityConfig: { sampledRequestsEnabled: true, cloudWatchMetricsEnabled: true, metricName: 'CommonRuleSetMetric', }, }, ], }); // 关联WebACL到Fargate服务的ALB webAcl.associateWithApplicationLoadBalancer('AclAlbAssociation', { applicationLoadBalancer: fargateService.loadBalancer, }); app.synth();
内容的提问来源于stack exchange,提问作者Gordon MacDonald
相关产品推荐
相关产品推荐

