使用 Azure SQL 設定和管理 Microsoft Entra 驗證

適用於:Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics

本文介紹如何使用 Microsoft Entra ID 驗證 Azure SQL 資料庫Azure 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 資料庫、Azure Synapse Analytics 和 Azure SQL 受控執行個體的步驟是相同的,但本節會詳細說明每個產品執行此動作的不同 API 和入口網站體驗。

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

Azure SQL Database 和 Azure Synapse Analytics

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

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

  • 在 Azure SQL 資料庫 的 [概觀] 頁面上的 [伺服器名稱] 欄位中。
  • 在 Azure Synapse Analytics 中,獨立的專用 SQL 集區的 [概觀] 頁面上的 [伺服器名稱] 欄位中。
  • 在 Azure Synapse Analytics 工作區的 [概觀] 頁面上的相關 [SQL 端點] 中。

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

  1. Azure 入口網站的 [目錄 + 訂用帳戶] 窗格中,選擇包含 Azure SQL 資源的目錄作為 [目前的目錄]

  2. 搜尋 [SQL 伺服器],然後選取資料庫資源的邏輯伺服器,以開啟 [SQL 伺服器] 窗格。

    顯示如何搜尋和選取 SQL 伺服器的螢幕擷取畫面。

  3. 在邏輯伺服器的 [SQL 伺服器] 窗格中,選取 [設定] 底下的 [Microsoft Entra ID],以開啟 [Microsoft Entra ID] 窗格。

  4. 在 [Microsoft Entra ID] 窗格上,選取 [設定管理員] 以開啟 [Microsoft Entra ID] 窗格。

    螢幕擷取畫面顯示設定 SQL Server Microsoft Entra 管理員的選項。

  5. [Microsoft Entra ID] 窗格會顯示您目前的目錄中的所有使用者、群組和應用程式,並可讓您依名稱、別名或識別碼進行搜尋。 尋找 Microsoft Entra 管理員所需的身分識別,選取後按一下 [選取] 以關閉窗格。

  6. 在邏輯伺服器的 [Microsoft Entra ID] 頁面頂端,選取 [儲存]

    螢幕擷取畫面顯示儲存 Microsoft Entra 管理員的選項。

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

變更管理員的程序可能需要幾分鐘的時間。 然後,新的管理員會顯示在 [Microsoft Entra 管理員] 欄位。

若要移除管理員,請在 [Microsoft Entra ID] 頁面頂端選取 [移除管理員],然後選取 [儲存]。 移除 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 管理員。

若要使用 Azure 入口網站來為 SQL 受控執行個體授與 Microsoft Entra ID 讀取權限,請以全域系統管理員特殊權限角色管理員的身分登入並遵循下列步驟:

  1. Azure 入口網站中,在右上角選取您的帳戶,然後選擇 [切換目錄] 以確認哪個目錄是您目前的目錄。 視需要切換目錄。

    Azure 入口網站的螢幕擷取畫面,其中顯示要切換目錄的位置。

  2. Azure 入口網站的 [目錄 + 訂用帳戶] 窗格中,選擇包含受控執行個體的目錄作為 [目前的目錄]

  3. 搜尋 [SQL 受控執行個體],然後選取您的受控執行個體以開啟 [SQL 受控執行個體] 窗格。 然後,選取 [設定] 底下的 [Microsoft Entra ID],以開啟執行個體的 [Microsoft Entra ID] 窗格。

    Azure 入口網站的螢幕擷取畫面,其中顯示針對所選 SQL 受控執行個體開啟的 Microsoft Entra 管理頁面。

  4. 在 [Microsoft Entra 管理員] 窗格上,從導覽列選取 [設定管理員] 以開啟 [Microsoft Entra ID] 窗格。

    此螢幕擷取畫面顯示所選 SQL 受控執行個體的 [Microsoft Entra 管理員] 頁面上醒目提示的 [設定管理員] 命令。

  5. [Microsoft Entra ID] 窗格中,搜尋使用者,核取使用者或群組旁邊的方塊,讓其成為管理員,按 [選取] 關閉窗格,然後返回受控執行個體的 [Microsoft Entra 管理員] 頁面。

    [Microsoft Entra ID] 窗格會顯示您目前目錄中的所有成員和群組。 呈現灰色的使用者或群組無法選取,因為他們不受支援成為 Microsoft Entra 管理員。 選取您想要以管理員身分指派的身分識別。

  6. 從受控執行個體的 [Microsoft Entra 管理員] 頁面導覽列中,選取 [儲存] 以確認您的 Microsoft Entra 管理員。

    Microsoft Entra 管理員頁面的螢幕擷取畫面,其中 [設定管理員] 和 [移除管理員] 按鈕旁頂端列的 [儲存] 按鈕。

    管理員變更作業完成後,新的管理員會出現在 [Microsoft Entra 管理員] 欄位中。

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

提示

若要移除管理員,請在 [Microsoft Entra ID] 頁面頂端選取 [移除管理員],然後選取 [儲存]

指派 Microsoft Graph 權限

在一些案例中,例如授權透過安全性群組成員資格連線的使用者和建立新使用者,SQL 受控執行個體需要有讀取 Microsoft Entra ID 的權限。 爲了讓 Microsoft Entra 驗證能夠運作,您必須將受控執行個體身分識別指派給目錄讀取者角色。 您可以使用 Azure 入口網站或 PowerShell 來執行此作業。

對於某些作業,Azure SQL 資料庫和 Azure Synapse Analytics 還需要具有查詢 Microsoft Graph 的權限,如 Microsoft Graph 權限中所述。 在這些案例中,Azure SQL 資料庫和 Azure Synapse Analytics 支援精細的 Graph 權限,而 SQL 受控執行個體則需要目錄讀取者角色。 在啟用服務主體以建立 Microsoft Entra 使用者中,會詳細説明微調權限及其指派。

目錄讀取者角色

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

  1. 選取 [Microsoft Entra ID] 頁面頂端的橫幅,並向系統指派或使用者指派的代表執行個體的受控識別授與權限。 只能由租用戶中的全域系統管理員或特殊權限角色管理員執行此作業。

    用來將權限授與 SQL 受控執行個體以存取 Microsoft Entra ID 之對話方塊的螢幕擷取畫面,其中已選取 [授與權限] 按鈕。

  2. 作業成功時,右上角會顯示成功通知:

    通知的螢幕擷取畫面,確認受控執行個體已成功更新 Microsoft Entra ID 讀取權限。

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

在 SQL 中建立 Microsoft Entra 主體

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

資料庫使用者權限

建立資料庫使用者時,預設會取得資料庫的 CONNECT 權限。 資料庫使用者在以下兩種情況下也會繼承權限:

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

無論主體類型為何 (Microsoft Entra ID、SQL 驗證等),管理伺服器和資料庫主體的權限都是相同的。 我們建議向資料庫角色授予權限,而不是直接向使用者授予權限。 然後可以將使用者新增至具有適當權限的角色。 這樣可簡化長期權限管理,並降低了身分識別在適當時保留過去存取權的可能性。

如需詳細資訊,請參閱

自主資料庫使用者

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

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

若要為 Microsoft Entra 群組建立自主資料庫使用者,請輸入群組的顯示名稱:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

若要為受控識別或服務主體建立自主資料庫使用者,請輸入身分識別的顯示名稱:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

若要為 Microsoft Entra 使用者建立自主資料庫使用者,請輸入身分識別的使用者主體名稱:

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

登入型使用者

注意

Microsoft Entra 伺服器主體 (登入) 目前為 Azure SQL 資料庫和 Azure Synapse Analytics 的公開預覽版。 Microsoft Entra 登入已正式發行適用於 Azure SQL 受控執行個體和 SQL Server 2022 的版本。

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

CREATE USER [appName] FROM LOGIN [appName];

如需詳細資訊,請參閱 SQL 受控執行個體概觀 (部分機器翻譯)。 如需建立 Microsoft Entra 伺服器主體 (登入) 的語法,請參閱 CREATE LOGIN

外部使用者

不能直接為在不同的 Microsoft Entra 租用戶 (而不是與 Azure 訂用帳戶相關聯的身分識別) 中管理的身分識別建立資料庫使用者。 不過,其他目錄中的使用者可以匯入至相關聯的目錄作為外部使用者。 然後,可以使用它們來建立可存取資料庫的自主資料庫使用者。 外部使用者也可以透過 Microsoft Entra 群組中的成員資格來取得存取權。

範例: 建立代表 Microsoft Entra 同盟或受控網域使用者的自主資料庫使用者:

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

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

命名考量

不支援在 T-SQL CREATE LOGINCREATE 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 命令要求 Azure SQL 代表已登入的使用者存取 Microsoft Entra ID(「外部提供者」)。 有時,會發生導致 Microsoft Entra ID 將例外狀況傳回 Azure SQL 的情況。

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

如需有關根據 Microsoft Entra 身分識別建立自主資料庫使用者的詳細資訊,請參閱建立使用者

設定多重要素驗證

爲了提升 Azure SQL 資源的安全性,請考慮設定多重要素驗證 (MFA),這會提示使用者使用第二種替代方法對資料庫進行驗證,例如電話或 Authenticator 應用程式。

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

使用 Microsoft Entra 進行連線

設定 Microsoft Entra 驗證後,您可以透過 SQL Server Management StudioSQL Server Data Tools 等 Microsoft 工具連線到 SQL 資源,並將用戶端應用程式設定為使用 Microsoft Entra 身分進行連線。

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

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