web-dev-qa-db-ja.com

仮想ネットワークを使用してApp ServiceからAzure Sql Databaseへのアクセスを保護する方法

シナリオ

ファイアウォール設定で[App Servicesへのアクセスを許可する]をオフにできるように、仮想ネットワークを使用して、App ServiceからのみAzureデータベースへのアクセスを制限したい

Allow access to App Services screenshot

私がやった事:

  1. App Service-> Networking-> VNET Integration-> Setup-> Create New Virtual Networkに移動しました
  2. デフォルト設定で新しいVNETを作成しました。
  3. VNETが作成されたときに、App Service-> Networking-> VNET Integrationに移動し、VNETが接続されていることを確認しました
  4. SQL Firewall settigs-> Virtual Network-> Add existing Virtual Newtorkに行き、VNETを選択しました。私はデフォルトのサブネットとアドレススペースを残しました: "default/10.0.0.0/24"そして、IgnoreMissingServiceEndpointフラグをオフのままにしました。

VNETでMicrosoft.Sqlサービスエンドポイントを確認できます: enter image description here

質問

しかし、私はまだ得ています

SqlException:ログインで要求されたサーバー 'my-sqlserver'を開けません。 IPアドレス'52 .233。 'のクライアントはサーバーへのアクセスを許可されていません。:

何が欠けていますか?

11
Liero

残念ながら、今のところこのシナリオを達成することはできません。

理由:

  1. WebアプリでVNET統合を使用すると、WebアプリはWeb App <---> VNETのようにVNETと通信できます。

  2. SQLファイアウォールを使用して特定のVNetからのトラフィックを許可すると、VNETアドレス空間からのトラフィックがVNet <---> SQL serverのようにSQLと通信できるようになります。

  3. すべての構成がセットアップされると、シナリオは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 Storage Service EnpointとApp Service VNetの統合

2
Wayne Yang

アプリからAzure SQL、ストレージ、Cosmos DBなどのサービスへのアクセスをサービスエンドポイントでロックダウンする場合は、新しいVNet統合機能を使用できます。この機能の以前の形式では、ゲートウェイが必要で、ポイントツーサイトVPNを構築します。アプリのソースIPは、ポイントツーサイトアドレスの1つになります。サービスエンドポイントは、ソースIPがVNetアドレスの1つである場合にのみ機能します。

新しいVNet統合により、アプリのバックエンドは、選択したサブネットのIPを使用して呼び出しを行います。つまり、そのサブネットにサービスエンドポイントを設定できます。

これをアプリのサービスエンドポイントと混同しないでください。これは、アプリへのトラフィックを特定のVNet /サブネットにロックするために最近リリースされた機能です。

3
Christina Compy

ファイアウォール設定「App Servicesへのアクセスを許可する」を削除できると考える1つのオプションは、特定のApp Serviceの送信IPアドレスのファイアウォールルールを追加することです

現在のリストは、App Serviceの[プロパティ]セクション、またはPowerShellで確認できます...

$outboundIps = (Get-AzureRmResource -ResourceGroupName $rg -ResourceType Microsoft.Web/sites -ResourceName $appService).Properties.outboundIpAddresses

いくつかの重要な警告。

  1. アウトバウンドIPは変化する可能性がありますが、予想通りに変化します(以下のリンクを参照)。ファイアウォールルールを更新するVSTSリリースプロセスの一部としてPowerShellスクリプトを実行します。 (Azureポータルではなくリリースプロセスを通じてリソースとその規模も管理している場合、このアプローチは信頼できるようです。)

  2. これらのIPがApp Serviceに固有のものであるかどうかを確認するための情報を見つけることができませんでした。これは考慮すべきリスクです。

https://docs.Microsoft.com/en-us/Azure/app-service/app-service-ip-addresses

2
Steve S

プライベートリンクという名前の新しいサービスの最新のリリースにより、プライベートエンドポイントをセットアップしてAzure SQLデータベースにアクセスできるようになりました。

今日のAzure Private Linkの発表により、VNetにプライベートエンドポイントを作成し、それをPaaSリソース(AzureストレージアカウントblobまたはSQLデータベースサーバー)にマッピングするだけです。

0
Sajeetharan