Azure Synapse Analytics 中的 SQL 驗證
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 系統管理員使用者名稱和 SQL Active Directory 系統管理員 )作為系統管理員。 若要識別 SQL 集區的這些系統管理員帳戶,請開啟Azure 入口網站,然後流覽至 Synapse 工作區的 [屬性] 索引標籤。
SQL 管理員使用者名稱
當您建立 Azure Synapse Analytics 時,您必須將 伺服器管理員登入 命名為 。 SQL Server 會在資料庫中建立該帳戶作為登入
master
。 此帳戶會使用 SQL Server 驗證連線(使用者名稱和密碼)。 只有其中一個帳戶可以存在。SQL Active Directory 管理員
一個 Microsoft Entra 帳戶,無論是個人或安全性群組帳戶,也可以設定為系統管理員。 您可以選擇性地設定 Microsoft Entra 系統管理員,但如果您想要使用 Microsoft Entra 帳戶連線到 Synapse SQL,則必須 設定 Microsoft Entra 系統管理員 。
- Microsoft Entra 系統管理員帳戶可控制專用 SQL 集區的存取權,而 Synapse RBAC 角色可用來控制無伺服器集區的存取,例如 Synapse 管理員istrator 和 Synapse SQL 管理員istrator 角色。
SQL 系統管理員使用者名稱和 SQL Active Directory 系統管理員 帳戶具有下列特性:
- 這是唯一可以自動連線到伺服器上任何SQL 資料庫的帳戶。 (若要連線到使用者資料庫,其他帳戶必須是資料庫的擁有者,或擁有使用者資料庫中的使用者帳戶。
- 這些帳戶會以使用者身分輸入使用者資料庫,
dbo
而且他們擁有使用者資料庫中的擁有權限。 (使用者資料庫的擁有者也會以使用者身dbo
分輸入資料庫。 - 請勿以使用者身分
dbo
輸入master
資料庫,而且資料庫中的許可權有限master
。 - 不是 標準 SQL Server
sysadmin
固定伺服器角色的成員,無法在SQL 資料庫中使用。 - 可以建立、改變和卸載資料庫、登入、資料庫中的使用者
master
,以及伺服器層級 IP 防火牆規則。 - 可以將成員新增和移除至
dbmanager
和loginmanager
角色。 - 可以檢視
sys.sql_logins
系統資料表。
注意
如果使用者設定為 Active Directory 系統管理員和 Synapse 管理員istrator,然後從 Active Directory 系統管理員角色中移除,則使用者將會失去 Synapse 中專用 SQL 集區的存取權。 它們必須移除,然後新增至 Synapse 管理員istrator 角色,才能重新取得專用 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 驗證登入建立的 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_owner、db_ddladmin、db_datawriter 、 db_datareader、 db_denydatawriter 和 db_denydatareader 。 db_owner 通常是用來將完整權限授與少數幾個使用者。 其他固定的資料庫角色適用於快速開發簡單的資料庫,但不建議用於大多數實際執行資料庫。
例如, db_datareader 固定資料庫角色會授與資料庫中每個資料表的讀取權限,這通常比絕對必要。
最好使用 CREATE ROLE 語句來建立您自己的使用者定義資料庫角色,並仔細授與每個角色對商務需求所需的最低許可權。 當使用者是多個角色的成員時,會集所有這些角色的權限在一身。
權限
有超過 100 個權限可在 SQL Database 中分別授與或拒絕。 這些權限有許多為巢狀。 例如,結構描述上的 UPDATE
權限包括該結構描述中每個資料表的 UPDATE
權限。 如同大多數的權限系統,拒絕權限會覆寫授與權限。
因為權限的巢狀本質和數目,可能需要仔細研究,設計適當的權限系統以便適當地保護您的資料庫。
從許可權 (資料庫引擎) 的許可權 清單開始, 並檢閱 資料庫引擎許可權 的海報大小圖形。
考量與限制
在 SQL 資料庫 中管理登入和使用者時,請考慮下列幾點:
- 執行 語句時
CREATE/ALTER/DROP DATABASE
,您必須連接到master
資料庫。 - 無法變更或卸載對應至 伺服器管理員 登入的資料庫使用者。
- 如果已啟用僅限 Microsoft Entra 驗證,伺服器管理員 將會停用。
- US-English 是伺服器管理員 登入的預設語言 。
- 只有系統管理員( 伺服器管理員 登入或 Microsoft Entra 系統管理員)和資料庫中 dbmanager 資料庫角色
master
的成員 有權執行CREATE DATABASE
和DROP DATABASE
語句。 - 執行 語句時
CREATE/ALTER/DROP LOGIN
,您必須連接到master
資料庫。 不過,不建議使用登入。 請改用自主資料庫使用者。 如需詳細資訊,請參閱 自主的資料庫使用者 - 使資料庫可攜。 - 若要連線到使用者資料庫,您必須在連接字串中提供資料庫的名稱。
- 只有伺服器層級主體登入和資料庫中 loginmanager 資料庫角色
master
的成員 具有執行CREATE LOGIN
、ALTER LOGIN
和DROP LOGIN
語句的許可權。 - 在 ADO.NET 應用程式中執行
CREATE/ALTER/DROP LOGIN
和CREATE/ALTER/DROP DATABASE
語句時,不允許使用參數化命令。 如需詳細資訊,請參閱 命令和參數 。 - 使用
FOR/FROM LOGIN
選項執行CREATE USER
語句時,它必須是 Transact-SQL 批次中唯一的語句。 - 使用
WITH LOGIN
選項執行ALTER USER
語句時,它必須是 Transact-SQL 批次中唯一的語句。 CREATE/ALTER/DROP LOGIN
當 Azure Synapse 工作區啟用僅限 Microsoft Entra 驗證時,不支援 和CREATE/ALTER/DROP USER
語句。- 使用者
CREATE/ALTER/DROP
需要ALTER ANY USER
資料庫的許可權。 - 當資料庫角色的擁有者嘗試在該資料庫角色中或從該資料庫角色新增或移除另一個資料庫使用者時,可能會發生下列錯誤: 此資料庫中不存在使用者或角色 'Name'。 因為擁有者看不到使用者,因此會發生此錯誤。 若要解決此問題,請將使用者的許可權授與角色擁有者
VIEW DEFINITION
。
下一步
如需詳細資訊,請參閱 自主的資料庫使用者 - 使資料庫可攜。