1. MSSQL数据库账号安全性问题
在MSSQL服务器上,账号管理是十分重要的一环,因为管理员账户采用默认的Sa账户,如果该账户不受保护,则可能被黑客攻击,导致恶意访问和数据泄露。因此,针对MSSQL服务器上的账户管理,需要加强安全性措施。
1.1. 内置账户Sa的几点注意
默认情况下,MSSQL服务器会创建一个Sa账户,该账户具有MSSQL服务器的最高管理员权限。Sa用户默认是可以通过TCP/IP协议直接访问SQL服务器的,同时Sa用户密码也很简单。我们应该对Sa账户进行限制,建立特殊的系统保护策略,以免该账户受到恶意攻击。
/* 限制Sa账户 */
ALTER LOGIN [sa] DISABLE;
执行以上操作之后,将会禁用Sa账户,如果想要重新使用该账户,则需要重新启用该账户。
/* 启用Sa账户 */
ALTER LOGIN [sa] ENABLE;
1.2. SQL Server管理工具配置
如果通过SQL Server管理工具登录,则需要对SQL Management Studio进行配置。一般来说,使用Sql Management Studio进行连接的方式有两种,一种方式是直接连接SQL Server,在这种情况下,需要注意的是,服务器必须启用Windows身份验证和SQL Server身份验证。另一种方式是通过网路连接到SQL Server,在这种情况下,则需要注意SqlServer配置,主要设置如下两个参数:
/* 限制允许的IP地址 */
EXEC sys.sp_addserver 'your IP address', 'local';
/* 启用操作系统验证 */
EXEC sys.sp_configure 'remote access', 1;
(reconfigure);
2. MSSQL账号注册
MSSQL账号注册需要先建立对应的数据库对象,然后再创建数据库用户,最后将数据库用户赋予相应的数据库角色或权限。下面介绍MSSQL账号注册的具体流程。
2.1. 新建数据库对象
在注册账号之前,需要先创建数据库对象,包括表、存储过程和视图等。在创建数据库对象时,需要注意对象的安全性,确保安全权限不会被非法用户获取,其中,最基本的是利用小写或者大写的字母、数字、下划线和特殊符号来组成对象的名称。
/* 新建表对象 */
CREATE TABLE [dbo].[New_Table](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[age] [int] NOT NULL,
[sex] [varchar](10) NOT NULL,
[birthday] [datetime] NOT NULL,
CONSTRAINT [PK_New_Table] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
2.2. 创建数据库用户
在创建完数据库对象之后,需要创建相应的用户。MSSQL支持两种类型的用户,一种是服务器级别的用户,另一种是数据库级别的用户。
/* 创建数据库用户 */
CREATE USER [new_user] FOR LOGIN [new_login] WITH DEFAULT_SCHEMA=dbo
/* 为用户分配角色 */
EXEC sp_addrolemember 'db_datareader', 'new_user';
EXEC sp_addrolemember 'db_datawriter', 'new_user';
2.3. 分配权限或角色
为新注册的用户分配权限和角色,需要根据实际需求进行分配,一般来说,可以为用户分配SELECT、INSERT、DELETE和UPDATE等DML权限,同时还可以为用户分配CREATE FUNCTION和EXECUTE等DDL权限。
/* 创建新角色 */
CREATE ROLE [new_role];
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE FUNCTION, EXECUTE TO [new_role];
/* 为用户分配角色 */
EXEC sp_addrolemember 'new_role', 'new_user';
3. MSSQL账号安全管理
任何一个系统都需要关注账号的安全性管理,MSSQL数据库也不例外。下面是MSSQL账号安全管理的几点提示。
3.1. 禁用Sa账户
前面已经提到,Sa用户默认是可以通过TCP/IP协议直接访问SQL服务器的,同时Sa用户密码也很简单。为了提高安全性,最好禁用Sa账户。另外,尽量避免使用sa登录,而是应该尽管用其他限制性的管理员帐户。
/* 限制Sa账户 */
ALTER LOGIN [sa] DISABLE;
3.2. 关闭SQL Server身份验证
关闭SQL Server身份验证可以避免SQL注入攻击,让客户端使用Windows身份验证方式进行登录。
/* 关闭SQL Server身份验证 */
sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'mixed authentication mode', 0
RECONFIGURE WITH OVERRIDE
GO
3.3. 定期更改口令
为了提高账号的安全性,应该定期更改口令,避免口令被破解。
/* 修改口令 */
ALTER LOGIN [new_login] WITH PASSWORD = 'new_password', CHECK_POLICY = OFF
3.4. 日志审计
为了避免恶意攻击造成的损失,需要对SQL Server数据库进行安全审计,记录每个用户的活动,以便发现并处理风险。
/* 创建审计对象 */
CREATE SERVER AUDIT [my_audit] TO APPLICATION_LOG;
4. 总结
MSSQL服务器账号安全管理是数据库数据安全保护的重要环节。在账号安全管理方面,应该注意Sa账号限制和服务器身份验证的禁用等等。账号注册过程中,需要新建对应的数据库对象,创建数据库用户,并为用户分配角色和权限。在账号安全管理方面,应该注意定期更改口令和进行日志审计。