この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
PaaSでの閉域網構成について、一般的な(安価な)リソースを使用する方法について以下に記載しました。
AppService と PaaS のプライベート接続構成の一例 – Cloud Steady | パーソルプロセス&テクノロジー株式会社
ここでは、AppService Environment Internal Load Balancer (ASE ILB) や SQL Managed Instance (SQL MI) を使用した際の、完全な閉域網構成のポイントについて記載します。
リソースについて
・ASE ILB とは
通常の AppService はマルチテナントで他のユーザーと共用のスケールユニットに配置されますが、ASE ILB はユーザー占用 (シングルテナント) で配置されるため他のユーザーと共用されることがなく、仮想ネットワーク内に AppService をデプロイすることで FQDN もインターネットに露出しない構成を取れるサービスです。
通常の AppService でも Private Link を有効にすることで VPN や ExpressRoute 経由からのみのアクセスに制限することはできますが、FQDN 自体は露出しページとしては 403 が返却されます (フロントエンドが返すため)。
App Service Environment の概要 – Azure App Service Environment | Microsoft Docs
・SQL MI とは
ASE ILB と同様に、仮想ネットワークにデプロイする顧客専用の SQL インスタンスです。SQL Server との互換性が高く SQL エージェント等が使用でき、デフォルトではインターネットに FQDN も公開しないためセキュリティが高いのが特徴です。
Azure SQL Managed Instance とは – Azure SQL Managed Instance | Microsoft Docs
ポイント
ASE ILB も SQL MI も PaaS なのでスケールアップ/アウトも実行できますが、一方で通常の AppService や SQL DB に対してセキュリティ上優位な点がある一方、違う点や気をつけるべき点があります。
■ 優位なセキュリティ
・通常の Web App では FQDN がインターネットに公開されているものの、IPアドレス制限を利用可能です。しかし、IPアドレス制限を管理する必要があります。ASE ではそもそも仮想ネットワークにのみ公開し FQDN も露出しません。
・SQL Database との接続は「Azureサービスとの接続を許可する」設定とするか、Web Appが保持する 送信パブリックIP を SQL Database に許可する必要があります。このとき、同一スタンプの他のユーザーからのアクセス試行を防げませんが、SQL MI にすると仮想ネットワーク上にあるため、他者がアクセスすることはできません。
※AppService の VNET 統合+NAT Gateway を使用することで 送信 IP を パブリック IP に固定・限定することは可能です。
この他、Storage Account をプライベートエンドポイントを使用するよう構成することで仮想ネットワーク経由のアクセスとなり、インターネットからのアクセスを遮断できます。
さらに Web アプリから SQL MI の DB 認証にマネージドIDを使えば、ソースコードや接続文字列にSQL接続用のID/パスワードを使用することなく、認証可能です。例え接続文字列が露出したとしてもID/パスワードが含まれていないため認証の試行もできません。
■気をつけるべき点
・リソースの中身をポータルから見れない
当たり前ですが、仮想ネットワークにデプロイされておりパブリックなエンドポイントがないため、ASE ILB の Web アプリはインターネットからは見られません。そのため、仮想ネットワークに Bastion やジャンプサーバーをデプロイし見るか、VPN で繋いでいる場合はそのネットワーク経由で確認する必要があります。
SQL MI も、SQL Databaseのように Azure ポータルからテーブルの中身を見られるクエリエディター機能はありません。SQL MI の DB の中身を確認するには、ASE ILB 同様にジャンプサーバーや仮想ネットワークを経由する必要があります。
・制限がある
ASE v3 では現状 TCP 25 番での送信トラフィックがサポートされていないことや FTP デプロイできないなど、SQL MI では完全な SQL Server 互換ではないことなど、リソースやリソースのバージョンにおいても細かく制限事項がある場合があります。
App Service Environment の概要 – Azure App Service Environment | Microsoft Docs
SQL Server と Azure SQL Managed Instance での T-SQL の相違点 – Azure SQL Managed Instance | Microsoft Docs
SQL Database と SQL Managed Instance のデータベース エンジンの機能を比較する – Azure SQL Database & SQL Managed Instance | Microsoft Docs
・料金が高い
一般的なリソース (インターネット公開用に採用するリソースである、マルチテナント AppService、SQL Database など) と比べ、閉域構成にする PaaS サービスはより高額な料金体系となっています。
Private Endpoint 等も流量により課金が掛かりますので見積もりを漏らさず行う必要がります。
まとめ
似ている PaaS でも相違するサービスであることがわかると思います。
また、一般的なリソースで閉域構成を構築する場合、リスクが残存する可能性があるためリスクを出しどの程度許容できるかは要件にて決定する必要があります。