將資料庫存取權限授與 SQL Database、SQL 受控執行個體和 Azure Synapse Analytics

適用于:Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics

在本文中,您會了解:

  • 用於設定 Azure SQL Database、Azure SQL 受控執行個體和 Azure Synapse Analytics 的選項,可讓使用者執行管理工作,以及存取這些資料庫中儲存的資料。
  • 一開始建立新伺服器之後的存取和授權設定。
  • 如何在 master 資料庫和使用者帳戶中新增登入和使用者帳戶,然後授與這些帳戶管理權限。
  • 如何在使用者資料庫中新增使用者帳戶,其與登入相關聯或作為自主使用者帳戶。
  • 使用資料庫角色和明確許可權,在使用者資料庫中設定具有權限的使用者帳戶。

重要

Azure SQL Database、Azure SQL 受控執行個體和 Azure Synapse 中的資料庫會在本文的其餘部分統稱為資料庫,而且伺服器指的是管理 Azure SQL Database 和 Azure Synapse 資料庫的伺服器

驗證和授權

驗證是證明使用者宣告身分的流程。 使用者會利用使用者帳戶連線到資料庫。 當使用者嘗試連線到資料庫時,他們會提供使用者帳戶和驗證資訊。 使用者會使用下列兩種驗證方法的其中一種來進行驗證:

  • SQL 驗證

    使用此驗證方法時,使用者會提交使用者帳戶名稱和相關聯的密碼以建立連線。 此密碼會儲存在使用者帳戶連結至登入的 master 資料庫中,或儲存在其所含使用者帳戶「未」連結至登入的資料庫中。

  • Azure Active Directory 驗證

    使用此驗證方法時,使用者會提交使用者帳戶名稱,並要求服務使用 Azure Active Directory (Azure AD) 中儲存的認證資訊。

登入和使用者:資料庫中的使用者帳戶可以與儲存在 master 資料庫中的登入相關聯,或者可以是儲存在個別資料庫中的使用者名稱。

  • 登入 是 master 資料庫中的個別帳戶,一個或多個資料庫中的使用者帳戶可以連結至這個帳戶。 登入時,使用者帳戶的認證資訊會與登入一起儲存。
  • 使用者帳戶是任何資料庫中可能但不必連結到登入的個別帳戶。 使用未連結至登入的使用者帳戶時,認證資訊會與使用者帳戶一起儲存。

授權是使用資料庫角色和明確權限來管理,其用來存取資料及執行各種動作。 授權是指系統指派給使用者的權限,並可決定允許使用者執行的動作。 授權是由您使用者帳戶的資料庫角色成員資格物件層級權限來控制的。 最好的作法是,您應該授與使用者所需的最低權限。

建立新資料庫後的現有登入和使用者帳戶

第一次部署 Azure SQL 時,您可以指定管理員登入和該登入的相關聯密碼。 此管理帳戶稱為伺服器管理員。在部署期間,master 和使用者資料庫中的登入和使用者會進行下列設定:

  • 具有系統管理權限的 SQL 登入會使用您指定的登入名稱來建立。 登入是個別的使用者帳戶,用於登入 SQL Database、SQL 受控執行個體和 Azure Synapse。
  • 此登入會被授與所有資料庫的完整系統管理權限,做為 伺服器層級主體。 登入具有所有可用的權限,而且不受限制。 在 SQL 受控執行個體中,此登入會新增至 sysadmin 固定伺服器角色 (此角色不存在於 Azure SQL Database 中)。
  • 在每個使用者資料庫中,會為此登入建立稱為 dbo使用者帳戶dbo 使用者擁有資料庫中的所有資料庫權限,而且會對應至 db_owner 固定資料庫角色。 本文稍後會討論其他固定資料庫角色。

若要識別資料庫的系統管理員帳戶,請開啟 Azure 入口網站,然後瀏覽至伺服器或受控執行個體的 [屬性] 索引標籤。

SQL Server 系統管理員

醒目提示 [屬性] 功能表選項的螢幕擷取畫面。

重要

管理員登入名稱在建立後即無法變更。 若要重設伺服器管理員的密碼,請移至 Azure 入口網站、按一下 [SQL Server]、從清單中選取伺服器,然後按一下 [重設密碼]。 若要重設 SQL 受控執行個體的密碼,請移至 Azure 入口網站、按一下執行個體,然後按一下 [重設密碼]。 您也可以使用 Azure PowerShell 或 Azure CLI。

建立其他具有系統管理權限的登入和使用者

目前,您的伺服器或授控執行個體只會設定為使用單一 SQL 登入和使用者帳戶進行存取。 若要建立具有完整或部分系統管理權限的其他登入,您有下列選項 (視您的部署模式而定):

  • 建立具有完整系統管理權限的 Azure Active Directory 系統管理員帳戶

    啟用 Azure Active Directory 驗證,並建立 Azure AD 系統管理員登入。 Azure Active Directory 帳戶可以設定為 Azure SQL 部署的管理員,其具有完整的系統管理權限。 此帳戶可以是個人或安全性群組帳戶。 如果您想要使用 Azure AD 帳戶連線到 SQL Database、SQL 受控執行個體或 Azure Synapse,則必須設定 Azure AD 管理員。 如需針對所有 Azure SQL 部署類型啟用 Azure AD 驗證的詳細資訊,請參閱下列文章:

  • 在 SQL 受控執行個體中,建立具有完整系統管理權限的 SQL 登入

  • 在 SQL Database 中,建立具有限定系統管理權限的 SQL 登入

    • 在 master 資料庫中建立額外的 SQL 登入。
    • 在與這個新登入相關聯的 master 資料庫中建立使用者帳戶。
    • master 資料庫中,將使用者帳戶新增至 dbmanagerloginmanager 角色或兩者,方法為使用 ALTER ROLE 陳述式 (若為 Azure Synapse,請使用 sp_addrolemember 陳述式)。

    注意

    dbmanagerloginmanager 角色不會與 SQL 受控執行個體部署相關。

    這些特殊 master 資料庫角色 (適用於 Azure SQL Database) 的成員有權建立和管理資料庫,或建立和管理登入。 在使用者 (屬於 dbmanager 角色的成員) 建立的資料庫中,該成員會對應到 db_owner 固定資料庫角色,而且可以使用 dbo 使用者帳戶來登入和管理該資料庫。 這些角色在 master 資料庫的外部沒有明確權限。

    重要

    在 SQL Database 中,您無法建立其他具有完整系統管理權限的 SQL 登入。

為非系統管理員使用者建立帳戶

您可以使用下列兩種方法的其中一種,為非系統管理使用者建立帳戶:

  • 建立登入

    在 master 資料庫中建立 SQL 登入。 然後,在使用者需要存取的每個資料庫中建立使用者帳戶,並將使用者帳戶與該登入建立關聯。 當使用者必須存取多個資料庫,而且您想要密碼保持同步時,這是慣用的方法。 不過,這種方法在與異地複寫搭配使用時會很複雜,因為必須同時在主要伺服器和次要伺服器上建立登入。 如需詳細資訊,請參閱建立和管理 Azure SQL Database 安全性以供異地還原或容錯移轉使用

  • 建立使用者帳戶

    在使用者需要存取的資料庫中建立使用者帳戶 (也稱為自主使用者)。

    • 使用 SQL Database 時,您一律可以建立這種類型的使用者帳戶。
    • 使用支援 Azure AD 伺服器主體的 SQL 受控執行個體時,您可以建立使用者帳戶,對 SQL 受控執行個體進行驗證,而不需要將資料庫使用者建立為自主資料庫使用者。

    使用此方法時,使用者驗證資訊會儲存在每個資料庫中,並自動複寫到異地複寫的資料庫。 不過,如果同一個帳戶存在於多個資料庫中,而且您使用的是 Azure SQL 驗證,您必須手動將密碼保持同步。 此外,如果使用者在不同的資料庫中具有不同密碼的帳戶,請記住這些密碼可能會造成問題。

重要

若要建立對應至 Azure AD 身分識別的自主使用者,您必須使用 Azure SQL Database 中資料庫的 Azure AD 帳戶來登入。 在 SQL 受控執行個體中,具有 sysadmin 權限的 SQL 登入也可以建立 Azure AD 登入或使用者。

如需示範如何建立登入和使用者的範例,請參閱:

提示

如需包含在 Azure SQL Database 中建立使用者的安全性教學課程,請參閱教學課程:保護 Azure SQL Database 安全

使用固定和自訂資料庫角色

在資料庫中建立使用者帳戶之後,您可以根據登入或以自主使用者身分,授權該使用者執行各種動作,並存取特定資料庫中的資料。 您可以使用下列方法來授權存取:

  • 固定資料庫角色

    將使用者帳戶新增至固定資料庫角色。 有 9 個固定資料庫角色,每個都有一組已定義的權限。 最常用的固定資料庫角色如下:db_ownerdb_ddladmindb_datawriterdb_datareaderdb_denydatawriterdb_denydatareaderdb_owner 通常是用來將完整權限授與少數幾個使用者。 其他固定的資料庫角色適用於快速開發簡單的資料庫,但不建議用於大多數實際執行資料庫。 例如,db_datareader 固定資料庫角色可授與資料庫中每個資料表的讀取存取權,這並非絕對必要。

  • hbu yrmn 資料庫角色

    使用 CREATE ROLE 陳述式來建立自訂資料庫角色。 自訂角色可讓您建立自己的使用者定義資料庫角色,並謹慎地授與每個角色在業務需求上所需的最小權限。 然後,您可以將使用者新增至自訂角色。 當使用者是多個角色的成員時,會集所有這些角色的權限在一身。

  • 直接授與權限

    直接將權限授與使用者帳戶。 有超過 100 個權限可在 SQL Database 中分別授與或拒絕。 這些權限有許多為巢狀。 例如,結構描述上的 UPDATE 權限包括該結構描述中每個資料表的 UPDATE 權限。 如同大多數的權限系統,拒絕權限會覆寫授與權限。 因為權限的巢狀本質和數目,可能需要仔細研究,設計適當的權限系統以便適當地保護您的資料庫。 請從權限 (Database Engine) 的權限清單開始著手,然後檢閱海報大小的權限圖

使用群組

有效存取管理會使用指派給 Active Directory 安全性群組以及固定或自訂角色的權限,而不是指派給個別使用者的權限。

  • 使用 Azure Active Directory 驗證時,將 Azure Active Directory 使用者放入 Azure Active Directory 安全性群組中。 建立群組的自主資料庫使用者。 將一或多個資料庫使用者新增為自訂或內建資料庫角色的成員,而這些角色具有適用於該使用者群組的特定權限。

  • 使用 SQL 驗證時,在資料庫中建立自主資料庫使用者。 將一個或多個資料庫使用者放入自訂資料庫角色中,此角色具有適合該使用者群組的特定權限。

    注意

    您也可以使用非自主資料庫使用者的群組。

您應該熟悉下列功能,這些功能可用來限制或提高權限︰

後續步驟

如需所有 Azure SQL Database 和 SQL 受控執行個體安全性功能的概觀,請參閱安全性概觀