使用 Azure Active Directory 驗證

適用于:Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics

本文概述如何使用 Azure Active Directory 來驗證 Windows Azure VM 上的Azure SQL 資料庫Azure SQL 受控執行個體、SQL ServerAzure Synapse Analytics 中的 Synapse SQL,以及Windows 和 SQL Server在Azure AD 中使用身分識別的 Linux。

若要瞭解如何在 Azure Synapse Analytics 中建立和填入 Azure AD,然後使用 Azure SQL Database、Azure SQL 受控執行個體 和 Synapse SQL 設定 Azure AD,請檢閱在Azure VM 上使用 SQL Server 設定 Azure AD 和 Azure AD

概觀

Azure Active Directory (Azure AD) 驗證是使用 Azure AD 中的身分識別連線到 SQL 資源的機制。

您可以使用 Azure AD 驗證,在單一中央位置集中管理資料庫使用者和其他 Microsoft 服務的身分識別。 中央識別碼管理提供單一位置以管理資料庫使用者並簡化權限管理。 包括以下優點:

  • 它提供 SQL Server 驗證的替代方案。

  • 有助於停止跨伺服器使用過多的使用者身分識別。

  • 允許在單一位置變換密碼。

  • 客戶可以使用外部 (Azure AD) 群組來管理資料庫權限。

  • 它可以藉由啟用整合式 Windows 驗證和 Azure Active Directory 支援的其他形式驗證來避免儲存密碼。

  • Azure AD 驗證會使用自主資料庫使用者,在資料庫層級驗證身分。

  • Azure AD 針對連線至 SQL Database 和 SQL 受控執行個體的應用程式支援權杖型驗證。

  • Azure AD 驗證支援:

  • Azure AD 支援來自 SQL Server Management Studio 的連線,其中使用包含 Multi-Factor Authentication 的 Active Directory 通用驗證。 Multi-Factor Authentication 包含增強式驗證功能,其中提供一系列的簡易驗證選項,例如電話、簡訊、含有 PIN 的智慧卡或行動應用程式通知。 如需詳細資訊,請參閱將 Azure AD Multi-Factor Authentication 用於 Azure SQL Database、SQL 受控執行個體和 Azure Synapse 的 SSMS 支援

  • Azure AD 支援從 SQL Server Data Tools (SSDT) 使用 Active Directory 互動式驗證的類似連線。 如需詳細資訊,請參閱 SQL Server Data Tools (SSDT) 中的 Azure Active Directory 支援

設定步驟包括以下設定和使用 Azure Active Directory 驗證的程序。

  1. 建立和填入 Azure AD。
  2. 選用:和目前與您的 Azure 訂用帳戶相關聯的 Active Directory 產生關聯並加以變更
  3. 建立 Azure Active Directory 系統管理員。
  4. 設定用戶端電腦。
  5. 在對應至 Azure AD 身分識別的資料庫中建立自主資料庫使用者。
  6. 使用 Azure AD 身分識別連接到您的資料庫。

注意

針對 Azure SQL、Azure VM 和 SQL Server 2022,Azure AD 驗證僅支援源自 Azure AD 且不支援協力廠商存取權杖的存取權杖。 Azure AD 也不支援將 Azure AD 查詢重新導向至協力廠商端點。 這適用于所有支援 Azure AD 驗證的 SQL 平臺和所有作業系統。

信認架構

  • 只有 Azure AD 的雲端部分、SQL Database、SQL 受管理執行個體、[Windows Azure VM 上的SQL Server],且Azure Synapse會被視為支援 Azure AD 原生使用者密碼。
  • 若要支援 Windows 單一登入認證 (或 Windows 認證的使用者/密碼),請使用設定為透過傳遞和密碼雜湊驗證進行無縫單一登入的同盟或受控網域中的 Azure Active Directory 認證。 如需詳細資訊,請參閱 Azure Active Directory 無縫單一登入
  • 若要支援同盟驗證 (或 Windows 認證的使用者/密碼),需要與 ADFS 區塊進行通訊。

如需 Azure AD 混合式身分識別、設定與同步處理的詳細資訊,請參閱下列文章:

如需使用 ADFS 基礎結構 (或 Windows 認證的使用者/密碼) 的同盟驗證範例,請參閱下圖。 箭頭表示通訊路徑。

aad 驗證圖表

下圖表示允許用戶端藉由提交權杖連線到資料庫的同盟、信任和主控關聯性。 此權杖是由 Azure AD 所驗證,並受到資料庫信任。 客戶 1 可以代表具有原生使用者的 Azure AD 或具有同盟使用者的 Azure Active Directory。 客戶 2 代表包含已匯入使用者的可能解決方案;在此範例中,來自同盟 Azure Active Directory 且 ADFS 正與 Azure Active Directory 進行同步處理。 請務必了解使用 Azure AD 驗證存取資料庫的必要條件是裝載訂用帳戶要與 Azure AD 相關聯。 必須使用相同的訂用帳戶來建立 Azure SQL Database、SQL 受控執行個體或 Azure Synapse 資源。

訂用帳戶關聯性

系統管理員結構

使用 Azure AD 驗證時,有兩個系統管理員帳戶:原始 Azure SQL Database 系統管理員和 Azure AD 系統管理員。 Azure Synapse 適用相同的概念。 只有以 Azure AD 帳戶為基礎的系統管理員可以在使用者資料庫中建立第一個 Azure AD 自主資料庫使用者。 Azure AD 系統管理員登入可以是 Azure AD 使用者或 Azure AD 群組。 系統管理員是群組帳戶時,可由任何群組成員使用,而讓伺服器可以有多個 Azure AD 系統管理員。 以系統管理員的身分使用群組帳戶,可讓您集中新增和移除 Azure AD 中的群組成員,而無須變更 SQL Database 或 Azure Synapse 中的使用者或權限,藉以增強管理性。 一律只能設定一個 Azure AD 系統管理員 (使用者或群組)。

系統管理員結構

權限

若要建立新的使用者,您必須具有資料庫中的 ALTER ANY USER 權限。 任何資料庫使用者皆可授與 ALTER ANY USER 權限。 ALTER ANY USER 權限的擁有者還包括伺服器系統管理員帳戶、具備資料庫之 CONTROL ON DATABASEALTER ON DATABASE 權限的資料庫使用者,以及 db_owner 資料庫角色的成員。

若要在 Azure SQL Database、SQL 受控執行個體或 Azure Synapse 中建立自主資料庫使用者,您必須使用 Azure AD 身分識別連線至資料庫或執行個體。 若要建立第一個自主資料庫使用者,您必須使用 Azure AD 系統管理員 (資料庫的擁有者) 連接到資料庫。 這在使用 SQL Database 或 Azure Synapse 設定和管理 Azure Active Directory 驗證中有示範。 只有已為 Azure SQL Database、SQL 受控執行個體或 SQL Synapse 建立 Azure AD 管理員時,才可進行 Azure AD 驗證。 如果已從伺服器移除 Azure Active Directory 系統管理員,則先前在 SQL Server 內建立的現有 Azure Active Directory 使用者便無法再使用其 Azure Active Directory 認證連線到資料庫。

Azure AD 功能和限制

  • 您可以為 Azure SQL Database 佈建下列 Azure AD 成員:

  • Azure AD 使用者若屬於具有 db_owner 伺服器角色的群組,則無法對 Azure SQL Database 和 Azure Synapse 使用 CREATE DATABASE SCOPED CREDENTIAL 語法。 您會看到下列錯誤︰

    SQL Error [2760] [S0001]: The specified schema name 'user@mydomain.com' either does not exist or you do not have permission to use it.

    直接將 db_owner 角色授與給個別 Azure AD 使用者,以減輕 db_owner 問題。

  • 下列系統函式在 Azure AD 主體下執行時會傳回 NULL:

    • SUSER_ID()
    • SUSER_NAME(<admin ID>)
    • SUSER_SNAME(<admin SID>)
    • SUSER_ID(<admin name>)
    • SUSER_SID(<admin name>)

SQL 受控執行個體

  • SQL 受控執行個體支援 Azure AD 伺服器主體 (登入) 和使用者。
  • SQL 受控執行個體中不支援將對應至 Azure AD 群組的 Azure AD 伺服器主體 (登入) 設定為資料庫擁有者。
    • 其擴充功能是當群組新增為 dbcreator 伺服器角色的一部分時,此群組中的使用者可以連線至 SQL 受控執行個體並建立新的資料庫,但將無法存取資料庫。 這是因為新的資料庫擁有者是 SA,而不是 Azure AD 使用者。 如果將個別使用者新增至 dbcreator 伺服器角色,則不會顯示這個問題。
  • Azure AD 伺服器主體 (登入) 支援 SQL 代理程式管理和作業執行。
  • Azure AD 伺服器主體 (登入) 可以執行資料庫備份和還原作業。
  • 支援稽核與 Azure AD 伺服器主體 (登入) 和驗證事件相關的所有陳述式。
  • 屬於 sysadmin 伺服器角色成員的 Azure AD 伺服器主體 (登入) 支援專用管理員連線。
    • 透過 SQLCMD 公用程式和 SQL Server Management Studio 支援。
  • 來自 Azure AD 伺服器主體 (登入) 的登入事件支援登入觸發程序。
  • Service Broker 和 DB 電子郵件可使用 Azure AD 伺服器主體 (登入) 來設定。

使用 Azure AD 身分識別連接

Azure Active Directory 驗證支援下列方法,使用 Azure AD 身分識別連接至資料庫:

  • Azure Active Directory 密碼
  • Azure Active Directory 整合式
  • Azure Active Directory - 與 Multi-Factor Authentication 通用
  • 使用應用程式權杖驗證

Azure AD 伺服器主體 (登入) 支援下列驗證方法:

  • Azure Active Directory 密碼
  • Azure Active Directory 整合式
  • Azure Active Directory - 與 Multi-Factor Authentication 通用

其他考量

  • 若要增強管理性,建議您以系統管理員身分佈建專用的 Azure AD 群組。
  • 無論何時,對於 SQL Database 或 Azure Synapse 中的伺服器,都只能建立一個 Azure AD 系統管理員 (使用者或群組)。
    • 為 SQL 受控執行個體新增 Azure AD 伺服器主體 (登入) 後,就能建立可新增至 sysadmin 角色的多個 Azure AD 伺服器主體 (登入)。
  • 只有伺服器的 Azure AD 系統管理員可在最初使用 Azure Active Directory 帳戶連線至伺服器或受控執行個體。 Active Directory 系統管理員可以設定後續的 Azure AD 資料庫使用者。
  • 如果 Azure AD 使用者和服務主體 (Azure AD 應用程式) 屬於超過 2048 位成員的 Azure AD 安全性群組,則不支援登入 SQL Database、受控執行個體或 Azure Synapse 中的資料庫。
  • 建議將連接逾時設定為 30 秒。
  • SQL Server 2016 Management Studio 和 SQL Server Data Tools for Visual Studio 2015 (版本 14.0.60311.1 (2016 年 4 月) 或更新版本) 支援 Azure Active Directory 驗證。 ( .NET Framework Data Provider for SqlServer 支援 Azure AD 驗證,最低版本 .NET Framework 4.6)。 因此,這些工具和資料層應用程式 (DAC 和 BACPAC) 的最新版本可以使用 Azure AD 驗證。
  • 從 15.0.1 版起,sqlcmd 公用程式bcp 公用程式都支援使用 Multi-Factor Authentication 的 Active Directory 互動式驗證。
  • SQL Server Data Tools for Visual Studio 2015 至少需要 2016 年 4 月版本的 Data Tools (版本 14.0.60311.1)。 Azure AD 使用者目前不會顯示在 SSDT 物件總管中。 解決方法是在 sys.database_principals 中檢視使用者。
  • Microsoft JDBC Driver 6.0 for SQL Server 支援 Azure AD 驗證。 此外,請參閱 設定連接屬性
  • PolyBase 無法使用 Azure AD 驗證進行驗證。
  • 使用 Azure 入口網站的 [匯入資料庫] 和 [匯出資料庫] 刀鋒視窗,可支援 Azure SQL Database 和 Azure Synapse 的 Azure AD 驗證。 PowerShell 命令也支援使用 Azure AD 驗證的匯入和匯出。
  • 使用 CLI 可支援 SQL Database、SQL 受控執行個體和 Azure Synapse 的 Azure AD 驗證。 如需詳細資訊,請參閱使用使用 SQL Database 或 Azure Synapse 設定和管理 Azure AD 驗證SQL Server - az sql server

後續步驟