使用 Microsoft Entra 驗證連線至 Azure Synapse Analytics

本文將教你如何使用 Microsoft Entra 認證來連接 Azure Synapse Analytics。

Note

Microsoft Entra server principals 目前正處於 Azure Synapse Analytics 的預覽階段。

Prerequisites

要連接,你需要為你的 Azure Synapse 資源設定 Microsoft Entra 認證。

要確認 Microsoft Entra 管理員設定正確,請使用 Microsoft Entra 管理員帳號連接至 master資料庫。

要建立基於 Microsoft Entra 的包含式資料庫使用者,請使用具備資料庫存取權且至少擁有ALTER ANY USER權限的 Microsoft Entra 身份來連接資料庫。

使用 SSMS 或 SSDT 連線

以下步驟示範如何使用 SQL Server Management Studio(SSMS)或 SQL Server 資料庫工具(SSDT)以 Microsoft Entra 身份連接 Synapse SQL。

整合型 Microsoft Entra

當你想用已與 Microsoft Entra ID 建立同盟的 Windows 憑證登入時,請使用這種方法。 如需詳細資訊,請參閱 Microsoft Entra 無縫單一登入。

  1. 啟動 SSMS 或 SSDT,然後在 [連接到伺服器] 的 [登入] 索引標籤 (或 [連線到資料庫引擎] 對話方塊) 中:

    1. 輸入 SQL 端點的完整限定伺服器名稱。 關於端點格式,請參見 Connect to Synapse SQL。
    2. 針對 [驗證],選取 [Microsoft Entra 整合式驗證]。 你不需要輸入密碼,因為你現有的登入憑證已經提供給此連線使用。
    3. 對於加密,請選擇嚴格。
  2. 在 [連線內容] 索引標籤中,在 [連線到資料庫] 欄位中,輸入您要連線的使用者資料庫的名稱。

Microsoft Entra 密碼

當使用 Microsoft Entra 管理網域連線 Microsoft Entra 使用者主體名稱時,請使用此方法。 你也可以將它用於沒有網域存取權限的聯邦帳戶,例如在你遠端工作時。

使用此方法可使用 Microsoft Entra 純雲端身分使用者或具有 Microsoft Entra 混合式身分的使用者身分驗證到 Synapse SQL。 此方法支援想在本地機器未加入網域時使用Windows憑證的使用者,例如使用遠端存取時。

  1. 啟動 SSMS 或 SSDT,然後在 [連接到伺服器] 的 [登入] 索引標籤 (或 [連線到資料庫引擎] 對話方塊) 中:

    1. 輸入你的 SQL 端點的完整限定伺服器名稱。 關於端點格式,請參見 Connect to Synapse SQL。
    2. 針對 [驗證],選取 [Microsoft Entra 密碼]。
    3. 在 [使用者名稱] 方塊中,以 username@domain.com 格式輸入您的 Microsoft Entra 使用者名稱。 使用者名稱必須是來自 Microsoft Entra ID 的帳戶,或來自具有 Microsoft Entra ID 的受控或同盟網域的帳戶。
    4. 在 [密碼] 方塊中,針對 Microsoft Entra 帳戶或受控/同盟網域帳戶輸入您的使用者密碼。
    5. 對於加密,請選擇嚴格。
  2. 在 [連線內容] 索引標籤中,在 [連線到資料庫] 欄位中,輸入您要連線的使用者資料庫的名稱。

Microsoft Entra MFA

使用此方法以 多重要素驗證(MFA) 進行互動式驗證,並以互動方式要求輸入密碼。 此方法可用於 Microsoft Entra 純雲端身份使用者或擁有 Microsoft Entra 混合身份的使用者,進行 Synapse SQL 認證。

以下步驟說明如何在最新版本 SSMS 中使用多重驗證來連接。

  1. 要使用 MFA 連線,請在 SSMS 的「連接伺服器」對話框中選擇 Microsoft Entra MFA。

  2. 在[伺服器名稱]方塊中填入您的伺服器名稱。 以 的格式填入 Microsoft Entra 認證至 [使用者名稱] 欄位中。

  3. 選擇 連線。

  4. 當「 登入您的帳號 」對話框出現時,裡面已經預先填入你在步驟 2 中提供的 使用者名稱 。 如果使用者不屬於與 Microsoft Entra ID 同盟的網域,則不需要輸入密碼。

  5. 系統會提示您使用根據 MFA 管理員設定所設定的其中一種方法進行驗證。

  6. 驗證完成時,SSMS 即會正常連線 (假設認證和防火牆存取有效)。

Microsoft Entra 服務主體

使用此方法使用 Microsoft Entra 服務主體向 Synapse SQL 進行驗證。

Microsoft Entra 受管理識別

使用此方法,透過 Microsoft Entra 受控識別向 Synapse SQL 進行驗證。 欲了解更多資訊,請參閱 Microsoft Entra for Azure Synapse Analytics 的 Managed identities。

Microsoft Entra 預設值

Microsoft Entra ID 的預設認證選項可透過無密碼且非互動式的機制(包括受控識別)進行認證。

從用戶端應用程式連線

以下程序將示範如何從客戶端應用程式以 Microsoft Entra 身份連接 Synapse SQL。 此清單未包含所有認證方法。 欲了解更多資訊,請參閱 Microsoft Entra 認證與 SqlClient。

設定用戶端應用程式

Note

System.Data.SqlClient 使用 Azure Active Directory 驗證程式庫 (ADAL),其即將淘汰。 如果使用 System.Data.SqlClient 命名空間進行 Microsoft Entra 驗證,請將應用程式移轉至 Microsoft.Data.SqlClient 和 Microsoft 驗證資源庫 (MSAL)。 要了解 .NET 中可用的連線方法,請參閱 Microsoft Entra 認證與 SqlClient。

如果你必須繼續在應用程式中使用 ADAL.DLL ,請使用本節連結安裝包含最新 ADAL.DLL 函式庫的 ODBC 或 OLE DB 驅動程式。

在您的應用程式或使用者透過 Microsoft Entra 身份連接 Azure Synapse Analytics 的所有用戶端機器上,請安裝以下軟體:

您可以符合這些需求,方法如下︰

Microsoft Entra 整合式驗證

要使用整合式 Windows 驗證,你的網域 Active Directory 必須與 Microsoft Entra ID 建立同盟,或是已設定可供傳遞驗證或密碼雜湊驗證使用的無縫單一登入受管理網域。 如需詳細資訊,請參閱 Microsoft Entra 無縫單一登入。

要連接資料庫,應用程式(或服務)必須在已加入網域的機器上以使用者的網域憑證執行。

若要使用整合驗證與 Microsoft Entra 身份連接資料庫,請將資料庫 連接字串 中的關鍵字設Authentication為 Active Directory Integrated。 將 <server_name> 替換為您自己的 SQL 邏輯伺服器名稱。 下列 C# 程式碼範例會使用 ADO.NET。

string ConnectionString = @"Data Source=<server-name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

連接字串 關鍵字Integrated Security=True不支援用於連接 Synapse SQL。 建立 ODBC 連線時,移除空格並將認證設定為 ActiveDirectoryIntegrated。

Microsoft Entra 密碼驗證

若要使用 Microsoft Entra 僅雲端身份使用者帳號,或使用 Microsoft Entra 混合身份的使用者,連接資料庫,請將 Authentication 關鍵字設為 Active Directory Password。 連接字串必須包含 User ID/UID 和 Password/PWD 關鍵字和值。 將 <server_name>、<email_address> 和 <password> 替換為適當的值。 下列 C# 程式碼範例會使用 ADO.NET。

string ConnectionString =
@"Data Source=<server-name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

使用 Microsoft Entra authentication GitHub Demo 中提供的示範程式碼範例,進一步了解 Microsoft Entra 認證方法。

Microsoft Entra ID 存取權杖

此認證方法允許中階服務從 Microsoft Entra ID 取得 JSON Web 權杖(JWT),並透過從 Microsoft Entra ID 取得權杖連接至 Synapse SQL。 此方法使用以憑證為基礎的驗證來啟用各種應用程式案例,包括服務身分識別、服務主體和應用程式。 您必須完成四個基本步驟,才能使用 Microsoft Entra 權杖驗證︰

  1. 向 Microsoft Entra ID 註冊您的應用程式,並取得程式碼的用戶端識別碼。
  2. 建立代表應用程式的資料庫使用者,如建立對應至 Microsoft Entra 身分識別的受限使用者一節中所述。
  3. 在執行該應用程式的客戶端電腦上建立憑證。
  4. 將憑證作為密鑰加入您的應用程式。

範例連接字串。 將 <server-name> 替換為您自己的 SQL 邏輯伺服器名稱:

string ConnectionString = @"Data Source=<server-name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

如需新增認證的詳細資訊,請參閱開始在 Microsoft Entra ID 中使用以認證為基礎的驗證。

Microsoft Entra 多重身分驗證

Microsoft Entra 多重要素驗證是所有 SQL 工具支援的驗證方法。 如需以程式設計方式使用 Microsoft Entra ID 驗證的資訊,請參閱 Microsoft 驗證程式庫 (MSAL) 概觀。

sqlcmd

以下陳述式使用 sqlcmd 13.1 版連線。 下載適用於 SQL Server 的 Microsoft 命令列公用程式 14.0。

Note

sqlcmd 使用 -G 命令不適用於系統身分識別,而且需要使用者主體登入。

sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -G
sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -U adrian@contoso.com -P <password> -G -l 30