演習 - 暗号化用にバックエンド プールを構成する
配送ポータル アプリケーションにエンド ツー エンドの暗号化を実装するとします。 ユーザーとサーバー間のすべてのデータを暗号化すると、権限のないユーザーがデータをインターセプトしたり読み取ったりできないようにするのに役立ちます。
このユニットでは、Web アプリケーションとアプリケーション ゲートウェイを設定します。 次に、自己署名 SSL 証明書をいくつか作成し、バックエンド プールで暗号化を有効にします。これは、アプリケーション ゲートウェイからサーバーへのトラフィックをセキュリティで保護するのに役立ちます。
次の図では、この演習で構成する要素が強調表示されています。 Azure Application Gateway v2 を使用して、アプリケーション ゲートウェイを設定します。
仮想マシンとアプリケーション ゲートウェイをデプロイする
ブラウザーで Azure Cloud Shell を開き、リソースを作成するサブスクリプションへのアクセス権を持つディレクトリにサインインします。 この演習では、Bash シェル環境を使います。
Cloud Shell で次のコマンドを実行して、リソースのリソース グループを作成します。
<resource group name>
をリソース グループの名前に、<location>
をリソースをデプロイする Azure リージョンに置き換えます。az group create --resource-group <resource group name> --location <location>
Cloud Shell で次のコマンドを実行して、リソース グループ名を格納する変数を作成します。
export rgName=<resource group name>
Azure Cloud Shell で、次のコマンドを実行して配送ポータルのソース コードをダウンロードします。
git clone https://github.com/MicrosoftDocs/mslearn-end-to-end-encryption-with-app-gateway shippingportal
shippingportal フォルダーに移動します。
cd shippingportal
次のセットアップ スクリプトを実行して、仮想マシン、証明書、およびアプリケーション ゲートウェイを作成します。
bash setup-infra.sh
Note
このスクリプトは完了するまでに数分かかります。 複数のプロセスを使用して、ゲートウェイとリソースをアンパックして構成できるようにします。 このプロセスは警告やエラーが発生することなく成功したことが確認できます。
Web サーバーが正しく構成されていることを確認する
次のコマンドを実行し、設定スクリプトで作成された Web サーバーの URL を表示します。
echo https://"$(az vm show \ --name webservervm1 \ --resource-group $rgName \ --show-details \ --query [publicIps] \ --output tsv)"
URL をコピーして Web ブラウザーに貼り付け、その URL に移動します。
ブラウザーでは、次の画像のような警告メッセージが表示される可能性が最も高くなります。 警告メッセージの正確な内容は、ブラウザーによって異なる場合があります。 例の画像は Microsoft Edge のものです。
この警告は、認証できない自己署名証明書を通じて Web サーバーが構成されているために発生します。 この警告ページで、リンクを探して選び、Web サイトに進みます。たとえば、[Web ページへ移動] を選ぶか、[詳細]、[続行] の順に選ぶか、あるいは同様のものを選びます。 その結果、次の図に示すように、配送ポータルのホーム ページが表示されます。 これは、サーバーが正しく構成されていることをテストするためのサンプル アプリです。
暗号化用にバックエンド プールを構成する
次のコマンドを実行して、Web サーバーとして動作している仮想マシンのプライベート IP アドレスを取得します。
echo privateip="$(az vm list-ip-addresses \ --resource-group $rgName \ --name webservervm1 \ --query "[0].virtualMachine.network.privateIpAddresses[0]" \ --output tsv)"
プライベート IP アドレスを格納する変数を作成します。
<privateIP>
を前の手順の IP アドレスに置き換えます。export privateip=<privateIP>
仮想マシンのプライベート IP アドレスを使って、Application Gateway のバックエンド プールを設定します。
az network application-gateway address-pool create \ --resource-group $rgName \ --gateway-name gw-shipping \ --name ap-backend \ --servers $privateip
バックエンド プールの VM 証明書を、信頼されたルート証明書として Application Gateway にアップロードします。 セットアップ スクリプトによりこの証明書が生成され、shipping-ssl.crt ファイルに格納されました。
az network application-gateway root-cert create \ --resource-group $rgName \ --gateway-name gw-shipping \ --name shipping-root-cert \ --cert-file server-config/shipping-ssl.crt
この証明書を使うように HTTP 設定を構成します。
az network application-gateway http-settings create \ --resource-group $rgName \ --gateway-name gw-shipping \ --name https-settings \ --port 443 \ --protocol Https \ --host-name $privateip
次のコマンドを実行して、バックエンド プール用の信頼された証明書を、バックエンド VM にインストールされている証明書に設定します。
export rgID="$(az group show --name $rgName --query id --output tsv)" az network application-gateway http-settings update \ --resource-group $rgName \ --gateway-name gw-shipping \ --name https-settings \ --set trustedRootCertificates='[{"id": "'$rgID'/providers/Microsoft.Network/applicationGateways/gw-shipping/trustedRootCertificates/shipping-root-cert"}]'
これで、配送ポータル サイトを実行する仮想マシン、およびアプリケーション ゲートウェイの準備ができました。 Application Gateway とアプリケーション サーバー間に SSL 暗号化を構成しました。