將 Azure 應用服務連接到 Azure SQL Server 數據庫
我正在嘗試安全地讓 Azure 應用服務連接到 Azure SQL Server 數據庫。
之前,為了“讓它工作”,我讓 SQL Server 防火牆對 Internet 開放。應用服務從應用服務獲取連接字元串,並使用它連接到 .database.windows.net。
到目前為止,我只能看到兩種可能性:
1)專門讓來自App Service的出站IP通過SQL Server的防火牆。這是有風險的,因為 IP 可能會更改,並且每次發生時我都必須更改它們。
- 將 SQL Server 和 App Service 放在 vnet 中。
我試過2),但有點失敗。我將我的 vnet 添加到 SQL Server 防火牆設置中允許的 vnet 中,並拒絕了 Internet 連接。
然後我將應用服務從 B1 升級到 S1,因為顯然我的 11 歐元應用服務不允許在 vnet 上使用(這也是我在這裡尋找另一個解決方案的原因)。
這以前有效,但現在我改變了一些東西來嘗試一些東西,並且在改變回來之後它不再起作用了。我不知道為什麼,設置是一樣的。
所以我從一開始的問題仍然在這裡:
如何正確、安全地將應用服務連接到 SQL Server 數據庫?
更新:
所以我現在使用 vnet/endpoint 解決方案,但它不起作用。
我在沒有 NSG 的 vnet 子網中有 WebAPI,我可以從 Internet 訪問它(swagger)。
vnet 為該子網啟動了服務端點 Microsoft.Sql。
WebAPI 嘗試使用連接字元串連接到 SQL Server。一旦我開始了解這一點,我會將其更改為 Azure AD。現在必須讓網路工作。
SQL Server 防火牆:
- 拒絕公共訪問
- 允許 azure 資源訪問
- 允許通過子網訪問。服務端點狀態顯示已啟用。
SQL Server 防火牆設置:
你真的已經達到了你的選擇:
- 使用“允許訪問所有 Azure 服務”複選框允許訪問,不推薦
- 允許訪問您的 Web 應用程序的出站 IP 集
- 將您的 Web 應用程序加入到 vNet 並使用服務端點將 SQL 鎖定到該 vNet
除非您想查看應用服務環境,它是部署在您的 vNet 中的單租戶解決方案(而且非常昂貴),否則這些都是您的選擇。
我還建議您查看使用託管標識來針對 SQL 數據庫驗證 Web 應用程序,而不是使用連接字元串。