第 7 章 教程: 使用 AWS WAF 和 AWS ALB 来保护 ROSA 工作负载


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

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

重要

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

7.1. 前提条件

  • 多个可用区(AZ) ROSA (HCP 或 Classic)集群。

    注意

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

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

7.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}"

7.1.2. AWS VPC 和子网

注意

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

  1. 将以下变量设置为您的 ROSA 部署的正确值:

    $ 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
    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}
  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}
  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}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.