SQL Server 密码策略Word格式.docx
《SQL Server 密码策略Word格式.docx》由会员分享,可在线阅读,更多相关《SQL Server 密码策略Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
![SQL Server 密码策略Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/29/c92e69c5-33e2-455b-8d03-a6ccc7780716/c92e69c5-33e2-455b-8d03-a6ccc77807161.gif)
WindowsServer2003中的已知问题可以防止错误密码计数在达到LockoutThreshold后重置。
这可能会导致在后续登录尝试失败后立即锁定。
可以通过暂时设置CHECK_POLICY=OFF,然后设置CHECK_POLICY=ON来手动重置错误的密码计数。
当SQLServer在Windows2000中运行时,设置CHECK_POLICY=ON将禁止创建以下类型的密码:
为NULL或空
与计算机名或登录名相同
下列任意项:
“password”、“admin”、“administrator”、“sa”、“sysadmin”
可以在Windows中设置安全策略,也可以从域接收安全策略。
若要查看计算机上的密码策略,请使用本地安全策略MMC管理单元(secpol.msc)。
SQLServer2008的选择身份验证模式
56:
22
在安装过程中,必须为数据库引擎选择身份验证模式。
可供选择的模式有两种:
Windows身份验证模式和混合模式。
Windows身份验证模式会启用Windows身份验证并禁用SQLServer身份验证。
混合模式会同时启用Windows身份验证和SQLServer身份验证。
Windows身份验证始终可用,并且无法禁用。
配置身份验证模式
如果在安装过程中选择混合模式身份验证,则必须为名为sa的内置SQLServer系统管理员帐户提供一个强密码并确认该密码。
sa帐户通过使用SQLServer身份验证进行连接。
如果在安装过程中选择Windows身份验证,则安装程序会为SQLServer身份验证创建sa帐户,但会禁用该帐户。
如果稍后更改为混合模式身份验证并要使用sa帐户,则必须启用该帐户。
您可以将任何Windows或SQLServer帐户配置为系统管理员。
由于sa帐户广为人知且经常成为恶意用户的攻击目标,因此除非应用程序需要使用sa帐户,否则请勿启用该帐户。
切勿为sa帐户设置空密码或弱密码。
若要从Windows身份验证模式更改为混合模式身份验证并使用SQLServer身份验证,请参阅如何更改服务器身份验证模式。
通过Windows身份验证进行连接
当用户通过Windows用户帐户连接时,SQLServer使用操作系统中的Windows主体标记验证帐户名和密码。
也就是说,用户身份由Windows进行确认。
SQLServer不要求提供密码,也不执行身份验证。
Windows身份验证是默认身份验证模式,并且比SQLServer身份验证更为安全。
Windows身份验证使用Kerberos安全协议,提供有关强密码复杂性验证的密码策略强制,还提供帐户锁定支持,并且支持密码过期。
通过Windows身份验证完成的连接有时也称为可信连接,这是因为SQLServer信任由Windows提供的凭据。
安全说明:
请尽可能使用Windows身份验证。
通过SQLServer身份验证进行连接
当使用SQLServer身份验证时,在SQLServer中创建的登录名并不基于Windows用户帐户。
用户名和密码均通过使用SQLServer创建并存储在SQLServer中。
通过SQLServer身份验证进行连接的用户每次连接时必须提供其凭据(登录名和密码)。
当使用SQLServer身份验证时,必须为所有SQLServer帐户设置强密码。
有关强密码的指南,请参阅数据库引擎配置-帐户设置。
可供SQLServer登录名选择使用的密码策略有三种。
用户在下次登录时必须更改密码
要求用户在下次连接时更改密码。
更改密码的功能由SQLServerManagementStudio提供。
如果使用该选项,则第三方软件开发人员应提供此功能。
强制密码过期
对SQLServer登录名强制实施计算机的密码最长使用期限策略。
强制实施密码策略
对SQLServer登录名强制实施计算机的Windows密码策略。
这包括密码长度和密码复杂性。
确定本地计算机的密码策略
在“开始”菜单上,单击“运行”。
在“运行”对话框中,键入secpol.msc,然后单击“确定”。
在“本地安全设置”应用程序中,依次展开“安全设置”、“帐户策略”,然后单击“密码策略”。
密码策略将如结果窗格中所示。
SQLServer身份验证的缺点
如果用户是具有Windows登录名和密码的Windows域用户,则还必须提供另一个用于连接的(SQLServer)登录名和密码。
记住多个登录名和密码对于许多用户而言都较为困难。
每次连接到数据库时都必须提供SQLServer凭据也十分烦人。
SQLServer身份验证无法使用Kerberos安全协议。
SQLServer登录名不能使用Windows提供的其他密码策略。
SQLServer身份验证的优点
允许SQLServer支持那些需要进行SQLServer身份验证的旧版应用程序和由第三方提供的应用程序。
允许SQLServer支持具有混合操作系统的环境,在这种环境中并不是所有用户均由Windows域进行验证。
允许用户从未知的或不可信的域进行连接。
例如,既定客户使用指定的SQLServer登录名进行连接以接收其订单状态的应用程序。
允许SQLServer支持基于Web的应用程序,在这些应用程序中用户可创建自己的标识。
允许软件开发人员通过使用基于已知的预设SQLServer登录名的复杂权限层次结构来分发应用程序。
注意:
使用SQLServer身份验证不会限制安装SQLServer的计算机上的本地管理员权限。
SQLServer2008权限层次结构
49:
33
数据库引擎管理着可以通过权限进行保护的实体的分层集合。
这些实体称为“安全对象”。
在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。
SQLServer通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。
下图显示了数据库引擎权限层次结构之间的关系。
使用权限
可以使用常见的Transact-SQL查询GRANT、DENY和REVOKE来操作权限。
有关权限的信息,可以从
sys.server_permissions
和
sys.database_permissions
目录视图中看到。
也可以使用内置函数来查询权限信息。
关于数据库安全性和保护的一些知识
1,用户:
数据库用户是数据库级别上的主体。
每个数据库用户都是
public
角色的成员。
guest
用户
创建数据库时,该数据库默认包含
用户。
授予
用户的权限由在数据库中没有用户帐户的用户继承。
不能删除
2,应用程序角色:
应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的权限来运行。
使用应用程序角色,可以只允许通过特定应用程序连
接的用户访问特定数据。
与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。
应用程序角色使用两种身份验证
模式。
可以使用
sp_setapprole
启用应用程序角色,该过程需要密码。
因为应用程序角色是数据库级主体,所以它们只能通过其他数据库中为
授予的权限来访问这些数据库。
因此,其他数据库中的应用程序角色将无法访问任何已禁用
的数据库。
在
SQL
Server
中,应用程序角色无法访问服务器级元数据,因为它们不与服务器级主体关联。
若要禁用此限制,从而允许应用程序角色访问服
务器级元数据,请设置全局标志
4616
连接应用程序角色
应用程序角色切换安全上下文的过程包括下列步骤:
用户执行客户端应用程序。
客户端应用程序作为用户连接到
Server。
然后应用程序用一个只有它才知道的密码执行
存储过程。
如果应用程序角色名称和密码都有效,则启用应用程序角色。
此时,连接将失去用户权限,而获得应用程序角色权限。
通过应用程序角色获得的权限在连接期间始终有效。
的早期版本中,用户若要在启动应用程序角色后重新获取其原始安全上下文,唯一的方法就是断开
连接,然后再重
新连接。
从
2005
开始,sp_setapprole
有了一个可创建
cookie
的选项。
Cookie
包含启用应用程序角色之前的上下文信息。
sp_unsetapprole
可以使用此
将会话恢复到其原始上下文。
有关这个新选项和示例的信息,请参阅
(Transact-SQL)。
SqlClient
不支持
ODBC
encrypt
选项。
通过网络传输机密信息时,请使用安全套接字层
(SSL)
或
IPSec
对通道进行加密。
如果必须使凭据
在客户端应用程序中持久化,请使用加密
API
函数来加密凭据。
及更高版本中,参数
password
将作为单向哈希进行存储
。
3,SID和ID
如果要编写与
引擎进行交互的代码,则应该注意用作主体内部表示形式的两个号码。
每个主体都具有一个
ID
和一个安全
(SID)。
这些号码的含义和源取决于主体的创建方式,同时与主体是服务器主体还是数据库主体有关。
服务器级标识号
创建
登录名时,便会为它分配一个
和一个
SID。
这些号码在
sys.server_principals
目录视图中显示为
principal_id
(principal_id)
将登录名标识为服务器上的安全对象。
创建登录名时由
分配此
ID。
删除登录名时,将回收其
号。
SID
标识登录名的安全上下文,并且在服务器实例中是唯一的。
的源取决于登录名的创建方式。
如果通过
Windows
用户或组创建登录名,
则会为它指定源主体的
SID;
在域中是唯一的。
如果通过证书或非对称密钥创建
登录名,则会为它分配源
自公钥的
SHA-1
哈希的
如果按照需要密码的、早期样式的
登录名创建登录名,则服务器将生成一个
数据库级标识号
创建数据库用户时,便会为它分配一个
sys.database_principals
将用户标识为数据库中的安全对象。
删除数据库用户时,将回收其
分配给数据库用户的
在数据库中是唯一的。
的源
取决于数据库用户的创建方式。
登录名创建用户,则会为它指定登录名的
如果通过证书或非对称密钥创建用户,则
源自公钥的
哈希。
最大数据库用户数
最大数据库用户数由用户
字段的大小确定。
用户
的值必须为零或正整数。
2000
中,将用户
存储为
16
位的
smallint(其中一位是符号)。
因此,SQL
中最大用户
数是
2的15次方
=
32,768。
及更高版本中,将
32
int(其中一位是符号)。
这些附加的位可以分配
2的31次方
2,147,483,648
的
数据库用户
划分为预分配的范围省略。
--图片在我空间
大小从
smallint(16
位)增加到
int(32
位)。
如果传递的是
位用户
ID,则要求使用
将返回错误结果
当迁移为
或早期版本创建的数据和应用程序时,应检查代码是否引用了以下不推荐使用的接口。
sysusers
syscacheobjects
sysmembers
sysobjects
syspermissions
sysprocesses
sysprotects
systypes
USER_ID
这些接口需要
当使用
时,这些接口将返回错误结果。
4,如何创建数据库用户:
使用
Management
Studio
创建数据库用户
中,打开对象资源管理器,然后展开“数据库”文件夹。
展开要在其中创建新数据库用户的数据库。
右键单击“安全性”文件夹,指向“新建”,再单击“用户”。
在“常规”页的“用户名”框中输入新用户的名称。
在“登录名”框中,输入要映射到数据库用户的
登录名的名称。
单击“确定”。
Transact-SQL
在查询编辑器中,通过执行以下
命令连接至要在其中创建新数据库用户的数据库:
USE
<
database
name>
GO
通过执行以下
命令创建用户:
CREATE
USER
new
user
FOR
LOGIN
login
;
5,如何创建
登录名:
创建使用
身份验证
(SQL
Studio)
登录名
中,打开对象资源管理器并展开要在其中创建新登录名的服务器实例的文件夹。
右键单击“安全性”文件夹,指向“新建”,然后单击“登录名”。
在“常规”页上的“登录名”框中输入一个
用户名。
选择“Windows
身份验证”。
在“常规”页上的“登录名”框中输入一个新登录名的名称。
选择“SQL
身份验证是更安全的选择。
输入登录名的密码。
选择应当应用于新登录名的密码策略选项。
通常,强制密码策略是更安全的选择。
通过
身份验证的
在查询编辑器中,输入以下
命令:
name
of
User>
FROM
WINDOWS;
GO
WITH
PASSWORD
'
password>
6,服务器级角色:
为便于管理服务器上的权限,SQL
提供了若干“角色”,这些角色是用于分组其他主体的安全主体。
“角色”类似于
Microsoft
操作系统中的“组”。
服务器级角色也称为“固定服务器角色”,因为您不能创建新的服务器级角色。
服务器级角色的权限作用域为服务器范围。
您可以向服务器级角色中添加
登录名、Windows
帐户和
组。
固定服务器角色的每个成员都可以向其所属角色添加其他登
录名。
下表显示了服务器级角色及其能够执行的操作。
服务器级角色名称
说明
sysadmin
固定服务器角色的成员可以在服务器上执行任何活动。
默认情况下,Windows
BUILTIN\Administrators
组(本
地管理员组)的所有成员都是
固定服务器角色的成员。
serveradmin
固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。
securityadmin
固定服务器角色的成员可以管理登录名及其属性。
他们可以
GRANT、DENY
REVOKE
服务器级别的权限。
他们还可以
数据库级别的权限。
此外,他们还可以重置
登录名的密码。
processadmin
固定服务器角色的成员可以终止在SQL
实例中运行的进程。
setupadmin
固定服务器角色的成员可以添加和删除链接服务器。
bulkadmin
固定服务器角色的成员可以运行
BULK
INSERT
语句。
diskadmin
固定服务器角色用于管理磁盘文件。
dbcreator
固定服务器角色的成员可以创建、更改、删除和还原任何数据库。
7,数据库级别的角色:
为便于管理数据库中的权限,SQL
它们类似于
操
作系统中的组。
数据库级角色的权限作用域为数据库范围。
中有两种类型的数据库级角色:
数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”。
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。
db_owner
db_securityadmin
数据库角色的成员可以管理固定数据库角
色成员身份。
但是,只有
数据库角色的成员能够向
固定数据库角色中添加成员。
msdb
数据库中还有一些特殊用途的固定
数据库角色。
您可以向数据库级角色中添加任何数据库帐户和其他
角色。
固定数据库角色的每个成员都可向同一个角色添加其他登录名。
请不要将灵活数据库角色添加为固定角色的成员。
这会导致意外的权限升级。
下表显示了固定数据库级角色及其能够执行的操作。
所有数据库中都有这些角色。
数据库级别的角色名称
固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以删除数据库。
固定数据库角色的成员可以修改角色成员身份和管理权限。
向此角色中添加主体可能会导致意外的
权限升级。
db_accessadmin
固定数据库角色的成员可以为
组和
登录名添加或删除数据
库访问权限。
db_backupoperator
固定数据库角色的成员可以备份数据库。
db_ddladmin
db_ddl