你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

授予对 Azure SQL 数据库的访问权限

适用于:Azure SQL 数据库

在本文中,您将了解:

  • Azure SQL 数据库的配置选项,使用户能够执行管理任务并访问存储在这些数据库中的数据。
  • 创建新服务器后的访问权限和授权配置。
  • 如何在数据库中添加登录名和用户帐户 master ,并授予这些帐户管理权限。
  • 如何在用户数据库中添加用户帐户(与登录名关联或作为包含的用户帐户)。
  • 如何使用数据库角色和显式权限在用户数据库中配置具有权限的用户帐户。
  • 有关Azure SQL 托管实例,请参阅授权数据库访问SQL 托管实例
  • 有关Azure Synapse Analytics,请参阅授权数据库访问Azure Synapse Analytics

注意

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

身份验证和授权

身份验证是证明用户所声明身份的过程。 用户使用用户帐户连接到数据库。

当用户尝试连接到数据库时,需要提供用户帐户和身份验证信息。 用户使用以下两种身份验证方法之一进行身份验证:

登录名和用户:可以将数据库中的用户帐户与数据库存储的登录名 master 相关联,也可以使其成为单个数据库存储的用户名。

  • 登录名master数据库中的一个帐户,你可以将一个或多个数据库中的用户帐户链接到该登录名。 通过使用登录,可以存储与该登录关联的用户帐户凭据信息。
  • 用户帐户是任何数据库中的一个个人帐户,可以关联到登录,但不一定必须关联。 使用未链接到登录名的用户帐户时,凭据信息将与该用户帐户一起存储。

授权通过数据库角色和显式权限来管理对数据的访问以及各种操作的执行。 授权是指分配给用户的权限,并确定允许用户执行的操作。 用户账户的数据库 角色成员资格对象级权限 决定授权。 最佳做法是向用户授予所需的最低权限。

创建新数据库后的现有登录名和用户帐户

首次部署Azure SQL资源时,请为特殊类型的管理登录名指定登录名和密码,即 Server admin。在部署期间,master 和用户数据库中的登录名和用户配置如下:

重要

不要在服务器管理员登录名字段中包括任何个人、敏感或机密信息。 在此字段中输入的数据不被视为 客户数据

  • 部署过程使用指定的登录名创建具有管理权限的 SQL 身份验证登录名。 登录名是用于登录 Azure SQL 数据库 的单独账户。
  • 部署过程会将此登录名授予为服务器级主体,使其对所有数据库具有完全管理权限。 此登录名具有所有可用权限,且不受限制。
  • 当此帐户登录到数据库时,它与每个用户数据库中存在的特殊用户帐户 dbo用户帐户)匹配。 dbo 用户拥有数据库中的所有数据库权限,并且是 db_owner 固定数据库角色的成员。 本文稍后将讨论其他固定数据库角色。

若要标识 服务器管理员 帐户,请执行以下操作:

  1. 转到 aka.ms/azuresqlhub 访问 Azure SQL 中心。
  2. 在资源菜单中,转到Azure SQL 数据库逻辑服务器。
  3. “设置”下,选择 “属性” 页。
  4. 查看 服务器管理员登录 的值或 Microsoft Entra 管理员 的值。

重要

创建 服务器管理员 帐户后,无法更改该帐户的名称。 要重置服务器管理员的密码,请转到 Azure 门户,选择“SQL Server”,从列表中选择该服务器,然后选择“重置密码”

创建具有管理权限的其他登录名和用户

此时,SQL 逻辑服务器配置为使用单个 SQL 身份验证登录名和用户帐户进行访问。 若要创建具有完整或部分管理权限的其他登录名,请使用以下选项。

  • 创建具有完全管理权限的 Microsoft Entra 管理员帐户

    启用Microsoft Entra身份验证并添加Microsoft Entra管理员。可以将一个Microsoft Entra帐户配置为具有完全管理权限的Azure SQL部署管理员。 此帐户可以是个人帐户或安全组帐户。 如果要使用Microsoft Entra帐户连接到Azure SQL 数据库,则必须配置Microsoft Entra管理员。 有关为所有 Azure SQL 部署类型启用 Microsoft Entra 身份验证的详细信息,请参阅以下文章:

  • 在 SQL 数据库中,创建具有有限管理权限的 SQL 身份验证登录名

    • master 数据库中创建其他 SQL 身份验证登录名。

    Azure SQL 数据库的特殊 master 数据库角色的成员有权创建和管理数据库或登录名。 在由属于 dbmanager 角色成员的用户创建的数据库中,该成员会被映射到 db_owner 固定数据库角色,并且可以使用 dbo 用户账户登录并管理该数据库。 这些角色在 master 数据库之外没有显式权限。

    重要

    无法在Azure SQL 数据库中创建具有完全管理权限的其他 SQL 身份验证登录名。 只有服务器管理员帐户或 Microsoft Entra 管理员帐户(可以是 Microsoft Entra 组)才能向服务器角色添加或删除其他登录名。 此限制特定于Azure SQL 数据库。

为非管理员用户创建帐户

使用以下方法之一为非管理员用户创建帐户:

  • 创建登录名

    master 数据库中创建 SQL 身份验证登录名。 然后在用户需要访问的每个数据库中创建一个用户帐户,并将该用户帐户与登录名相关联。 当用户需要访问多个数据库并且想要保持密码同步时,请使用此方法。 但是,此方法在将其用于异地复制时增加了复杂性,因为必须在主服务器和辅助服务器上创建登录名。 有关详细信息,请参阅针对异地还原或故障转移配置和管理 Azure SQL 数据库的安全性

  • 创建用户帐户

    在用户需要访问的数据库中创建一个用户帐户(也称为 包含数据库用户)。

    通过使用此方法,用户身份验证信息存储在每个数据库中,并自动复制到异地复制的数据库。 但是,如果多个数据库中存在同一帐户并且正在使用 SQL 身份验证,则必须手动同步密码。 此外,如果用户在不同的数据库中具有密码不同的帐户,则可能会很难记住这些密码。

重要

若要创建映射到 Microsoft Entra 身份的包含用户,必须使用 Azure SQL 数据库 中数据库里的 Microsoft Entra 帐户登录。

有关如何创建登录名和用户的示例,请参阅:

提示

有关在 Azure SQL 数据库中创建用户的安全教程,请参阅 教程:保护 Azure SQL 数据库中的数据库

使用固定数据库角色和自定义数据库角色

在数据库中创建用户帐户后,可以授权该用户基于登录名或以包含的用户身份执行各种操作及访问特定数据库中的数据。 使用以下方法来授权访问:

  • 固定数据库角色

    将用户帐户添加到固定数据库角色。 有 9 个固定数据库角色,每个角色都有一组定义的权限。 最常用的固定数据库角色为:db_owner、db_ddladmin、db_datawriter、db_datareader、db_denydatawriter 和 db_denydatareader。 使用 db_owner 仅向少数用户授予完全权限。 其他固定数据库角色可用于快速获取开发中的简单数据库,但不建议用于大多数生产数据库。 例如,db_datareader 固定数据库角色授予用户对数据库中每个表的读取访问权限,这超出了必要的范畴。

    • 若要将用户添加到固定数据库角色:

  • 自定义数据库角色

    使用 CREATE ROLE 语句创建自定义数据库角色。 使用自定义角色可以创建自己的用户定义数据库角色,并根据业务需求慎重地向每个角色授予所需的最低权限。 然后将用户添加到自定义角色。 如果用户是多个角色的成员,则会聚合所有这些角色的权限。

  • 直接授予权限

    直接为用户帐户授予权限。 可以单独授予或拒绝 100 多个权限。 这些权限中,许多都是嵌套式的。 例如,针对架构的 UPDATE 权限包括针对该架构中每个表的 UPDATE 权限。 大多数权限系统中,拒绝权限会优先于授予权限。 考虑到权限的嵌套性质和数目,可能需要进行仔细的研究才能设计出适当的权限系统,以便对数据库进行恰当的保护。 从权限(数据库引擎)中的权限列表开始,并查看这些权限的海报尺寸图示

使用组

高效的访问管理将权限分配给Microsoft Entra安全组和固定角色或自定义角色,而不是分配给单个用户。

  • 使用 Microsoft Entra 身份验证时,将 Microsoft Entra 用户放入 Microsoft Entra 安全组。 为该组创建受限的数据库用户。 将一个或多个数据库用户作为成员添加到具有相应用户组的特定权限的自定义或内置数据库角色。

  • 使用 SQL 身份验证时,请在数据库中创建包含的数据库用户。 将一个或多个数据库用户放入具有适合该用户组特定权限的自定义数据库角色中。

    注意

    还可以将组用于非容器数据库用户。

熟悉可用于限制或提升权限的以下功能:

下一步