Sql-Server

Azure SQL Db 連結伺服器 - 安全連接方法?

  • April 26, 2018

開發人員想要一個從我們的本地伺服器到我們的 Azure SQL Db (DBaaS) 的連結伺服器,以完成每晚將數據拉入我們的數據倉庫。

我寧願走 SSIS 的路線,但沒有時間正確開發包或教他們如何支持它。

在這一點上,我主要關心的是確保數據在傳輸過程中被加密。

一旦連結伺服器與相應的代理作業一起到位,我的選擇似乎是:

  • sqlcmd(使用 -N 開關,“ ……客戶端用於請求加密連接。”
  • Invoke-SQLcmd Azure PowerShell cmdlet(使用 -EncryptConnection 開關)
  • 或者… Azure SQL 數據同步(集線器到成員),在撰寫本文時仍處於預覽階段,但看起來很有希望!

對於這些方法,我應該注意哪些問題或特殊注意事項?

這個答案與之前提供的答案之間的主要區別是(我認為非常重要的)承認 MitM 攻擊,而不是忽略警告的籠統聲明。

對於後代,來自文件中的保護您的 SQL 數據庫

重要的

在數據“傳輸”進出數據庫時,所有與 Azure SQL 數據庫的連接都需要加密 (SSL/TLS)。在您的應用程序的連接字元串中,您必須指定參數來加密連接並且  信任伺服器證書(如果您將連接字元串複製到 Azure 門戶之外,這將為您完成),否則連接不會驗證伺服器並且容易受到“中間人”攻擊。例如,對於 ADO.NET 驅動程序,這些連接字元串參數是 Encrypt=True 和 TrustServerCertificate=False。有關 TLS 和連接性的資訊,請參閱 TLS 注意事項

對於其他加密數據的方法,請考慮:

預設情況下,數據在傳輸到 Azure 的過程中被加密。無法將未加密的傳輸中數據發送到 Azure。

即使您嘗試使用 SSMS 等工具連接到 Azure SQL 數據庫並且未指定加密,仍會強制執行加密。

當客戶端第一次嘗試連接到 SQL Server/SQL Azure 時,它會發送一個初始連接請求。將其視為“預預連接”請求。此時,客戶端不知道是否需要 SSL/加密,並等待來自 SQL Server/SQL Azure 的回答以確定整個會話(不僅僅是登錄序列,整個連接會話)是否確實需要 SSL。在響應上設置一個位來指示。然後客戶端庫斷開連接並使用此資訊重新連接。

順便說一句,我建議您不要將連結伺服器用於 ETL。您會發現 OLEDB 等待時間如此之高,以至於它不是可行的選擇。

引用自:https://dba.stackexchange.com/questions/204865