ファイアウォール設定で[App Servicesへのアクセスを許可する]をオフにできるように、仮想ネットワークを使用して、App ServiceからのみAzureデータベースへのアクセスを制限したい
VNETでMicrosoft.Sqlサービスエンドポイントを確認できます:
しかし、私はまだ得ています
SqlException:ログインで要求されたサーバー 'my-sqlserver'を開けません。 IPアドレス'52 .233。。 'のクライアントはサーバーへのアクセスを許可されていません。:
何が欠けていますか?
残念ながら、今のところこのシナリオを達成することはできません。
理由:
WebアプリでVNET統合を使用すると、WebアプリはWeb App <---> VNET
のようにVNETと通信できます。
SQLファイアウォールを使用して特定のVNetからのトラフィックを許可すると、VNETアドレス空間からのトラフィックがVNet <---> SQL server
のようにSQLと通信できるようになります。
すべての構成がセットアップされると、シナリオはWeb App <---> VNET <---> SQL server
になります。 重要なことは、WebアプリからのトラフィックがVNETを介してSQLサーバーに送信できないことです。WebアプリはVNETを介していないため、VNETの外側にあります!したがって、Webアプリを使用してSQLサーバーにアクセスしようとすると、VNETからのトラフィックではありません。
ソリューション:
解決策は、WebアプリをVNetに配置することです。したがって、 Azure ASE を使用してこれを実現できます。
参考:
VNet統合 は、Webアプリケーションに仮想ネットワーク内のリソースへのアクセスを許可しますが、仮想ネットワークからWebアプリケーションへのプライベートアクセスを許可しません。プライベートサイトアクセスとは、Azure仮想ネットワーク内など、プライベートネットワークからのみアプリにアクセスできるようにすることを指します。プライベートサイトへのアクセスは、内部ロードバランサー(ILB)で構成されたASEでのみ使用できます。 ILB ASEの使用の詳細については、こちらの記事から始めてください ILB ASEの作成と使用 。
アプリからAzure SQL、ストレージ、Cosmos DBなどのサービスへのアクセスをサービスエンドポイントでロックダウンする場合は、新しいVNet統合機能を使用できます。この機能の以前の形式では、ゲートウェイが必要で、ポイントツーサイトVPNを構築します。アプリのソースIPは、ポイントツーサイトアドレスの1つになります。サービスエンドポイントは、ソースIPがVNetアドレスの1つである場合にのみ機能します。
新しいVNet統合により、アプリのバックエンドは、選択したサブネットのIPを使用して呼び出しを行います。つまり、そのサブネットにサービスエンドポイントを設定できます。
これをアプリのサービスエンドポイントと混同しないでください。これは、アプリへのトラフィックを特定のVNet /サブネットにロックするために最近リリースされた機能です。
ファイアウォール設定「App Servicesへのアクセスを許可する」を削除できると考える1つのオプションは、特定のApp Serviceの送信IPアドレスのファイアウォールルールを追加することです。
現在のリストは、App Serviceの[プロパティ]セクション、またはPowerShellで確認できます...
$outboundIps = (Get-AzureRmResource -ResourceGroupName $rg -ResourceType Microsoft.Web/sites -ResourceName $appService).Properties.outboundIpAddresses
いくつかの重要な警告。
アウトバウンドIPは変化する可能性がありますが、予想通りに変化します(以下のリンクを参照)。ファイアウォールルールを更新するVSTSリリースプロセスの一部としてPowerShellスクリプトを実行します。 (Azureポータルではなくリリースプロセスを通じてリソースとその規模も管理している場合、このアプローチは信頼できるようです。)
これらのIPがApp Serviceに固有のものであるかどうかを確認するための情報を見つけることができませんでした。これは考慮すべきリスクです。
https://docs.Microsoft.com/en-us/Azure/app-service/app-service-ip-addresses
プライベートリンクという名前の新しいサービスの最新のリリースにより、プライベートエンドポイントをセットアップしてAzure SQLデータベースにアクセスできるようになりました。
今日のAzure Private Linkの発表により、VNetにプライベートエンドポイントを作成し、それをPaaSリソース(AzureストレージアカウントblobまたはSQLデータベースサーバー)にマッピングするだけです。