为便于管理数据库中的权限,SQL 数据库提供了服务器角色、数据库角色、用户等来划分不同用户拥有的权限差异。今天给大家介绍数据库角色对应的权限。
存在两种类型的数据库级角色:
- 数据库级角色的权限作用域为数据库范围。
- 固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。比如固定数据库角色db_owner的成员可以管理其他固定数据库角色成员身份。可以向数据库级角色中添加任何数据库帐户和其他SQL Server 角色。
无法更改分配给固定数据库角色的权限。 下图显示了分配给固定数据库角色的权限:
数据库-系统数据库-master-安全性-角色<……>
数据库级角色总计有十个:
db_owner 固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以 drop SQL Server 中的数据库。 (在 SQL 数据库 和 Synapse Analytics 中,某些维护活动需要服务器级别权限,并且不能由 db_owners 执行。)
db_securityadmin 固定数据库角色的成员可以仅修改自定义角色的角色成员资格和管理权限。 此角色的成员可能会提升其权限,应监视其操作。
db_accessadmin 固定数据库角色的成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。
db_backupoperator 固定数据库角色的成员可以备份数据库。
db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。 此角色的成员可以通过操作可能在高特权下执行的代码来提升其特权,并且应监视其操作。
db_datawriter 固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。 在大多数情况下,此角色将与 db_datareader 成员身份相结合,以允许读取要修改的数据。
db_datareader 固定数据库角色的成员可以从所有用户表和视图中读取所有数据。 用户对象可能存在于除 sys 和 INFORMATION_SCHEMA 以外的任何架构中 。
db_denydatawriter 固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据。
db_denydatareader 固定数据库角色的成员不能读取数据库内用户表和视图中的任何数据。
每个数据库用户都属于 public 数据库角色。 如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的 public 角色的权限。 无法将数据库用户从 public 角色删除。
将用户“Testuser”添加到固定数据库级角色 db_datawriter。
ALTER ROLE db_datawriter
ADD MEMBER Testuser;
GO
ALTER ROLE db_datawriter
DROP MEMBER Testuser;
GO
SQL数据库通过预定义的数据库角色,对用户权限进行精细化管理,这些角色分别赋予不同级别的数据访问、操作和管理权限,旨在简化安全配置并确保数据库资源得到妥善保护和合理使用。