一.思维导图
二.说明
1.数据库的安全性,主要包括用户身份鉴别,多层存取控制,数据额加密,和服务器角色,登录名是用于登录数据库,用于身份鉴定,对合法的用户进入计算机,登录名主要分成两种window和SQL登录名,而固定服务器角色用于给登录名赋予相应的服务器权限。数据库管理系统还要进行存取控制,数据最后还要以密码形式存储在数据库中,采用非对称加密和对称加密两种加密模式。
2.数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合,因此可以纬第一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
3. 数据库权限:在SQL Server数据库管理系统中,权限是指用户对数据库或数据表执行的操作。
分类:按对权限设置方法的不同,可以将权限分为隐含权限、对象权限和语句权限三种类型
(1)隐含权限(2)对象权限(3)语句权限
分别分成grant、deny和revoke命令分别表示授予、禁止和撤销权限。
三.示例
1.创建Windows登录名
IF SUSER_ID('LocalComputerName\WinUser1') IS NOT NULL
DROP LOGIN [LocalComputerName\WinUser1];
GO
CREATE LOGIN [LocalComputerName\WinUser1]
FROM WINDOWS
WITH
DEFAULT_DATABASE=master;
2.创建SQL Server登录名
IF SUSER_ID('SqlLogin1') IS NOT NULL
DROP LOGIN SqlLogin1;
GO
CREATE LOGIN SqlLogin1
WITH
PASSWORD='[email protected]'
,CHECK_POLICY=ON
,DEFAULT_DATABASE=master;
3.将SqlLogin1添加至sysadmin角色
EXEC sp_addsrvrolemember 'SqlLogin1', 'sysadmin';
4.将SqlLogin1从sysadmin角色移除
EXEC sp_dropsrvrolemember 'SqlLogin1', 'sysadmin';
5.在数据库HIS中创建用户DbUser1 ,并映射至登录名SqlLogin1
IF USER_ID('DbUser1') IS NOT NULL DROP USER DbUser1; GO CREATE USER DbUser1 FOR LOGIN SqlLogin1;
6.将查询病人表的权限授予DbUser1用户
GRANT SELECT ON tb_Patient TO DbUser1;
7.收回DbUser1用户对病人表的查询权限
REVOKE SELECT ON tb_Patient
FROM DbUser1;
8.创建数据库角色DbRole1,将用户DbUser1添加至该角色
IF USER_ID('DbRole1') IS NOT NULL DROP ROLE DbRole1; GO CREATE ROLE DbRole1; GO EXEC sys.sp_addrolemember 'DbRole1','DbUser1';
9.创建非对称**
USE HIS; IF ASYMKEY_ID('ak_HIS_ForSymKeyCrypto') IS NOT NULL DROP ASYMMETRIC KEY ak_HIS_ForSymKeyCrypto; GO CREATE ASYMMETRIC KEY ak_HIS_ForSymKeyCrypto WITH ALGORITHM=RSA_512
ENCRYPTION BY PASSWORD='[email protected]';
10.创建对称**
IF KEY_ID('sk_HIS_ForDataCrypto') IS NOT NULL DROP SYMMETRIC KEY sk_HIS_ForDataCrypto; GO CREATE SYMMETRIC KEY sk_HIS_ForDataCrypto WITH ALGORITHM=TRIPLE_DES ENCRYPTION BY ASYMMETRIC KEY ak_HIS_ForSymKeyCrypto;