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