共用方式為


教學課程:在沒有 Azure Arc 的情況下為 Windows 上的 SQL Server 啟用Microsoft Entra 驗證

適用於: SQL Server 2022 (16.x) 和更新版本。

本文說明如何使用 Microsoft Entra ID 進行驗證,而不需為內部部署 SQL Server 2022 和更新版本設定 Azure Arc。 Microsoft Entra 驗證是雲端式身分識別管理服務,可提供對 SQL Server 資料庫的安全存取。 本教學課程會引導您完成在沒有 Azure Arc 的情況下為 Windows 上的 SQL Server 設定 Microsoft Entra 驗證的程式。

備註

Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。

在本教學課程中,您將瞭解如何:

  • 新增 SQL Server 的憑證。
  • 安裝用於連線到 SQL Server 的 adal.dll。
  • 建立並註冊Microsoft Entra ID 應用程式。
  • 授與應用程式許可權。
  • 將憑證上傳至應用程式。
  • 新增登錄值,以啟用 SQL Server 的Microsoft Entra 驗證。

先決條件

  • 內部部署 SQL Server 2022 或更新版本。
  • 活躍的 Microsoft Entra ID 租用戶。
  • 此設定會使用應用程式註冊,將 SQL Server 與Microsoft Entra ID 產生關聯。 請遵循指南,在 Microsoft Entra ID 中 註冊應用程式
  • 確認 SQL Server 具有 Azure 的網路連線能力,特別是下列Microsoft Entra ID 服務和位址:
    • login.windows.net。
    • login.microsoftonline.com。
    • graph.microsoft.com。
    • graph.windows.net。
    • database.windows.net。
    • 不需要完整的 IP 位址和 URL 清單,但可以在這篇文章中找到,即Microsoft 365 的 URL 和 IP 位址範圍

取得憑證

  1. 取得要用於 SQL Server 的憑證,並將其匯入計算機證書存儲。 我們建議使用 CA 簽署的憑證。
    1. 為了確保不與證書存儲中已安裝的任何憑證名稱相符,請為該憑證使用唯一的 CN 名稱。

    2. 在計算機證書存儲中安裝憑證。 如需詳細資訊,請參閱 將憑證匯入本機計算機存放區

    3. 在憑證上新增 Read SQL Server 服務帳戶的許可權。

      憑證的許可權屬性螢幕快照。

安裝 adal.dll

  1. 安裝 adal.dll 以用於 SQL Server。 需要此程式庫,才能使用 Microsoft Entra 驗證連線至您的 SQL Server。 您可以從最新的 Microsoft OLE DB Driver for SQL Server 安裝取得 adal.dll

  2. 安裝 Microsoft OLE DB Driver for SQL Server 之後,請確定 adal.dll 位於資料夾中 C:\windows\system32

  3. 您也應該具有登錄機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir,其值為 C:\windows\system32\adal.dll。 如果不存在,則加以新增。

    adal.dll登錄機碼的螢幕快照。

    如需 Windows 登錄的詳細資訊,請參閱 進階使用者的 Windows 登錄資訊

建立並註冊Microsoft Entra ID 應用程式

  • 移至 Azure 入口網站,選取 [Microsoft Entra ID]>[應用程式註冊]>[新增註冊]
    1. 指定名稱 - 本文中的範例會使用 SQLServer
    2. 選擇 [支援的帳戶類型],並使用 [僅限此組織目錄中的帳戶]
    3. 請勿設定重定向網址
    4. 選取 註冊

請參閱下列應用程式註冊:

在 Azure 入口網站中註冊應用程式的螢幕擷取畫面。

授與應用程式權限

選取新建立的應用程式,然後在左側功能表上選取 [API 權限]。

  1. 選取 新增權限>Microsoft Graph>應用程式權限

    1. 勾選 Directory.Read.All
    2. 選擇 新增權限

或者,

  1. 選取 新增權限>Microsoft Graph>應用程式權限

    1. 勾選「Application.Read.All」

    2. 勾選「Group.Read.All」

    3. 勾選 User.Read.All

    4. 選擇 新增權限

  2. 選擇 [授與管理員同意]。

顯示如何在 Azure 入口網站中授與同意的螢幕快照。

備註

若要將 系統管理員同意 授與上述許可權,您的 Microsoft Entra 帳戶需要特權角色管理員角色或更高的許可權。

上傳憑證

請將您在「取得憑證」一節中建立的憑證以.cer格式上傳至 Azure 入口網站中的應用程式註冊。

在 Azure 入口網站中上傳應用程式憑證的螢幕快照。

新增登錄值以啟用 SQL Server Microsoft Entra 驗證

使用下列值更新登錄機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication ,以啟用 SQL Server Microsoft Entra 驗證。 SQL Server 2022 的登入機碼路徑範例為 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication

警告

如果使用註冊編輯程式或其他方法錯誤地修改註冊表,可能會發生嚴重問題。 這些問題可能需要你重新安裝作業系統。 Microsoft 不保證可以解決這些問題。 修改登錄檔時需自行承擔風險。

  • 如果FederatedAuthentication索引鍵不存在,請使用下列所有值創建它。
  • 列出的前五個項目必須以您在上一節中建立的應用程式的值進行更新。 其餘條目是預設值。
  • <sql-server-certificate-name>是您在取得憑證並上傳至 Azure 一節中建立的憑證名稱。
  • <application-client-id>是您在建立及註冊 Microsoft Entra ID 應用程式一節中所建立應用程式的應用程式(用戶端)識別碼。 如需尋找用戶端識別碼的詳細資訊,請參閱 用戶端標識符
  • <tenant-id>是來自 Azure 租使用者的租用戶標識碼。 您可以在 Azure 入口網站的 [Microsoft Entra 標識符概>] 底下找到租使用者識別碼
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]

"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""

如需 Windows 登錄的詳細資訊,包括備份、編輯和還原登錄機碼,請參閱 進階使用者的 Windows 登錄資訊

測試驗證

設定伺服器並編輯登錄值之後,Microsoft Entra 驗證應該正常運作。 使用下列 T-SQL 命令建立登入來測試設定:

CREATE LOGIN [<admin@domain.com>] FROM EXTERNAL PROVIDER

常見問題

您可能會看到下列錯誤:

Keyset does not exist (AdalDll) with error code: 21

此錯誤可能是因為憑證的許可權問題所造成。 請確定 SQL Server 服務帳戶具有 Read 憑證的許可權。 如果問題持續發生,請確定憑證具有不符合證書存儲中任何其他憑證的唯一 CN 名稱。