第5章 チュートリアル: AWS WAF と AWS ALB を使用した ROSA ワークロードの保護
AWS WAF は Web アプリケーションファイアウォールです。保護対象の Web アプリケーションリソースに転送される HTTP および HTTPS 要求を監視できます。
AWS Application Load Balancer (ALB) を使用して、Red Hat OpenShift Service on AWS (ROSA) ワークロードに Web Application Firewall (WAF) を追加できます。外部ソリューションを使用すると、WAF の処理によるサービス拒否から ROSA リソースを保護できます。
ALB ベースのソリューションを絶対に使用する必要がある場合を除き、より柔軟な CloudFront メソッド を使用することを推奨します。
5.1. 前提条件
複数のアベイラビリティーゾーン (AZ) ROSA (HCP または Classic) クラスター。
注記AWS ドキュメントによると、AWS ALB には AZ 全体にわたって少なくとも 2 つの public サブネットが必要です。このため、ALB では複数の AZ ROSA クラスターのみを使用できます。
-
OpenShift CLI (
oc
) にアクセスできる。 -
AWS CLI (
aws
) にアクセスできる。
5.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}"
5.1.2. AWS VPC とサブネット
このセクションは、既存の VPC にデプロイされたクラスターにのみ適用されます。クラスターを既存の VPC にデプロイしなかった場合は、このセクションをスキップして、その後のインストールセクションに進んでください。
以下の変数を、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)
です。
クラスター識別子を使用して、クラスターの VPC にタグを追加します。
$ aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
パブリックサブネットにタグを追加します。
$ 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}
プライベートサブネットにタグを追加します。
$ 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}