Security

將 Azure 應用服務連接到 Azure SQL Server 數據庫

  • April 5, 2020

我正在嘗試安全地讓 Azure 應用服務連接到 Azure SQL Server 數據庫。

之前,為了“讓它工作”,我讓 SQL Server 防火牆對 Internet 開放。應用服務從應用服務獲取連接字元串,並使用它連接到 .database.windows.net。

到目前為止,我只能看到兩種可能性:

1)專門讓來自App Service的出站IP通過SQL Server的防火牆。這是有風險的,因為 IP 可能會更改,並且每次發生時我都必須更改它們。

  1. 將 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 防火牆設置:

防火牆設置

你真的已經達到了你的選擇:

  1. 使用“允許訪問所有 Azure 服務”複選框允許訪問,不推薦
  2. 允許訪問您的 Web 應用程序的出站 IP 集
  3. 將您的 Web 應用程序加入到 vNet 並使用服務端點將 SQL 鎖定到該 vNet

除非您想查看應用服務環境,它是部署在您的 vNet 中的單租戶解決方案(而且非常昂貴),否則這些都是您的選擇。

我還建議您查看使用託管標識來針對 SQL 數據庫驗證 Web 應用程序,而不是使用連接字元串。

引用自:https://serverfault.com/questions/1010457