Microsoft Entra 伺服器主體

你可以從 Microsoft Entra ID(前身為 Azure Active Directory)建立並使用伺服器主體,作為 Azure Synapse Analytics 專用 SQL 集區之虛擬master資料庫中的登入。

Note

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

使用 Microsoft Entra 伺服器主體搭配專用 SQL 池有多項好處:

  • 支援 用於權限管理的伺服器角色。
  • 支援具有 Azure Synapse Analytics 特殊角色的多個 Microsoft Entra 使用者,例如 loginmanager 和 dbmanager 等角色。
  • SQL 登入與 Microsoft Entra 登入之間的功能同位。
  • 增加功能改進支援,例如使用 僅限 Microsoft Entra 的驗證。 僅限 Microsoft Entra 的驗證可讓你停用 SQL 認證,其中包括 SQL 伺服器管理員、SQL 登入和使用者。
  • 使用具有特殊角色的 Microsoft Entra 服務主體登入,透過 Microsoft Entra 應用程式完全實現使用者和資料庫建立與維護自動化。

欲了解更多資訊,請參閱 適用於 Azure Synapse Analytics 的 Microsoft Entra 驗證。

Permissions

要在虛擬master資料庫中使用或建立 Microsoft Entra 登入,您需要以下權限:

  • Microsoft Entra 管理員權限,或屬於 loginmanager 伺服器角色的成員資格。 只有 Microsoft Entra 管理員能建立第一個 Microsoft Entra 登入帳號。
  • 必須是位於 Azure Synapse Analytics 所使用的相同目錄中的 Microsoft Entra ID 成員。

預設情況下,在 master 資料庫中新建立的 Microsoft Entra 登入,會被授與 VIEW ANY DATABASE 權限。

Microsoft Entra 主體語法

使用下列語法來建立和管理 Microsoft Entra 伺服器及資料庫主體。

建立登入

此語法會根據 Microsoft Entra 身分識別建立伺服器層級的登入。 只有 Microsoft Entra 管理員能在虛擬master資料庫中執行此指令。

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

login_name 指定 Microsoft Entra 主體,包括 Microsoft Entra 使用者、群組或應用程式。

如需詳細資訊,請參閱 CREATE LOGIN (Transact-SQL)。

從登入建立使用者

下列 T-SQL 語法會建立資料庫層級的 Microsoft Entra 主體,該主體對應至虛擬 master 資料庫中的 Microsoft Entra 登入。 與建立資料庫中包含的 Microsoft Entra 使用者的語法類似,唯一的差異在於指定 FROM LOGIN [login_name] 而不是 FROM EXTERNAL PROVIDER。

若要從 Microsoft Entra 登入建立 Microsoft Entra 使用者,請使用下列語法:

CREATE USER [user_name] FROM LOGIN [login_name]

您可以使用 SID 中的 資料行,來區分 Microsoft Entra 自主資料庫使用者與根據登入所建立的 Microsoft Entra 使用者。 對於自主資料庫使用者,SID 是長度為 16 的二進位字串。 對於以登入為基礎的使用者,SID 的長度為 18,尾碼為 AADE。

Note

在 SID 後加上 AADE 後綴,這是用來識別 Microsoft Entra 使用者為從登入建立的方式。 然而,這也代表登入及其使用者的 SID 在 sys.database_principals 和 sys.server_principals 之間不相符。 要將使用者與其登入連結起來,必須先移除 AADE 後綴。

若要了解以登入為基礎的使用者與自主資料庫使用者之間的概念差異,請參閱自主資料庫使用者。

如需所有建立使用者語法的詳細資訊,請參閱 CREATE USER (Transact-SQL)。

使用 ALTER LOGIN 來停用或啟用登入

使用 ALTER LOGIN (Transact-SQL) DDL 語法來啟用或停用Azure Synapse Analytics專用 SQL 池中的 Microsoft Entra 登入。

ALTER LOGIN [login_name] DISABLE

當你停用登入名稱後,伺服器主體名稱就無法再連線了。 停用登入也會阻止你從該登入建立的所有資料庫主體(使用者)連接到各自的資料庫。

Note

  • ALTER LOGIN login_name DISABLE 無法影響 自主資料庫使用者,因為它們與登入無關聯。

  • ALTER LOGIN login_name DISABLE不適用於 Microsoft Entra 群組。

  • 一個被停用的登入帳號不能屬於屬於你在 master 資料庫中建立的登入群組(例如 Microsoft Entra 管理員群組)的使用者。

  • 要讓 DISABLE 或 ENABLE 變更立即生效,請使用以下 T-SQL 指令清除驗證快取和 TokenAndPermUserStore 快取:

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
    

限制和備註

  • SQL Server 管理員無法在任何資料庫中建立 Microsoft Entra 登入或使用者。
  • Azure Synapse Analytics 工作空間中的專用 SQL 池不使用邏輯 SQL 伺服器。
  • SQL 管理員或 SQL 使用者無法執行下列 Microsoft Entra 作業:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Azure Synapse Analytics 不支援 Microsoft Entra server principals (logins)模擬:
  • Microsoft Entra 登入無法與 Microsoft Entra 管理員重疊。 Microsoft Entra 管理員的優先順序高於任何登入帳戶。 如果 Microsoft Entra 帳戶已經以 Microsoft Entra 管理員的身分或群組的一部分存取伺服器,則針對此帳戶建立的任何登入都不會有任何影響。 但是,登入建立不能透過 T-SQL 封鎖。 帳號在向伺服器認證後,此登入具有 Microsoft Entra 管理員的有效權限,而非新建立的登入權限。
  • 不支援更改特定 Microsoft Entra 登入物件的權限:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • 當你更改 Microsoft Entra 登入權限時,預設變更只會在下一次登入連接到專用 SQL 池時生效。 任何與該登入相關的現有開啟連線都不會受到影響。 若要強制權限變更立即生效,可以手動清除驗證和 TokenAndPermUserStore,如先前在使用 ALTER LOGIN 停用或啟用登入中所述。 使用 ALTER SERVER ROLE 變更伺服器角色成員資格時,也會套用此行為。
  • 在 SQL Server Management Studio 中,建立使用者的腳本命令不會檢查是否已經有相同名稱的 Microsoft Entra 登入 master 。 它一律會為內含資料庫 Microsoft Entra 使用者產生 T-SQL。
  • 如果嘗試從具有非唯一顯示名稱的服務主體建立登入或使用者,可能會發生錯誤。 欲了解更多關於緩解此錯誤的資訊,請參閱 名稱考量。
  • 使用 Microsoft Entra 登入建立的資料庫使用者在獲得角色與權限時可能會遇到延遲。 如果你遇到這個問題,請使用以下指令:
    • 從使用者資料庫中刪除使用者。
    • 執行 DBCC FREESYSTEMCACHE('TokenAndPermUserStore') 以清除資料庫的安全性快取。
    • 執行 DBCC FLUSHAUTHCACHE 以清除聯邦驗證內容快取。
    • 根據登入建立使用者。

Microsoft Entra 群組伺服器主體限制

以下限制適用於 Azure Synapse Analytics 中的 Microsoft Entra 群組登入:

  • Microsoft Entra 群組不支援伺服器角色。
  • 如果你的 SQL 管理員是 Microsoft Entra 群組,該群組的使用者在連接時會遇到一些限制。 sys.server_principals表格中不會單獨列出每位 Microsoft Entra 使用者。 此限制帶來多種後果,包括呼叫 SUSER_SID 返回 NULL。
  • 屬於 Microsoft Entra 群組登入的 Microsoft Entra 使用者登入並非隱含建立。 這些使用者沒有預設結構描述,在你為 Microsoft Entra 使用者建立登入帳號或指派預設結構描述給群組之前,無法執行例如 CREATE SCHEMA 等操作。
  • 你不能把資料庫的所有權改成 Microsoft Entra 群組作為資料庫擁有者。
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] 失敗並出現錯誤訊息:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

下一步