惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
F
Full Disclosure
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
P
Privacy International News Feed
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
I
Intezer
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
博客园 - 聂微东
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
H
Help Net Security
S
Schneier on Security
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
The Exploit Database - CXSecurity.com
T
Tor Project blog
月光博客
月光博客
NISL@THU
NISL@THU
A
About on SuperTechFans
Spread Privacy
Spread Privacy
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
G
Google Developers Blog
W
WeLiveSecurity
P
Palo Alto Networks Blog
The Last Watchdog
The Last Watchdog
K
Kaspersky official blog
博客园 - 司徒正美
L
LINUX DO - 热门话题
小众软件
小众软件

博客园 - 代码泪

VC2008下配置boost库使用正则表达式[转] 解决下载/上传大文件问题(IIS6)[转] 动态创建DataTable[转] C#格式化字符串,日期,时间,货币[转] Winform数据库连接app.config文件配置 C# 连接SQL数据库 常用连接字符串 sql得到当前系统时间得 日期部分 update select DataTime.Now.Ticks精确的时间单位[转] [SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。……(provider: TCP 提供程序, error: 0 - 由于目标机器积极拒绝,无法连接。)] VS 网站发布失败 [收藏]"Automation服务器不能创建对象" 的多种解决办法 Hashtable, ArrayList, List, Dictionary学习[转] VSTS for Testers学习笔记目录[转] 超时时间已到.错误及Max Pool Size设置 execute sp_executesql 用变量获取返回值【转】 使用存储过程并返回值与及返回值的获得方法[转] js取得dropdownlist的text,value[转] - 代码泪 - 博客园 input text 的事件及方法
SQL Server 2005安全配置[转]
代码泪 · 2010-12-02 · via 博客园 - 代码泪

安全性问题一直是一个比较难解决的老问题了,在网络的任何方面都包含安全问题,而我们的数据库也不例外。数据库的安全问题也是我们作为一个DBA必须要考虑的问题。因为建立数据库的目的是为了让我们的客户端来访问,所以在其中存在着很多的安全隐患,比如客户端链接的权限、数据传输过程中的安全等,所以我们在考虑SQL Server服务器安全时,建议从以下几个方面考虑: 

1.         客户端安全。首先要保证客户端是安全的,比如为客户端安装防病毒软件,防火墙,安装升级补丁等等。

2.         数据传输过程中的安全。数据在传输过程中,很容易被监听,或者被捕获,所以我们应该使用一些加密机制来保证数据的机密性,等等。

3.         最主要还是要在数据库服务器上实现安全机制来保证安全性。我们的SQL Server数据库是一个非常安全的数据库,因为我们的客户端如果想对数据库里的数据进行操作(比如selectinsert等),必须要经历三道检查,也就是我们要经过三重门(登录验证、数据库验证、对象权限)。举个例子,如果我们把SQL Server服务器看成一座大厦,我们首先要现有权利进入大厦,即通过大厦的大门(登录验证),然后还得拥有对某个房间的访问权限(对数据库的权限),进入房间后还得拥有打开保险柜的权利(对表的操作权限)。也就是首先我们必须先建立登录帐户,而登录帐户分为两种:windows帐户和SQL帐户(因为SQL Server有两种身份验证,即windows身份验证和混合身份验证)。具体操作方法:打开“SSMS—SQL Server实例安全性登录名”,右键选择“新建登录名”,选择身份验证模式(身份验证模式不同,帐户类型也不一样,注意:建立windows登录帐户,必须先在windows操作系统上先建立该账户),输入名字,并为该用户选择一个默认数据库(比如默认为master数据库)。该账户建立好之后,我们通过“新建”“数 据库引擎查询”的方式来测试用户,我们会发现该用户只能连接数据库,并不能对数据库进行任何其他操作。所以下面是第二道门,建立数据库用户,以便用户可以 访问数据库,对数据库进行操作。我们在建立数据库用户时,其实就是映射登录用户,所以在一般情况下,我们的登录名和数据库用户名是一致的。操作方法:第一 种:打开“SSMS—SQL Server实例具体的数据库安全性数据库用户”;第二种:直接在以前建立过的登录用户上映射数据库就可以了。最后一道门是在具体的数据库对象(比如表)上授予具体的权限,三种权限:授予、回收、拒绝。这里不再详细接受三种权限的区别。

 

综上所述,我们SQL Server的基本安全配置已经完成,如果大家有什么疑问,欢迎点评,^_^

前面提了一下安全配置的一些基本概念了,下面在给大家介绍一下,如何通过T-SQL语句来实现帐户的创建。因为在客户端连接到SQL Server服务器时,有两种身份验证:windows身份验证或者使用SQL身份验证,所以在使用帐户时,也可以使用两种类型的帐户,在这里我们要注意一个问题,前面提及过连接SQL需要三道门,那我们就需要建立帐户,当我们的环境是工作组时,如果使用windows身份验证,比如创建了一个用户zhangsan,那就要求要连接的客户端也建立同样的帐户,并且密码要求一样,否则无法连接,下面是一些具体的例子:

1.   windows身份验证:
Sp_grantlogin ‘login’

例子:允许sky域用户user1sqlusers组连接SQL服务:

允许本地组Users连接SQL服务

sp_grantlogin ‘sky\user1’

sp_grantlogin ‘test\sqlusers’

sp_grantlogin ‘BUILTIN\users’

go

Sp_denylogin ‘login’

 例子:

         禁止sky域用户user1sqlusers组连接SQL服务:

         禁止本地组Users连接SQL服务

    sp_denylogin ‘sky\user1’

    sp_denylogin ‘sky\sqlusers’

    sp_denylogin ‘BUILTIN\users’

    go

删除登录标识:

Sp_revokelogin ‘login’

例子:

sysxlogins系统表中删除user1sqlusers

   sp_revokelogin ‘sky\user1’

   sp_revokelogin ‘sky\sqlusers’

   go

创建SQL登录标识:

Exec Sp_addlogin ‘login’

 ‘password’

 ‘database’

 ‘language’

 ‘sid’

 ‘encryption_option’

举例:Exec Sp_addlogin test1

Exec Sp_addlogin test2, password, northwind

      修改登录标识:

Exec Sp_password ‘oldpsw’,’newpsw’,’login’

Exec Sp_defaultdb ‘login’,’database’

Exec Sp_defaultlanguage ‘login’,’language

删除SQL登录标识:

exec sp_droplogin login

2.   数据库角色:

创建和删除自定义角色:

Sp_addrole ‘role’, ‘owner’

   Role为创建的角色

   Owner为角色的拥有者,默认为dbo

Sp_droprole ‘role’

Use northwind

Go

Sp_addrole ‘sales’, ‘dbo’

Go

Sp_addrole ‘manager’

Go

Sp_droprole ‘manager’

Go

为固定服务器角色添加删除成员:

Sp_addrole ‘role’, ‘owner’

   Role为创建的角色

   Owner为角色的拥有者,默认为dbo

Sp_droprole ‘role’

为数据库角色添加删除成员:

Sp_addrolemember ‘role’, ‘account’

Sp_droprolemember ‘role’, ‘account’

   Role为固定或自定义数据库角色

   AccountSQL登录标识或NT帐号

管理数据库用户:

Sp_grantdbaccess ‘login’, ‘name_in_db’

Sp_revokedbaccess ‘name_in_db’

   Login为登录标识

   Name_in_db为在数据库里的用户帐号,默认为同名

3.   权限授予、拒绝、回收

northwind的订单表的select许可授予所有用户:

Use northwind

Go

Grant select

        on 订单

        to public

go

sales表的数据修改许可授予自定义角色salesmanger

Grant insert,update,delete

        on sales

        to salesmanger

Go

允许用户user1查看publishers表的所有内容,但只允许修改pub_id列:

Grant select,update{pub_id}

        on publishers

        to user1

Go

本文出自http://chensky.blog.51cto.com/177526/38691