数据库安全
数据库安全
数据库的安全机制
《登录验证方式》有两种
- SQLServer身份验证:适合于非windows平台的用户或Internet用户,需要提供帐户和密码。
- Windows身份验证:适合于windows平台用户,不需要提供密码,和windows集成验证。
《登录帐户类型》有两种
- SQLServer 帐户
- Windows帐户
添加登录账户
添加Windows登录帐户(了解)
1 USE master 2 GO 3 EXEC sp_grantlogin 'PC-20020101LAWH\TeacherZheng'
注意问题
- 创建登录账号一定要在master数据库中。
- 存储过程的参数:“域名\用户名”或者“计算机名\用户名”
添加SQLServer登录帐户(重点)
1 USE master 2 GO 3 EXEC sp_addlogin 'xiaoliu', '1234'
创建数据库用户
创建数据库用户的方法
1 USE StudentManageDB 2 GO 3 EXEC sp_grantdbaccess 4 'PC-20020101LAWHITeacherWang', 'wangUser01' 5 6 EXEC sp_grantdbaccess 7 'xiaoliu', 'xiaoliuUser02'
注意问题
- 创建数据库用户一定要在当前的数据库中。
- 存储过程的参数:登录账户名,数据库用户名。
系统内置的数据库用户
dbo用户
- 表示数据库的所有者(DB Owner)。
- 无法删除dbo用户,此用户始终出现在每个数据库中。
- 默认分配给sa登录账号。
guest用户
- 适用于没有数据库用户的登录帐号访问。
- 每个数据库可有也可删除。
登录账号和用户删除
向数据库用户授权
授权的语法
grant 权限 [on表名] to 数据库用户
收回权限的语法
revoke 权限 [on表名] to 数据库用户
代码编写分析
用户角色管理
问题引出
- 给单个数据库用户授权非常麻烦,能否创建一个数据库用户,然后直接赋予它一组已经定义好权限?
解决
- 定义一个角色,然后给该角色设置权限,再将该角色赋予特定用户。
- 使用已定义好的角色(固定角色),直接赋予特定的数据库用户即可。
固定角色
角色名称 | 角色描述 |
db_owner | 数据库的拥有者。可对数据库和其对象进行所有管理工作。此角色的权限可以包括以下其他角色的权限 |
db_accessadmin | 可以新建和删除windows用户组、windows用户和数据库用户 |
db_datareader | 看看到数据库中所有用户创建的表内的数据 |
db_datawriter | 可以新建、修改、删除数据库中的所有用户创建的表内数据 |
db_ddladmin | 可以新建、修改、删除数据库中的对象 |
db_securityadmin | 可管理数据库内的权限控制,如管理数据库的角色和角色内的成员、管理数据库对象的访 |
db_backupoperator | 具有备份数据库的权限 |
db_denydatareader | 可以拒绝选择数据库中的数据 |
db_denydatawr iter | 可以拒绝更改数据库中的数据 |
赋予数据库用户固定角色
exec sp_addrolemember‘数据库角色名称’,‘数据库用户名’
删除角色成员
exec sp_droprolemember‘数据库角色名称’,‘数据库用户名’
END