Azure Synapse Analytics 中的 SQL 驗證

Tip

Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。

Azure Synapse Analytics 有兩種 SQL 形式,讓您可以控制資源使用量。 本文說明這兩個形式因素如何管理用戶驗證。

若要向 Synapse SQL 進行驗證,您可以使用兩個選項:

  • Microsoft Entra 驗證
  • SQL 驗證

SQL 驗證可讓舊版應用程式以熟悉的方式,以使用者名稱和密碼連線到 Azure Synapse SQL。 不過,Microsoft Entra 驗證可讓您集中管理 Azure Synapse 資源的存取權,例如 SQL 集區。 Azure Synapse Analytics 支援在建立工作區期間和之後停用本機驗證,例如 SQL 驗證。 停用之後,授權用戶隨時都可以啟用本機驗證。 如需僅限 Microsoft Entra 的驗證詳細資訊,請參閱 在 Azure Synapse Analytics 中停用本機驗證

管理帳戶

有兩個系統管理帳戶(SQL 系統管理員用戶名稱和Microsoft Entra admin)作為系統管理員。 若要識別 SQL 集區的這些系統管理員帳戶,請開啟 Azure 入口網站,然後流覽至 Synapse 工作區的 [屬性] 索引卷標。

SQL Server 系統管理員

  • SQL 管理員用戶名稱

    當您建立 Azure Synapse Analytics 時,您必須將 伺服器管理員登入命名為 。 SQL Server 會在資料庫中建立該帳戶作為登入 master 。 此帳戶會使用 SQL Server 驗證連線(使用者名稱和密碼)。 只有其中一個帳戶可以存在。

  • Microsoft Entra 管理員

    一個Microsoft Entra 帳戶,可以是個人或安全組帳戶,也可以設定為系統管理員。 您可以選擇性地設定Microsoft Entra 系統管理員,但如果您想要使用 Microsoft Entra 帳戶來連線到 Synapse SQL,則必須設定Microsoft Entra 系統管理員

    • Microsoft Entra 系統管理員帳戶可控制專用 SQL 集區的存取權,而 Synapse RBAC 角色可用來控制無伺服器集區的存取,例如 Synapse 系統管理員Synapse SQL 系統管理員 角色。

SQL 系統管理員用戶名稱和Microsoft Entra 系統管理員帳戶具有下列特性:

  • 這是唯一可以自動連線到伺服器上任何 SQL 資料庫 的帳戶。 (若要連線到用戶資料庫,其他帳戶必須是資料庫的擁有者,或擁有用戶資料庫中的用戶帳戶。
  • 這些帳戶會以使用者身分輸入用戶資料庫, dbo 而且他們擁有用戶資料庫中的所有許可權。 (使用者資料庫的擁有者也會以 dbo 使用者的身份進入資料庫。)
  • 請勿以master的使用者身分進入dbo資料庫,並且在master資料庫中需擁有有限的許可權。
  • 不是標準 SQL Server sysadmin 固定伺服器角色的成員,無法在 SQL 資料庫 中使用。
  • 可以建立、改變和卸除資料庫、登入、資料庫中的使用者 master ,以及伺服器層級IP防火牆規則。
  • 可以將成員新增和移除至 dbmanagerloginmanager 角色。
  • 可以檢視 sys.sql_logins 系統數據表。

備註

如果使用者被設定為 Microsoft Entra 管理員和 Synapse 管理員,然後被移除 Microsoft Entra 管理員角色,該使用者將失去 Synapse 專用 SQL 池的存取權。 它們必須移除,然後新增至 Synapse 系統管理員角色,才能重新取得專用 SQL 集區的存取權。

若要管理可存取無伺服器 SQL 集區的使用者,您可以使用下列指示。

若要建立無伺服器 SQL 集區的登入,請使用下列語法:

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

當登入存在時,您可以在無伺服器 SQL 集區端點內的個別資料庫中建立使用者,並授與這些使用者所需的許可權。 若要建立使用者,您可以使用下列語法:

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

建立登入和用戶之後,您可以使用一般 SQL Server 語法來授與許可權。

非系統管理員使用者

一般而言,非系統管理員帳戶不需要存取 master 資料庫。 使用 CREATE USER (Transact-SQL) 語句,在資料庫層級建立自主資料庫使用者。

使用者可以是Microsoft Entra 驗證自主資料庫使用者(如果您已將環境設定為 Microsoft Entra 驗證),或 SQL Server 驗證自主資料庫使用者,或 SQL Server 驗證使用者,以 SQL Server 驗證登入為基礎(在上一個步驟中建立)。

若要建立使用者,請連線到資料庫,並執行類似下列範例的語句:

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

一開始,只有其中一個系統管理員或資料庫的擁有者可以建立使用者。 若要授權其他使用者建立新使用者,請使用如下語句,將許可權授與選取的使用者 ALTER ANY USER

GRANT ALTER ANY USER TO Mary;

若要為其他使用者提供資料庫的完整控制權,請讓他們成為db_owner固定資料庫角色的成員

在 Azure SQL 資料庫 或 Synapse 無伺服器中,使用 ALTER ROLE 語句。

ALTER ROLE db_owner ADD MEMBER Mary;

在專用 SQL 集區中使用 EXEC sp_addrolemember

EXEC sp_addrolemember 'db_owner', 'Mary';

備註

根據伺服器登入建立資料庫使用者的其中一個常見原因是需要存取多個資料庫的使用者。 由於自主資料庫用戶是個別實體,因此每個資料庫都會維護自己的使用者和自己的密碼。 這可能會導致額外負荷,因為用戶必須記住每個資料庫的每個密碼,而且當必須變更多個資料庫的密碼時,可能會變得無法運作。

群組和角色

有效率的存取管理會使用指派給群組和角色的許可權,而不是個別使用者。

  • 使用 Microsoft Entra 驗證時,請將 Microsoft Entra 使用者放入 Microsoft Entra 群組中。 為群組建立受限的資料庫使用者。 將一或多個資料庫使用者放入資料庫角色,然後將許可權指派給資料庫角色。

  • 使用 SQL Server 驗證時,請在資料庫中建立自主資料庫使用者。 將一或多個資料庫使用者放入資料庫角色,然後將許可權指派給資料庫角色。

資料庫角色可以是內建角色,例如db_ownerdb_ddladmindb_datawriterdb_datareaderdb_denydatawriterdb_denydatareaderdb_owner 通常是用來將完整權限授與少數幾個使用者。 其他固定的資料庫角色適用於快速開發簡單的資料庫,但不建議用於大多數實際執行資料庫。

例如,db_datareader 固定資料庫角色會授與資料庫中每個數據表的讀取許可權,這通常超出絕對必要的範圍。

最好使用 CREATE ROLE 語句來建立您自己的使用者定義資料庫角色,並仔細授與每個角色對商務需求所需的最低許可權。 當使用者是多個角色的成員時,會集所有這些角色的權限在一身。

權限

有超過 100 個權限可在 SQL Database 中分別授與或拒絕。 這些權限中有許多具有巢狀結構。 例如,結構描述上的 UPDATE 權限包括該結構描述中每個資料表的 UPDATE 權限。 如同大多數的權限系統,權限的拒絕會優先於授與。

因為權限的巢狀本質和數目,可能需要仔細研究,設計適當的權限系統以便適當地保護您的資料庫。

請先參閱權限 (資料庫引擎) 中的權限清單,並檢閱資料庫引擎權限的大型圖表

考量與限制

在 SQL 資料庫 中管理登入和使用者時,請考慮下列幾點:

  • 執行master語句時,您必須連接到CREATE/ALTER/DROP DATABASE資料庫。
  • 無法變更或卸除對應至 伺服器管理員 登入的資料庫使用者。
  • 伺服器管理員 如果啟用了 Microsoft Entra 的僅限驗證,將會被停用。
  • US-English 是伺服器管理員登入的默認語言
  • 只有管理員(伺服器管理員登入或Microsoft Entra 管理員)以及資料庫中的master資料庫角色的成員,才具有執行CREATE DATABASEDROP DATABASE語句的許可權。
  • 執行master語句時,您必須連接到CREATE/ALTER/DROP LOGIN資料庫。 不過,不建議使用帳號登入。 請改用自主資料庫使用者。 如需詳細資訊,請參閱 受控資料庫使用者 - 使資料庫可攜
  • 若要連線到用戶資料庫,您必須在 連接字串 中提供資料庫的名稱。
  • 只有伺服器層級主體登入和 loginmanager 資料庫角色中的成員具有執行masterCREATE LOGINALTER LOGIN 語句的許可權。
  • 在 ADO.NET 應用程式中執行 CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP DATABASE 語句時,不允許使用參數化命令。 如需詳細資訊,請參閱 命令和參數
  • 使用 CREATE USER 選項執行FOR/FROM LOGIN語句時,它必須是 Transact-SQL 批次中唯一的語句。
  • 使用 ALTER USER 選項執行WITH LOGIN語句時,它必須是 Transact-SQL 批次中唯一的語句。
  • Azure Synapse 工作區啟用了 Microsoft Entra 專用驗證時,CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP USER 語句不受支援。
  • 若要 CREATE/ALTER/DROP 使用者,需要在資料庫上具有 ALTER ANY USER 權限。
  • 當資料庫角色的擁有者嘗試在該資料庫角色中或從該資料庫角色新增或移除另一個資料庫使用者時,可能會發生下列錯誤: 此資料庫中不存在使用者或角色 'Name'。 因為擁有者看不到使用者,因此會發生此錯誤。 若要解決此問題,請將用戶的許可權授與角色擁有者 VIEW DEFINITION

如需詳細資訊,請參閱 受控資料庫使用者 - 使資料庫可攜