第 6 章 教程: 使用 AWS WAF 和 AWS ALBs 来保护 Red Hat OpenShift Service on AWS 工作负载


AWS WAF 是一个 Web 应用程序防火墙,可让您监控转发到您受保护的 Web 应用程序资源的 HTTP 和 HTTPS 请求。

您可以使用 AWS Application Load Balancer (ALB)将 Web Application Firewall (WAF)添加到 Red Hat OpenShift Service on AWS 工作负载中。使用外部解决方案可防止 Red Hat OpenShift Service on AWS 资源因为处理 WAF 而导致拒绝服务的问题。

重要

建议您使用更灵活的 CloudFront 方法,除非绝对必须使用基于 ALB 的解决方案。

6.1. 先决条件

  • AWS 集群上的多个可用区(AZ) Red Hat OpenShift Service。

    注意

    根据 AWS 文档,AWS ALB 在 AZ 之间至少需要两个 公共子网。因此,只有多个 AZ Red Hat OpenShift Service on AWS 集群可以与 ALBs 一起使用。

  • 您可以访问 OpenShift CLI(oc)。
  • 您可以访问 AWS CLI (aws)。

6.1.1. 环境设置

  • 准备环境变量:

    $ export AWS_PAGER=""
    $ export CLUSTER=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
    $ export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}")
    $ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster -o jsonpath='{.spec.serviceAccountIssuer}' | sed  's|^https://||')
    $ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
    $ export SCRATCH="/tmp/${CLUSTER}/alb-waf"
    $ mkdir -p ${SCRATCH}
    $ echo "Cluster: $(echo ${CLUSTER} | sed 's/-[a-z0-9]\{5\}$//'), Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
    Copy to Clipboard Toggle word wrap

6.1.2. AWS VPC 和子网

注意

本节只适用于部署到现有 VPC 的集群。如果您没有将集群部署到现有的 VPC 中,请跳过本节并继续进行下面的安装部分。

  1. 将以下变量设置为 Red Hat OpenShift Service on AWS 部署的正确值:

    $ export VPC_ID=<vpc-id> 
    1
    
    $ export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>) 
    2
    
    $ export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>) 
    3
    Copy to Clipboard Toggle word wrap
    1
    使用集群的 VPC ID 替换,例如: export VPC_ID=vpc-04c429b7dbc4680ba
    2
    使用空格分隔集群的专用子网 ID 列表替换,确保保留 ()。例如: export PUBLIC_SUBNET_IDS=(subnet-056fd6861ad332ba2 subnet-08ce3b4ec753fe74c subnet-071aa28228664972f)
    3
    使用空格分隔集群的专用子网 ID 列表替换,确保保留 ()。例如: export PRIVATE_SUBNET_IDS=(subnet-0b933d72a8d72c36a subnet-0817eb72070f1d3c2 subnet-0806e64159b66665a)
  2. 使用集群标识符向集群的 VPC 添加标签:

    $ aws ec2 create-tags --resources ${VPC_ID} \
      --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
    Copy to Clipboard Toggle word wrap
  3. 在您的公共子网中添加标签:

    $ aws ec2 create-tags \
      --resources ${PUBLIC_SUBNET_IDS} \
      --tags Key=kubernetes.io/role/elb,Value='1' \
            Key=kubernetes.io/cluster/${CLUSTER},Value=shared \
      --region ${REGION}
    Copy to Clipboard Toggle word wrap
  4. 在您的专用子网中添加标签:

    $ aws ec2 create-tags \
      --resources ${PRIVATE_SUBNET_IDS} \
      --tags Key=kubernetes.io/role/internal-elb,Value='1' \
            Key=kubernetes.io/cluster/${CLUSTER},Value=shared \
      --region ${REGION}
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat