將資料庫存取權限授與 SQL Database、SQL 受控執行個體和 Azure Synapse Analytics
適用於:Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics
在本文中,您會了解:
- 適用於 Azure SQL 資料庫、Azure SQL 受控執行個體和 Azure Synapse Analytics 的設定選項,可讓使用者執行管理工作,以及存取這些資料庫中儲存的資料。
- 一開始建立新伺服器之後的存取和授權設定。
- 如何在
master
資料庫中新增登入和使用者帳戶,然後授與這些帳戶管理權限。 - 如何在使用者資料庫中新增使用者帳戶,其與登入相關聯或作為自主使用者帳戶。
- 使用資料庫角色和明確許可權,在使用者資料庫中設定具有權限的使用者帳戶。
重要
Azure SQL Database、Azure SQL 受控執行個體和 Azure Synapse 中的資料庫會在本文的其餘部分統稱為資料庫,伺服器指的則是管理 Azure SQL Database 和 Azure Synapse 資料庫的邏輯伺服器。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
驗證和授權
驗證是證明使用者宣告身分的流程。 使用者會利用使用者帳戶連線到資料庫。 當使用者嘗試連線到資料庫時,他們會提供使用者帳戶和驗證資訊。 使用者會使用下列兩種驗證方法的其中一種來進行驗證:
-
使用此驗證方法時,使用者會提交使用者帳戶名稱和相關聯的密碼以建立連線。 此密碼會儲存在使用者帳戶連結至登入的
master
資料庫中,或儲存在其所含使用者帳戶未連結至登入的資料庫中。注意
Azure SQL Database 只會強制執行密碼原則的密碼複雜度。 如需 Azure SQL 受控執行個體中的密碼原則,請參閱 Azure SQL 受控執行個體常見問題 (FAQ)。
-
使用此驗證方法時,使用者會提交使用者帳戶名稱,並要求服務使用 Microsoft Entra ID (前身為 Azure Active Directory) 中儲存的認證資訊。
登入和使用者:資料庫中的使用者帳戶可以與儲存在 master
資料庫中的登入相關聯,或者可以是儲存在個別資料庫中的使用者名稱。
- 登入是
master
資料庫中的個別帳戶,一或多個資料庫中的使用者帳戶可以連結至這個帳戶。 登入時,使用者帳戶的認證資訊會與登入一起儲存。 - 使用者帳戶是任何資料庫中可以但未必要連結到登入的個別帳戶。 使用未連結至登入的使用者帳戶時,認證資訊會與使用者帳戶一起儲存。
授權是使用資料庫角色和明確權限來管理,其用來存取資料及執行各種動作。 授權是指系統指派給使用者的權限,並可決定允許使用者執行的動作。 授權是由您使用者帳戶的資料庫角色成員資格和物件層級權限來控制的。 最好的作法是,您應該授與使用者所需的最低權限。
建立新資料庫後的現有登入和使用者帳戶
當您第一次部署 Azure SQL 時,您可以為特殊類型的系統管理登入指定登入名稱和密碼,也就是伺服器管理員。在部署期間,master 和使用者資料庫中的登入和使用者設定如下:
- 具有系統管理權限的 SQL 登入會使用您指定的登入名稱來建立。 登入是用於登入 SQL Database、SQL 受控執行個體和 Azure Synapse 的個別的帳戶。
- 此登入會被授與所有資料庫的完整系統管理權限,做為 伺服器層級主體。 登入具有所有可用的權限,而且不受限制。 在 SQL 受控執行個體中,此登入會新增至 sysadmin 固定伺服器角色 (此角色不存在於 Azure SQL Database 中)。
- 當此帳戶登入資料庫時,會比對存在於每個使用者資料庫中的特殊使用者帳戶
dbo
(使用者帳戶)。 dbo 使用者擁有資料庫中的所有資料庫權限,且是db_owner
固定資料庫角色的成員。 本文稍後會討論其他固定資料庫角色。
若要識別伺服器管理員帳戶,請開啟 Azure 入口網站,然後瀏覽至邏輯伺服器或受控執行個體的 [屬性] 索引標籤:
重要
伺服器管理員帳戶名稱建立之後即無法變更。 若要重設伺服器管理員的密碼,請移至 Azure 入口網站、選取 [SQL Server]、從清單選取伺服器,然後選取 [重設密碼]。 若要重設 SQL 受控執行個體的密碼,請移至 Azure 入口網站、選取執行個體,然後選取 [重設密碼]。 您也可以使用 Azure PowerShell 或 Azure CLI。
建立其他具有系統管理權限的登入和使用者
目前,您的伺服器或授控執行個體只會設定為使用單一 SQL 登入和使用者帳戶進行存取。 若要建立具有完整或部分系統管理權限的其他登入,您有下列選項 (視您的部署模式而定):
建立具有完整系統管理權限的 Microsoft Entra 系統管理員帳戶
啟用 Microsoft Entra 驗證並新增 Microsoft Entra 系統管理員。Microsoft Entra 帳戶可以設定為 Azure SQL 部署的系統管理員,其具有完整的系統管理權限。 此帳戶可以是個人或安全性群組帳戶。 如果您想要使用 Microsoft Entra 帳戶連線到 SQL Database、SQL 受控執行個體或 Azure Synapse,則必須設定 Microsoft Entra 管理員。 如需針對所有 Azure SQL 部署類型啟用 Microsoft Entra 驗證的詳細資訊,請參閱下列文章:
在 SQL 受控執行個體中,建立具有完整系統管理權限的 SQL 登入
- 在
master
資料庫中建立額外的 SQL 登入。 - 使用 ALTER SERVER ROLE 陳述式,將登入新增至 sysadmin 固定伺服器角色。 此登入將具有完整的系統管理權限。
- 或者,使用 CREATE LOGIN 語法,建立 Microsoft Entra 登入。
注意
dbmanager
和loginmanager
角色不會與 Azure SQL 受控執行個體部署相關。- 在
在 SQL Database 中,建立具有限定系統管理權限的 SQL 登入
- 在
master
資料庫中建立額外的 SQL 登入。 - 使用 ALTER SERVER ROLE 陳述式,將該登入新增至
##MS_DatabaseManager##
、##MS_LoginManager##
和##MS_DatabaseConnector##
伺服器層級角色。
特殊
master
資料庫角色 (適用於 Azure SQL 資料庫) 的成員有權建立和管理資料庫,或建立和管理登入。 在使用者 (屬於dbmanager
角色的成員) 建立的資料庫中,該成員會對應到db_owner
固定資料庫角色,而且可以使用dbo
使用者帳戶來登入和管理該資料庫。 這些角色在master
資料庫的外部沒有明確權限。重要
在 Azure SQL 資料庫中,您無法建立其他具有完整系統管理權限的 SQL 登入。 只有伺服器管理員帳戶或 Microsoft Entra 管理員帳戶 (可能是 Microsoft Entra 群組) 可以將其他登入新增至伺服器角色,或者從伺服器角色中移除其他登入。 這是 Azure SQL 資料庫特定的。
- 在
在 Azure Synapse 專用 SQL 集區中,建立具有限定管理權限的 SQL 登入
- 在
master
資料庫中建立額外的 SQL 登入。 - 在與這個新登入相關聯的
master
資料庫中建立使用者帳戶。 - 在
master
資料庫中使用 sp_addrolemember 陳述式,將使用者帳戶新增至dbmanager
及/或loginmanager
角色。
- 在
在 Azure Synapse 無伺服器 SQL 集區中,建立具有限定管理權限的 SQL 登入
- 在
master
資料庫中建立額外的 SQL 登入。 - 使用 ALTER SERVER ROLE 陳述式,將 SQL 登入新增至 sysadmin 固定伺服器角色。
- 或者,使用 CREATE LOGIN 語法,建立 Microsoft Entra 登入。
- 在
為非系統管理員使用者建立帳戶
您可以使用下列兩種方法的其中一種,為非系統管理使用者建立帳戶:
建立登入
在
master
資料庫中建立 SQL 登入。 然後,在使用者需要存取的每個資料庫中建立使用者帳戶,並將使用者帳戶與該登入建立關聯。 當使用者必須存取多個資料庫,而且您想要密碼保持同步時,這是慣用的方法。 不過,這種方法在與異地複寫搭配使用時會很複雜,因為必須同時在主要伺服器和次要伺服器上建立登入。 如需詳細資訊,請參閱建立和管理 Azure SQL Database 安全性以供異地還原或容錯移轉使用。建立使用者帳戶
在使用者需要存取的資料庫中建立使用者帳戶 (也稱為自主使用者)。
- 使用 SQL Database 時,您一律可以建立這種類型的使用者帳戶。
- 使用支援 Microsoft Entra 伺服器主體的 SQL 受控執行個體時,您可以建立使用者帳戶,對 SQL 受控執行個體進行驗證,而不需要將資料庫使用者建立為自主資料庫使用者。
使用此方法時,使用者驗證資訊會儲存在每個資料庫中,並自動複寫到異地複寫的資料庫。 不過,如果同一個帳戶存在於多個資料庫中,而且您使用的是 SQL 驗證,您必須手動將密碼保持同步。 此外,如果使用者在不同的資料庫中具有不同密碼的帳戶,請記住這些密碼可能會造成問題。
重要
若要建立對應至 Microsoft Entra 身分識別的自主使用者,您必須使用 Azure SQL 資料庫 中資料庫的 Microsoft Entra 帳戶來登入。 在 SQL 受控執行個體中,具有 sysadmin
權限的 SQL 登入也可以建立 Microsoft Entra 登入或使用者。
如需示範如何建立登入和使用者的範例,請參閱:
- 建立 Azure SQL Database 的登入
- 建立 Azure SQL 受控執行個體的登入
- 建立 Azure Synapse 的登入
- 建立使用者
- 建立 Microsoft Entra 自主使用者
提示
如需包含在 Azure SQL Database 中建立使用者的安全性教學課程,請參閱教學課程:保護 Azure SQL Database 安全。
使用固定和自訂資料庫角色
在資料庫中建立使用者帳戶之後,您可以根據登入或以自主使用者身分,授權該使用者執行各種動作,並存取特定資料庫中的資料。 您可以使用下列方法來授權存取:
固定資料庫角色
將使用者帳戶新增至固定資料庫角色。 有 9 個固定資料庫角色,每個都有一組已定義的權限。 最常用的固定資料庫角色如下:db_owner、db_ddladmin、db_datawriter、db_datareader、db_denydatawriter 和 db_denydatareader。 db_owner 通常是用來將完整權限授與少數幾個使用者。 其他固定的資料庫角色適用於快速開發簡單的資料庫,但不建議用於大多數實際執行資料庫。 例如,db_datareader 固定資料庫角色可授與資料庫中每個資料表的讀取存取權,這並非絕對必要。
若要將使用者新增至固定資料庫角色:
- 在 Azure SQL 資料庫 和 Azure Synapse 無伺服器 SQL 集區中,使用 ALTER ROLE 陳述式。 如需範例,請參閱 ALTER ROLE 範例
- 在 Azure Synapse 專用 SQL 集區中,使用 sp_addrolemember 陳述式。 如需範例,請參閱 sp_addrolemember 範例。
hbu yrmn 資料庫角色
使用 CREATE ROLE 陳述式來建立自訂資料庫角色。 自訂角色可讓您建立自己的使用者定義資料庫角色,並謹慎地授與每個角色在業務需求上所需的最小權限。 然後,您可以將使用者新增至自訂角色。 當使用者是多個角色的成員時,會集所有這些角色的權限在一身。
直接授與權限
直接將權限授與使用者帳戶。 有超過 100 個權限可在 SQL Database 中分別授與或拒絕。 這些權限有許多為巢狀。 例如,結構描述上的
UPDATE
權限包括該結構描述中每個資料表的UPDATE
權限。 如同大多數的權限系統,拒絕權限會覆寫授與權限。 因為權限的巢狀本質和數目,可能需要仔細研究,設計適當的權限系統以便適當地保護您的資料庫。 請從權限 (Database Engine) 的權限清單開始著手,然後檢閱海報大小的權限圖。
使用群組
有效存取管理會使用指派給 Active Directory 安全性群組以及固定或自訂角色的權限,而不是指派給個別使用者的權限。
使用 Microsoft Entra 驗證時,將 Microsoft Entra 使用者放入 Microsoft Entra 安全性群組。 建立群組的自主資料庫使用者。 將一或多個資料庫使用者新增為自訂或內建資料庫角色的成員,而這些角色具有適用於該使用者群組的特定權限。
使用 SQL 驗證時,在資料庫中建立自主資料庫使用者。 將一個或多個資料庫使用者放入自訂資料庫角色中,此角色具有適合該使用者群組的特定權限。
注意
您也可以使用非自主資料庫使用者的群組。
您應該熟悉下列功能,這些功能可用來限制或提高權限︰