1. 权限管理
什么是权限管理?
权限管理是数据库管理中的一个关键方面,它涉及到确定哪些用户或数据库主体(如登录、用户、角色等)有权执行特定的操作。权限管理的目的是确保数据库的安全性,防止未经授权的访问,保护敏感数据和维护数据库的完整性
SQL server的安全机制
身份验证(Authentication):
Windows身份验证: 使用Windows操作系统的用户身份验证信息。
SQL Server身份验证: 使用SQL Server本地账户和密码进行身份验证。
授权(Authorization):
登录(Login): 登录是允许用户连接到SQL Server实例的标识。
用户(User): 用户是数据库级别的安全主体,关联到登录并在数据库中分配权限。
角色(Role): 角色是一组权限的逻辑集合,用户可以被分配到角色,以简化权限管理。
权限(Permission): 权限规定了对数据库对象执行的特定操作,如SELECT、INSERT、UPDATE、DELETE等。
数据库级别的安全性(Database-level Security):
数据库级别的角色(Database-level Roles): 例如,db_datareader和db_datawriter。
数据库级别的权限(Database-level Permissions): 控制对整个数据库的操作权限。
对象级别的安全性(Object-level Security):
模式级别的权限(Schema-level Permissions): 控制对模式中对象的操作权限。
对象级别的权限(Object-level Permissions): 控制对具体对象(表、视图、存储过程等)的操作权限。
服务器级角色
在SQL Server中,有一些预定义的服务器级角色,这些角色具有不同的权限级别
服务器角色 | 描述 |
sysadmin | 具有服务器上所有权限的最高权限角色。成员可以执行任何操作。 |
serveradmin | 具有服务器级别配置选项和资源的管理权限。 |
securityadmin | 管理登录、证书和密钥等安全性权限。 |
processadmin | 管理正在运行的进程,但不能查看或更改这些进程的查询。 |
setupadmin | 管理 SQL Server 安装过程的权限。 |
bulkadmin | 执行 BULK INSERT 语句的权限。 |
diskadmin | 管理磁盘文件的权限。 |
dbcreator | 在服务器上创建、更改和删除数据库的权限。 |
public | 默认服务器角色,所有登录用户都是其成员。 |
这些服务器级角色允许对服务器执行不同级别的管理任务。在分配角色成员身份时,应遵循最小权限原则,确保用户或登录仅获得其工作所需的最低权限级别
数据库级角色
角色 | 描述 |
db_owner | 具有数据库上所有权限的最高权限角色。成员可以执行任何操作。 |
db_accessadmin | 访问权限 |
db_securityadmin | 管理数据库中的权限、角色和对象的权限。 |
db_ddladmin | 管理数据库中的任何 DDL 操作。 |
db_datareader | 允许成员 SELECT 数据库中的任何表或视图的权限。 |
db_datawriter | 允许成员 INSERT、UPDATE 和 DELETE 数据库中的任何表的权限。 |
db_denydatareader | 禁止读 |
db_denydatawriter | 禁止写 |
public | 默认数据库角色,所有数据库用户都是其成员。 |
这些数据库级别的角色允许对数据库执行不同级别的管理任务。db_owner
角色是最高权限的角色,允许执行任何数据库级别的操作。public
角色是默认的数据库角色,所有数据库用户都是其成员,但它通常没有分配具体的权限。
对象级角色
权限 | 描述 |
SELECT | 允许用户检索数据库对象中的数据。 |
INSERT | 允许用户向数据库对象中插入新的行。 |
UPDATE | 允许用户更新数据库对象中的现有行的数据。 |
DELETE | 允许用户从数据库对象中删除现有的行。 |
EXECUTE | 允许用户执行存储过程或函数。 |
ALTER | 允许用户更改对象的定义。 |
CREATE | 允许用户创建新的数据库对象(如表、视图、存储过程等)。 |
VIEW DEFINITION | 允许用户查看对象的定义,但不允许执行操作。 |
REFERENCES | 允许用户在其他对象中引用表或视图。 |
TAKE OWNERSHIP | 允许用户获取对象的所有权。 |
CONTROL | 允许用户对指定的数据库对象拥有完全的控制权。 |
这些权限用于控制用户对数据库对象的不同操作。具体的权限需求可能会因对象类型和应用程序要求而有所不同。在分配权限时,建议按照最小权限原则,确保用户只获得其工作所需的最低权限级别。
2. 创建用户 赋予权限
右击登录名 点击新建登录名
选择SQL server身份验证
输入登录名密码 设置密码规则
默认数据库这一栏 选择你创建这个用户 允许登录哪一个数据库操作
选择服务器角色 不同的角色有着不同的权限(上边表中有介绍)
这边我赋予最高(服务器)权限
选择用户可以登录的数据库
下边框内就是(数据库)角色 不同的数据库角色 对(数据库)有着不同的权限
这边我选择访问和读 权限(对数据库)
第三列安全对象(根据需求勾选即可)
安全对象(Securable),可以通过权限得到保护的实体。 是SQLServer数据库引擎授权系统控制对其进行访问的资源。 如表、视图、触发器等。
状态 选择授予 启用
最重要的一步骤
选择第二个 SQL server 和 windows 身份验证模式
重新启动服务器
点击确定继续
重新连接
连接成功