それは仕様です。

「それは仕様です。」は雑記ブログです! 主にIT関連・考えたこと・勉強したことをここに残しています。 「Re:ゼロから言語の再勉強中。」

Azure ApplicationGatewayで保護されたWordpressサイトを構築する


f:id:yantzn:20190113171227p:plain

どうも、やん(@yan_tzn)です。

本日はMicrosoft Azure を使ったApplicationGatwayで保護されたWordPressサイトの構築手順をまとめたいと思います。

構成イメージは以下で、HTTPによる通信のみ行う予定です。

f:id:yantzn:20190113172316p:plain

ApplicationGatewayとは

Application Gatewayは、アプリケーション層で動作する負荷分散機能。

バックエンドのサーバへのトラフィックの分散であったり、HTTPSとHTTPへの変換を行うSSLオフロードや

バックエンド間のエンド・ツー・エンドのHTTPS通信など行えます。

他にもWebアプリケーションファイアウォールの機能があり、Webアプリケーションの保護が可能です。

バックエンドの死活監視を常に自動で行っているため、異常があるアプリケーションには接続を行わないなどの機能がある。

docs.microsoft.com

Application Gateway の作成

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

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

f:id:yantzn:20190113174235p:plain

f:id:yantzn:20190113174514p:plain

2.Application Gatewayの基本設定

f:id:yantzn:20190113195411p:plain

Application Gatewayの名前を入力します。

今回は、レベル「Standard」、インスタンス数を「2」、SKUは「M」で作成します。

リソースグループを作成していない場合、ここで作成を行います。

入力できたらOKを押下します。

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

f:id:yantzn:20190113195631p:plain

「仮想ネットワークの選択」から「新規作成」と進み、必要であればアドレス空間・サブネット名・サブネットを書き換えOKを押下します。

今回は、アドレス空間を「10.4.0.0/16」、サブネットを「10.4.0.0/24」としました。

f:id:yantzn:20190113195819p:plain

DNS名ラベル名を記入します。

f:id:yantzn:20190113182702p:plain

レベル「Standard」だとWAFがしようできないため「WAF層にアップグレード」にチェックを入れ、OKを押下します。

4.確認と作成

f:id:yantzn:20190113200010p:plain

作成内容に問題なければOKを押下します。

f:id:yantzn:20190113183053p:plain

Wordpress の作成

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

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

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

f:id:yantzn:20190113183540p:plain

2.Wordpressの構成情報を入力

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

f:id:yantzn:20190113184207p:plain

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

f:id:yantzn:20190113184851p:plain

AppServiceのプランを作成していきます。

「AppServiceプラン/場所の作成」から「新規作成」と進み、プラン名・リージョンの場所を入力します。

今回は、サビースの価格を「S1 Standard」としました。

他のプランと価格については、以下を参照してください。

azure.microsoft.com

4.データベースの作成

f:id:yantzn:20190113185849p:plain

データベースの管理ユーザやパスワードを設定します。

パスワード以外はデフォルトのままとしています。

今回は、Application Insightsは使用しないため、このまま作成を押下します。

f:id:yantzn:20190113190429p:plain

デプロイ完了を待ちます。

Wordpress の設定

デプロイが完了したので、Wordpressにアクセスして設定を行います。

f:id:yantzn:20190113191056p:plain

f:id:yantzn:20190113191307p:plain

f:id:yantzn:20190113191603p:plain

Wordpressの管理ユーザ・パスワード・メールアドレスを入力して作成を押下します。

f:id:yantzn:20190113191813p:plain

Wordpressのトップページが表示されることを確認してください。

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

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

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

GUIで設定することも可能ですが、今回はPowerShellで設定します。

Azure ポータルからCloud shellを起動します。

f:id:yantzn:20190113201444p:plain

# Get the list of subscriptions
Get-AzureRmSubscription 

# Type your subscription ID
Select-AzureRmSubscription <Your Subscription>

# 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.設定状況の確認

f:id:yantzn:20190113202729p:plain

ApplicationGatewayのバックエンドプールから「appGatewayBackendPool」を選択します。

以下のように、Wordpressがバックエンドに設定されていれば成功です。

f:id:yantzn:20190113203106p:plain

3.接続確認

Application Gatewayのフロントエンド パブリック IP アドレスでアクセスできるか確認を行います。

f:id:yantzn:20190113203822p:plain

f:id:yantzn:20190113204143p:plain

Application Gateway 経由で問題なくアクセスできれたため成功です。

Wordpress への接続制限の設定

ここまでの設定だとWordpress に直接接続してしまっている状態となっています。

これでは、Application GatewayでWAFを設定している意味がありませんので、直接接続できないようにWordpress側に設定を行います。

f:id:yantzn:20190113205015p:plain

「ネットワーク」を選択して「IP制限の構成」を押下します。

f:id:yantzn:20190113205649p:plain

上記のようにApplication GatewayのパブリックIPだけを許可するように設定を行います。

f:id:yantzn:20190113205845p:plain

接続できなければ成功です。

まとめ

Azureは触り始めたばかりのため掲載内容に間違いがあるかもしれません。

補足等あればTwitterでご連絡いただけると幸いです。

初めてAzureに触れて思うことは、どんどん触って覚えるしかないって感じですね。

今後もメモ程度にいろいろ記事投稿していきます。


本日は以上です。ありがとうございました!

Twitterフォロー・読者登録募集中です!