关于SQLSERVER安全性规划和帐户学习!!!

 -- SQL SERVER使用三种方法来识别用户
-- 1,WINDOWS 用户登录
-- 2,WINDOWS 用户组的成员资格
-- 3,SQLSERVER专用登录(如果服务器使用了混合模式)
-- SQLSERVER帐户和WINDOWS帐户不同
-- WINDWOS帐户分两种:
-- 1,本地管理帐户
-- 2,域用户帐户
EXEC xp_loginconfig 'login mode'---- 查看服务器的验证模式
exec xp_loginconfig
-- -------------------------------1,windows验证
-- 他意味着,要先成为WINDOWS帐户,然后才能为SQLSERVER所识别。
-- 他会将WINDOWS的SID从WINDOWS传递给SQLSERVER。
-- WINDOWS验证可以验证WINDOWS用户和WINDOWS用户组的用户。
---使用代码添加WINDOWS用户和组。
-- 1,先建立WINDOW用户
-- 2,添加到SQLSERVER中,用SP—GRANTLOGIN‘ ’
-- 我建立WINDOW帐户TRY
-- 然后
sp_grantlogin 'HHQ-B14EA28241D/try'
sp_grantlogin 'try'  --------'try' 不是有效的 Windows NT 名称。请给出完整名称: <域/用户名>。
-- 拒绝WINDOWS登录到SQLSERVER,如下:
sp_denylogin 'HHQ-B14EA28241D/try'
独立的WINDOWS帐户,在操作系统中删除了此用户,查看独立用户的信息
sp_validatelogins  ----返回WINDOWS的SID和NT LOGIN
解决独立用户办法:
-- 1,如果TRY用户拥有对象,使用SP_CHANGEOBJECTOWNER,将它的所有权转给其它用户,也可以删除这些对象。
-- 2,使用SP_REVOKEDBACCESS删除这用户对所有数据库的访问权限
-- 3,使用SP_REVOKELOGIN取消用户对服务器的访问权限
多服务器间具有信任连接问题,建立安全委托有一定的难度
--------------------------------------2,SQLSERVER登录
使用SQLSERVER登录,会自动创建一个SA用户,它属于SYSADMIN固定服务器成员,但为了安全,禁用此SA用户,
sp_addlogin 'joe','19810828','test' ---创建一个SQLSERVER帐户,格式如下
SP_ADDLOGIN 'USER','OLDPASSWORD','DEFAULTDATABASE','DEFAULTLANGUAGE','SID','ENCRYPTION_OPTION'
如果取得SID,如下:
sp_helplogins
sp_defaultdb 'joe','test'  -----针对此数据库的默认改变
sp_defaultlanguage 'joe','slovak'  ----改变数据库的默认语言
SP_DROPLOGIN 'JOE'
可以理解为服务器角色为下一级控制级别,先建立用户
注意;BUULTINS/ADMINISTRATORS为系统自建用户,它自动加入SYSADMIN服务器角色,默认把WINDOWS用户组(具有ADMINISTRATORS)加入此用户,也可以禁用或删除此用户。
注意:不要用SA来登录,最好指定一个口令,也要删除BUILTINS/ADMINISTRATORS用户,
服务器角色:
1,SYSTEM ADMINISTRATORS 对服务器一切权限
2,BULK_INSERT ADMINISTRATORS 可以执行大容量插入操作
3,DATABASE CREATORS 可以创建或更新数据库
4,SECURITY ADMINISTRATORS 可以管理登录
5,SERVER ADMINISTRATOR可以管理服务器的配置
6,SETUP ADMINISTRATORS 可以管理链接服务器和存储过程
7,DISK ADMINISTRATORS 可以用来管理SQLSERVER6.5格式的磁盘文件
将用户添加到服务器角色中,如下:
 sp_addsrvrolemember 'joe','security administrators'  ----sp_addsrvrolemember 'user','serverrole'
sp_dropsrvrolemember 'joe','sysadmin'
guest用户不需要定义为服务器登录
但是所有的人都会有GUEST用户的权限
sp_adduser 'guest'----添加对数据库用户
sp_dropuser 'guest'----删除数据库用户
为用户授予访问数据库的权限,
1,用安全性节点下的登录
2,用数据库下的用户,也可以和登录帐户不同,用一个自己的数据库用户名.
用代码授予如下访问数据库的权限:
use test
sp_grantdbaccess 'joe','newjoe'
use test
sp_dropuser 'testjoe'
sp_revokedbaccess 'joe'
use test
sp_grantdbaccess 'joe' ----向数据库添加用户
固定数据库角色
DB_OWNER 它具有对一切数据库的权限

DB—ACCESSADMINS可以授予用户访问数据库的权限,但不能管理数据库级的安全性
DB—SECURITYADMINS可以管理数据库级的安全性
DB—DENYDATAREADERS 不充许读取数据库内任意表的数据,
DB—DENYDATAWRITERS 不充许写数据中的所有数据,
DB-DDLADMINS可以执行DDL操作,如CREATE,ALTET。DROP。
DB—BACKUPOPERARORS可以进行备份,执行栓查点和DBCC命令,但不能还原,还原只有服务器角色SYSADMINS
向固定数据库角色添加用户
SP_ADDROLE 'OTHER' 向当前数据库加入新的自定义角色
sp_addrole 'rolename','loginname'
角色和用户各自建立,然后把角色加入用户中。
应用程序角色不安全,
对锣的安全性,
如:SELECT ,INSERT,UPDATE,DELETE(它对应于角色)
DRI,EXECUTE(先有SELECT,后有UPDATE)
用GRANT,REVOKE,DENY来授上面的权限,
如下:
GRANT SELECT ON T1 TO other ---给角色OTHER在表T1上面的SELECT权限
REVOKE SELECT ON T1 TO OTHER ---收回权限
GRANT SELECT,UPDATE ON T1 TO OTHER
DENY SELECT,UPDATE ON T1 TO OTHER
deny select on t1 to other cascade ---收回转给其它用户的权限
标准数据库角色
  属于服务器角色SYSADMIN,数据库DB—OWNER或者DB-SECURITYADMINS的用户都可以建标准数据库角色,它类似于WINDOWS的用户组,你可以将用用户加入此角色。

PUBLIC角色会影响除了SYSADMIN角色以外的所有用户,若拒绝它的访问权限,所有用户除了SYSADMIN角色的成员外不能访问数据。

sp_revokedbaccess 'joe' ---删除数据库用户

sp_droprole 'other'-----删除用户依赖的角色

use test
sp_addrole 'manager'----重新建立角色
sp_grantdbaccess 'joe' ---建立数据库用户
sp_addrolemember 'manager','joe' ----用户加入角色中
sp_addlogin 'addnew'
属于SYSADMIN服务器角色的用户,都会映射一个特殊的系统用户,DBO,如果它创建一个新的对象,属于DBO,而不是用户自己。

你可能感兴趣的:(sqlserver,数据库,windows,服务器,encryption,security)