啟用 Microsoft Entra 資料庫驗證

已完成

本單元說明如何使用 Microsoft Entra ID 來向Azure SQL DatabaseAzure SQL 受控實例Azure Synapse Analytics 進行驗證。

備註

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

或者,您也可以為 Azure 虛擬機上的 SQL Server 設定Microsoft Entra 驗證

先決條件

若要搭配 Azure SQL 資源使用 Microsoft Entra 驗證,您需要下列必要條件:

建立並填入 Microsoft Entra 租用戶

在您為 Azure SQL 資源設定 Microsoft Entra 驗證之前,您需要先建立一個 Microsoft Entra 租戶,並在其中填入使用者和群組。 Microsoft Entra 租用戶可以完全在 Azure 內管理,或用於內部部署 Active Directory 網域服務的同盟。

如需詳細資訊,請參閱:

設定 Microsoft Entra 管理員

若要在您的資源中使用 Microsoft Entra 驗證,必須設置 Microsoft Entra 系統管理員。 雖然在概念上來說,Azure SQL Database、Azure Synapse Analytics 和 Azure SQL 受控實例的步驟相同,但本節詳細說明每個產品執行的不同 API 和入口網站體驗。

建立 Azure SQL 資源時,也可以設定 Microsoft Entra 系統管理員。 如果已設定Microsoft Entra 系統管理員,請略過本節。

Azure SQL Database 和 Azure Synapse Analytics

設定 Microsoft Entra 系統管理員,可為您的 Azure SQL Database 和 Azure Synapse Analytics 邏輯伺服器 啟用 Microsoft Entra 驗證。 您可以使用 Azure 入口網站、PowerShell、Azure CLI 或 REST API,為您的伺服器設定Microsoft Entra 管理員。

在 Azure 入口網站中,您可以找到邏輯伺服器名稱

  • 在 Azure SQL Database [概觀] 頁面上的伺服器名稱欄位中。
  • 在 Azure Synapse Analytics 中獨立專用 SQL 集區的 [概觀] 頁面上的伺服器名稱欄位中。
  • 在 Azure Synapse Analytics 工作區的 [概觀] 頁面上的相關 SQL 端點中。
  • Azure 入口網站
  • PowerShell
  • Azure CLI
  • REST API

若要在 Azure 入口網站中設定邏輯伺服器的 Microsoft Entra 管理員,請遵循下列步驟:

  1. [Azure 入口網站目錄 + 訂用帳戶] 窗格中,選擇包含 Azure SQL 資源的目錄作為 [目前] 目錄。
  2. 搜尋 SQL Server,然後選取資料庫資源的邏輯伺服器,以開啟 [SQL Server] 窗格。
  3. 在邏輯伺服器的 [SQL Server] 窗格中,選取 [設定] 底下的 [Microsoft Entra ID],以開啟 [Microsoft Entra ID] 窗格。
  4. 在 [Microsoft Entra 標識符] 窗格中,選取 [設定系統管理員] 以開啟 [Microsoft Entra 標識符] 窗格。
  5. [Microsoft Entra 識別符] 窗格會顯示您目前目錄中的所有使用者、群組和應用程式,並可讓您依名稱、別名或標識符進行搜尋。 尋找您Microsoft Entra 系統管理員所需的身分識別,然後選取它,然後按兩下 [選取] 以關閉窗格。
  6. 在邏輯伺服器的 Microsoft Entra ID 頁面頂端,選取 [儲存]。

物件標識碼會顯示在 Microsoft Entra 使用者和群組的系統管理員名稱旁邊。 針對應用程式(服務主體),會顯示應用程式識別碼。

變更管理員的程序可能需要幾分鐘的時間。 然後,新的系統管理員會出現在 [Microsoft Entra 管理員] 字段中。

若要移除系統管理員,請在 [Microsoft項目標識符] 頁面頂端,選取 [移除系統管理員],然後選取 [儲存]。 移除 Microsoft Entra 系統管理員會停用邏輯伺服器的 Microsoft Entra 驗證。

備註

Microsoft Entra 系統管理員會以使用者(資料庫主體)的形式儲存在伺服器的 master 資料庫中。 由於資料庫主體名稱必須是唯一的,系統管理員的顯示名稱不能與伺服器 master 資料庫中任何用戶的名稱相同。 如果有具有該名稱的使用者存在,Microsoft Entra 系統管理員設定會失敗並回復,表示該名稱已在使用中。

Azure SQL 受控執行個體

設定 Microsoft Entra 管理員可啟用 Azure SQL 受控實例Microsoft Entra 驗證。 您可以使用 Azure 入口網站、PowerShell、Azure CLI 或 REST API,為您的 SQL 受控實例設定Microsoft Entra admin。

若要使用 Azure 入口網站將 SQL 受控實例讀取許可權授與 Microsoft Entra ID,請以特殊許可權角色管理員身分登入,並遵循下列步驟:

  1. Azure 入口網站中,在右上角選取您的帳戶,然後選擇 [切換目錄] 以確認哪個目錄是您目前的目錄。 視需要切換目錄。
  2. Azure 入口網站的 [目錄 + 訂閱] 窗格中,選擇包含您的受控實例的目錄作為目前使用的目錄。
  3. 搜尋 SQL 受控實例,然後選取您的受控實例以開啟 [SQL 受控實例] 窗格。 然後,選取 [設定] 底下的 [Microsoft Entra ID],以開啟適用於您實例的 Microsoft Entra ID 窗格。
  4. 在 [Microsoft Entra 管理窗格上,從導覽列中選取 [設定系統管理員] 以開啟 [Microsoft Entra ID] 窗格。
  5. 在 [Microsoft Entra ID] 窗格中,搜尋一位使用者,勾選要作為系統管理員的使用者或群組旁的方塊,然後按一下 [選取] 以關閉窗格並返回您的受管理實例的 Microsoft Entra 管理頁面。 [Microsoft Entra ID] 窗格會顯示目前在您目錄中的所有成員們和群組。 呈現灰色的使用者或群組無法選取,因為它們不支援作為 Microsoft Entra 系統管理員。 選取您想要指派為系統管理員身分的身分識別。
  6. 從受控實例Microsoft Entra 管理頁面的導覽列中,選取 [儲存] 以確認您的Microsoft Entra 系統管理員。 系統管理員變更作業完成之後,新的系統管理員會出現在 [Microsoft Entra 管理員] 字段中。 物件標識碼會顯示在 Microsoft Entra 使用者和群組的系統管理員名稱旁邊。 針對應用程式(服務主體),會顯示應用程式識別碼。

小提示

若要移除系統管理員,請選取 [Microsoft項目標識符] 頁面頂端的 [移除系統管理員],然後選取 [儲存]。

指派 Microsoft Graph 許可權

針對為透過安全性群組成員資格和新使用者建立而連線的使用者授權之類的案例,SQL 受控執行個體需要權限,才能讀取 Microsoft Entra ID。 若要讓Microsoft Entra 驗證能夠運作,您必須將受控實例識別指派給目錄讀取者角色。 您可以使用 Azure 入口網站或 PowerShell 來執行此動作。

針對某些作業,Azure SQL Database 和 Azure Synapse Analytics 也需要查詢 Microsoft Graph 的許可權,如 Microsoft Graph 許可權中所述。 Azure SQL Database 和 Azure Synapse Analytics 支援這些案例的精細圖形許可權,而 SQL 受控實例則需要目錄讀取者角色。 微調權限及其指派會於讓服務主體能夠建立Microsoft Entra 使用者中詳細說明。

目錄讀取者角色

Azure 入口網站中 SQL 受控執行個體的 Microsoft Entra ID 頁面會在執行個體未獲指派目錄讀取者權限時顯示方便的橫幅。

  1. 選取 Microsoft Entra ID 頁面頂端的橫幅,並將權限授與代表執行個體的系統指派或使用者指派的受控識別。 只有租戶中的有特權角色的管理員或更高權限角色才能執行這項作業。
  2. 作業成功時,右上角會顯示成功通知:

Microsoft Entra 系統管理員現在可用來建立Microsoft Entra 伺服器主體(登入)和資料庫主體(使用者)。 如需詳細資訊,請參閱 Microsoft Entra 與 Azure SQL 受控實例整合

在 SQL 中建立Microsoft Entra 主體

若要使用 Microsoft Entra 驗證連線到 SQL Database 或 Azure Synapse Analytics 中的資料庫,必須在資料庫上設定主體,使得該身分識別至少具有「連線」權限。

資料庫用戶權力

建立資料庫使用者時,預設會接收資料庫的 CONNECT 許可權。 資料庫使用者也會在兩種情況下繼承許可權:

  • 如果使用者是Microsoft Entra 群組的成員,該群組也會獲指派伺服器上的許可權。
  • 如果使用者是從登入建立的,它會繼承資料庫上適用之登入的伺服器指派許可權。

不論主體類型為何,管理伺服器和資料庫主體的許可權都相同(Microsoft Entra ID、SQL 驗證等)。 我們建議將許可權授與資料庫角色,而不是直接將許可權授與使用者。 然後,可以將使用者新增到具有適當權限的角色中。 這可簡化長期許可權管理,並減少身分在超過適當時限後仍保有存取權限的可能性。

如需詳細資訊,請參閱:

限制型資料庫使用者

自主資料庫使用者是一種 SQL 使用者類型,其未連線到主要資料庫中的登入帳戶。 若要建立Microsoft Entra 自主資料庫使用者,請使用至少具有 ALTER ANY USER 許可權的 Microsoft Entra 身分識別連接到資料庫。 下列 T-SQL 範例會從 Microsoft Entra ID 建立資料庫主體Microsoft_Entra_principal_name。

SQL

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;


SQL

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;


SQL

CREATE USER [appName] FROM EXTERNAL PROVIDER;


SQL

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;


登入型使用者

備註

Microsoft Entra 伺服器主體 (登入) 目前針對 Azure SQL Database 和 Azure Synapse Analytics 處於公開預覽。 Microsoft Entra 登入已針對 Azure SQL 受控執行個體和 SQL Server 2022 正式推出。

支援 Microsoft Entra 伺服器主體 (或登入),這表示不需要自主資料庫使用者。 資料庫主體(使用者)可以根據伺服器主體來建立,這表示Microsoft Entra 用戶可以繼承登入的伺服器層級指派許可權。

SQL

CREATE USER [appName] FROM LOGIN [appName];


如需詳細資訊,請參閱 SQL 受控實例概觀。 如需建立 Microsoft Entra 伺服器主體 (logins) 的語法,請參閱 CREATE LOGIN

外部使用者

針對與您的 Azure 訂用帳戶相關聯的身分識別位在不同 Microsoft Entra 租用戶中管理的身分識別,您無法直接為其建立資料庫使用者。 不過,其他目錄中的使用者可以匯入至相關聯的目錄做為外部使用者。 然後,他們可以用來建立具有限定權限的資料庫使用者,以便存取資料庫。 外部使用者也可以透過Microsoft Entra 群組的成員資格來取得存取權。

範例:若要建立代表 Microsoft Entra 同盟或受控網域使用者的限定資料庫使用者:

SQL

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;


以外部使用者身分匯入受控網域的同盟網域用戶帳戶,必須使用受控網域身分識別。

命名考慮

不支援在 T-SQL CREATE LOGIN 和 CREATE USER 陳述式中包含特殊字元,例如冒號 : 或 & 符號作為使用者名稱。

Microsoft Entra ID 和 Azure SQL 以單一關鍵方式在使用者管理設計中有所分歧:Microsoft Entra ID 允許在租使用者內複製顯示名稱,而 Azure SQL 則要求伺服器或實例上的所有伺服器主體和資料庫中的所有資料庫主體都有唯一的名稱。 因為 Azure SQL 會在建立主體時直接使用身分識別的 Microsoft Entra 顯示名稱,所以在建立使用者時可能會導致錯誤。 若要解決此問題,Azure SQL 已發行目前處於預覽狀態的WITH OBJECT_ID增強功能,讓使用者指定要新增至伺服器或實例之身分識別的 Microsoft Entra 物件識別符。

Microsoft Graph 權限

CREATE USER ...FROM EXTERNAL PROVIDER 命令需要代表所登入使用者的 Microsoft Entra ID (外部提供者) 的 Azure SQL 存取權。 有時候,會出現一些情況,導致 Microsoft Entra ID 傳回例外狀況給 Azure SQL。

  • 您可能會遇到 SQL 錯誤 33134,其中包含Microsoft Entra ID 特定錯誤訊息。 錯誤通常表示拒絕存取、用戶必須在 MFA 中註冊才能存取資源,或第一方應用程式之間的存取必須透過預先授權來處理。 在前兩種情況下,問題通常是由使用者Microsoft Entra 租用戶中設定的條件式存取原則所造成:它們會防止使用者存取外部提供者。 更新條件式存取原則以允許存取應用程式 『00000003-0000-0000-c000-00000000000000』(Microsoft Graph API 的應用程式識別符)應解決此問題。 如果錯誤指出必須透過預先授權處理第一方應用程式之間的存取,問題是因為使用者已以服務主體身分登入。 若命令是由使用者執行而非其他方式,則命令應該會成功。
  • 如果您收到連線逾時的錯誤訊息,您可能需要將連接字串的 TransparentNetworkIPResolution 參數設定為 false。 如需詳細資訊,請參閱 .NET Framework 4.6.1 - TransparentNetworkIPResolution 的連線逾時問題

如需根據Microsoft Entra 身分識別建立自主資料庫用戶的詳細資訊,請參閱 CREATE USER

設定多重要素驗證

若要改善 Azure SQL 資源的安全性,請考慮設定 多重要素驗證 (MFA),這會提示使用者使用第二個替代方法向資料庫進行驗證,例如來電或驗證器應用程式。

若要搭配 Azure SQL 資源使用多重 要素驗證,請先啟用多重要素驗證,然後使用 條件式存取原則 為您的 Azure SQL 資源強制執行 MFA。

使用 Microsoft Entra 連線

設定Microsoft Entra 驗證之後,您可以使用 SQL Server Management StudioSQL Server Data Tools 等Microsoft工具來連線到 SQL 資源,並使用 Microsoft Entra 身分識別設定 用戶端應用程式 來連線。

針對 Microsoft Entra 驗證進行疑難排解

如需疑難解答問題的指引,請參閱 部落格:針對使用 Azure SQL Database 和 Azure Synapse Microsoft Entra 驗證的相關問題進行疑難解答