Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 管理员)。 若要标识 SQL 池的这些管理员帐户,请打开Azure portal,并导航到 Synapse 工作区的“属性”选项卡。
SQL 管理员用户名
创建 Azure Synapse Analytics 时,必须将 Server 管理员登录名命名。 SQL server在
master数据库中创建该帐户作为登录名。 此帐户使用SQL Server身份验证(用户名和密码)进行连接。 此类帐户只能存在一个。Microsoft Entra 管理员
也可以将某个 Microsoft Entra 帐户(个人帐户或安全组帐户)配置为管理员。 可以选择配置 Microsoft Entra 管理员,但如果要使用 Microsoft Entra 帐户连接到 Synapse SQL, 则必须 配置 Microsoft Entra 管理员。
- Microsoft Entra 管理员帐户控制对专用 SQL 池的访问,而 Synapse RBAC 角色可用于控制对无服务器池的访问,例如, Synapse Administrator 角色 和 Synapse SQL 管理员角色。
“SQL 管理员用户名”和“Microsoft Entra 管理员”帐户具有以下特征:
- 只有这些帐户才能自动连接到服务器上的任何 SQL 数据库。 (其他帐户若要连接到用户数据库,它们必须是数据库的所有者,或者在用户数据库中具有相应的用户帐户。)
- 这些帐户以
dbo用户的身份进入用户数据库,在用户数据库中拥有所有权限。 (用户数据库的所有者也以dbo用户的身份进入数据库。) - 不以
master用户的身份进入dbo数据库,并且在master数据库中的权限受限制。 -
不是标准 SQL Server
sysadmin固定服务器角色的成员,该角色在 SQL 数据库中不可用。 - 可以在
master数据库和服务器级 IP 防火墙规则中创建、更改及删除数据库、登录名与用户。 - 可以在
dbmanager和loginmanager角色中添加和删除成员。 - 可以查看
sys.sql_logins系统表。
注意事项
如果将用户配置为 Microsoft Entra 管理员和 Synapse 管理员,然后从 Microsoft Entra 管理员角色中删除,则用户将失去对 Synapse 中专用 SQL 池的access。 必须先将它们移除,然后再将它们添加到 Synapse 管理员角色中,以便重新获得专用 SQL 池的访问权限。
- 无服务器 SQL 池
- 专用 SQL 池
若要管理有权访问Serverless 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 Database 或 Synapse Serverless 中,使用 ALTER ROLE 语句。
ALTER ROLE db_owner ADD MEMBER Mary;
在专用 SQL 池中使用 EXEC sp_addrolemember。
EXEC sp_addrolemember 'db_owner', 'Mary';
注意事项
基于服务器登录名创建数据库用户的一个常见原因是需要access多个数据库的用户。 由于包含的数据库的用户都是单独的实体,因此每个数据库都维护其各自的用户及其密码。 这可能会导致开销,因为用户必须记住每个数据库的密码,当必须为许多数据库更改多个密码时,这通常难以做到。
组和角色
有效的访问管理使用分配给组和角色的权限,而不是分配给单个用户的权限。
使用 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 语句创建自己的用户定义的数据库角色,并仔细为每个角色授予业务需求所需的最低权限。 如果用户是多个角色的成员,则会聚合所有这些角色的权限。
权限
可以在 SQL 数据库中单独授予或拒绝 100 多种权限。 这些权限中,许多都是嵌套式的。 例如,针对架构的 UPDATE 权限包括针对该架构中每个表的 UPDATE 权限。 与大多数权限系统中的情况一样,拒绝某个权限将覆盖对该权限的授予操作。
考虑到权限的嵌套性质和数目,可能需要进行仔细的研究才能设计出适当的权限系统,以便对数据库进行恰当的保护。
从Permissions(数据库引擎)的权限列表开始,查看数据库引擎权限的海报大小图形。
注意事项和限制
管理 SQL 数据库中的登录名和用户时,请注意以下要点:
- 执行
master语句时,必须连接到CREATE/ALTER/DROP DATABASE数据库。 - 无法更改或删除与 服务器管理员 登录名对应的数据库用户。
- 如果启用了仅限 Entra 的身份验证,服务器管理员将被禁用。
- US-English 是 服务器管理员 登录的默认语言。
- 只有管理员(服务器管理员 登录名或Microsoft Entra 管理员)和数据库中 dbmanager 数据库角色
master的成员有权执行CREATE DATABASE和DROP DATABASE语句。 - 执行
master语句时,必须连接到CREATE/ALTER/DROP LOGIN数据库。 但不建议使用登录名。 请改为使用封装数据库用户。 有关详细信息,请参阅 独立数据库用户 - 使您的数据库具备可移植性。 - 若要连接到用户数据库,必须在connection string中提供数据库的名称。
- 只有服务器级主体登录名和数据库中 loginmanager 数据库角色
master的成员有权执行CREATE LOGIN和ALTER LOGINDROP LOGIN语句。 - 在 ADO.NET 应用程序中执行
CREATE/ALTER/DROP LOGIN和CREATE/ALTER/DROP DATABASE语句时,不允许使用参数化命令。 有关详细信息,请参阅 命令和参数。 - 在使用
CREATE USER选项执行FOR/FROM LOGIN语句时,该语句必须是 Transact-SQL 批处理中的唯一语句。 - 在使用
ALTER USER选项执行WITH LOGIN语句时,该语句必须是 Transact-SQL 批处理中的唯一语句。 - 启用 Microsoft Entra 认证后,Azure Synapse 工作区不支持
CREATE/ALTER/DROP LOGIN和CREATE/ALTER/DROP USER语句。 - 若要执行
CREATE/ALTER/DROP操作,用户需要对数据库拥有ALTER ANY USER权限。 - 在数据库角色的所有者尝试在该数据库角色中添加或删除其他数据库用户时,可能会发生以下错误:“此数据库中不存在用户或角色‘Name’”。发生此错误的原因是用户对所有者不可见。 若要解决此问题,请向角色所有者授予对该用户的
VIEW DEFINITION权限。
相关内容
有关详细信息,请参阅 独立数据库用户 - 使您的数据库具备可移植性。