どうも、やん(@yan_tzn)です。 本日はMicrosoft Azure を使ったApplicationGatwayで保護されたWordPressサイトの構築手順をまとめたいと思います。 構成イメージは以下で、HTTPによる通信のみ行う予定です。
スポンサーリンク

ApplicationGatewayとは

Application Gatewayは、アプリケーション層で動作する負荷分散機能。 バックエンドのサーバへのトラフィックの分散であったり、HTTPSとHTTPへの変換を行うSSLオフロードや バックエンド間のエンド・ツー・エンドのHTTPS通信など行えます。 他にもWebアプリケーションファイアウォールの機能があり、Webアプリケーションの保護が可能です。 バックエンドの死活監視を常に自動で行っているため、異常があるアプリケーションには接続を行わないなどの機能がある。
docs.microsoft.com
スポンサーリンク

Application Gateway の作成

Application Gatewayを作成していきます。

1.リソースの作成からApplication Gatewayを検索して作成を押下

2.Application Gatewayの基本設定

Application Gatewayの名前を入力します。 今回は、レベル「Standard」、インスタンス数を「2」、SKUは「M」で作成します。 リソースグループを作成していない場合、ここで作成を行います。 入力できたらOKを押下します。

3.アプリケーションゲートウェイの作成

「仮想ネットワークの選択」から「新規作成」と進み、必要であればアドレス空間・サブネット名・サブネットを書き換えOKを押下します。 今回は、アドレス空間を「10.4.0.0/16」、サブネットを「10.4.0.0/24」としました。
DNS名ラベル名を記入します。
レベル「Standard」だとWAFがしようできないため「WAF層にアップグレード」にチェックを入れ、OKを押下します。

4.確認と作成

作成内容に問題なければOKを押下します。
スポンサーリンク

WordPress の作成

Application Gatewayのデプロイに時間がかかるので、その間にWordpressを構築します。

1.リソースの作成からWordpressを検索して作成を押下

MarketplaceからWordpressを選択して、作成を押下します。

2.Wordpressの構成情報を入力

Application Gatewayの基本設定で作成したリソースグループを選択します。

3.AppServiceプラン/場所の作成

AppServiceのプランを作成していきます。 「AppServiceプラン/場所の作成」から「新規作成」と進み、プラン名・リージョンの場所を入力します。 今回は、サビースの価格を「S1 Standard」としました。 他のプランと価格については、以下を参照してください。
azure.microsoft.com

4.データベースの作成

データベースの管理ユーザやパスワードを設定します。 パスワード以外はデフォルトのままとしています。 今回は、Application Insightsは使用しないため、このまま作成を押下します。
デプロイ完了を待ちます。

WordPress の設定

デプロイが完了したので、Wordpressにアクセスして設定を行います。
Wordpressの管理ユーザ・パスワード・メールアドレスを入力して作成を押下します。
Wordpressのトップページが表示されることを確認してください。

ApplicationGatewayのバックエンドプールにWordpressを配置する

ApplicationGatewayのデプロイが完了したので、バックエンドプールにWordpressを配置します。

1.PowerShellでコマンドを入力する

GUIで設定することも可能ですが、今回はPowerShellで設定します。 Azure ポータルからCloud shellを起動します。

# Get the list of subscriptions
Get-AzureRmSubscription
# Type your subscription ID
Select-AzureRmSubscription
# FQDN of the web app
$webappFQDN = "test-yantzn-wp.azurewebsites.net"
$gw = Get-AzureRmApplicationGateway -Name Test-AppGateway-yantzn -ResourceGroupName Test-yantzn-RG
# Define the status codes to match for the probe
$match=New-AzureRmApplicationGatewayProbeHealthResponseMatch -StatusCode 200-399
# Add a new probe to the application gateway
Add-AzureRmApplicationGatewayProbeConfig -name WebAppProbe -ApplicationGateway $gw -Protocol Http -Path / -Interval 30 -Timeout 120 -UnhealthyThreshold 3 -PickHostNameFromBackendHttpSettings -Match $match
# Retrieve the newly added probe
$probe = Get-AzureRmApplicationGatewayProbeConfig -name WebAppProbe -ApplicationGateway $gw
# Configure an existing backend http settings
Set-AzureRmApplicationGatewayBackendHttpSettings -Name appGatewayBackendHttpSettings -ApplicationGateway $gw -PickHostNameFromBackendAddress -Port 80 -Protocol http -CookieBasedAffinity Disabled -RequestTimeout 30 -Probe $probe
# Add the web app to the backend pool
Set-AzureRmApplicationGatewayBackendAddressPool -Name appGatewayBackendPool -ApplicationGateway $gw -BackendFqdns $webappFQDN
# Update the application gateway
Set-AzureRmApplicationGateway -ApplicationGateway $gw
<Your Subscription>には、Get-AzureRmSubscription で取得したIDを設定してください。 Get-AzureRmApplicationGateway -Name アプリケーションゲートウェイの名前 -ResourceGroupName リソースグループの名前という点に注意してください。
docs.microsoft.com

2.設定状況の確認

ApplicationGatewayのバックエンドプールから「appGatewayBackendPool」を選択します。 以下のように、Wordpressがバックエンドに設定されていれば成功です。

3.接続確認

Application Gatewayのフロントエンド パブリック IP アドレスでアクセスできるか確認を行います。
Application Gateway 経由で問題なくアクセスできれたため成功です。

WordPress への接続制限の設定

ここまでの設定だとWordpress に直接接続してしまっている状態となっています。 これでは、Application GatewayでWAFを設定している意味がありませんので、直接接続できないようにWordpress側に設定を行います。
「ネットワーク」を選択して「IP制限の構成」を押下します。
上記のようにApplication GatewayのパブリックIPだけを許可するように設定を行います。
接続できなければ成功です。

まとめ

Azureは触り始めたばかりのため掲載内容に間違いがあるかもしれません。 補足等あればTwitterでご連絡いただけると幸いです。 初めてAzureに触れて思うことは、どんどん触って覚えるしかないって感じですね。 今後もメモ程度にいろいろ記事投稿していきます。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事