访问给MSSQL低权限账户授权 如何保证安全?
现在的互联网环境中,每个组织都需要数据处理,MSSQL是一个强大的工具来满足数据处理的需要。但是与此同时,安全问题也是一个不能被忽略的问题。如何保证低权限账户访问MSSQL的安全性?下面是一些措施。
1. 使用最低权限账户访问MSSQL
MSSQL数据库的特点是具有精细的权限管理功能,这个特点意味着每个用户帐户都应该有一个最低权限的账户。
1.1 构建最低权限账户
最佳实践是使用MSSQL中的PERMISSION属性来限制用户权限,例如,为每个用户创建一个自定义数据库角色
USE [SurveyDB]
CREATE ROLE db_datareader_bulkadmin
GO
USE [master]
CREATE LOGIN [BulkUser]
WITH PASSWORD = 'p@$$w0rd'
GO
USE [SurveyDB]
GRANT SELECT TO [db_datareader_bulkadmin]
EXEC sp_addrolemember 'db_datareader_bulkadmin', 'BulkUser'
GO
1.2 最低权限账户访问数据库
在为一个用户帐户授予对数据库的访问之前,必须按照最佳的权限措施和角色来定义他们的权限。 例如,使用db_datareader角色对用户进行授权。确保在定义角色的时候,仅授权表中数据的SELECT操作是安全的。
USE [SurveyDB]
EXEC sp_addrolemember 'db_datareader', 'SurveyUser'
GO
2. 使用密码复杂性策略
为了保护数据库的安全性,必须实施密码复杂性策略。密码复杂性策略是一种要求用户创建或选择安全密码的方法。它通过以下措施来防止对账户的未授权访问:
2.1 实施密码历史记录
在密码历史记录是启用的情况下,用户不能使用以前的某一密码,如果他们试图这样做,将被阻止。 为此,管理员可以使用以下查询来为用户启用密码历史记录:
USE [master]
ALTER LOGIN BulkUser WITH PASSWORD = 'qwer!@#$%^'
GO
ALTER LOGIN BulkUser
WITH CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
USE [SurveyDB]
ALTER LOGIN BulkUser WITH PASSWORD = 'new_password'
GO
2.2 实施帐户锁定策略
启用访问错误尝试次数过多带来的帐户锁定策略可以限制仅在特定时间内使用帐户。 以下查询可以为MSSQL实施帐户锁定策略:
USE [master]
ALTER LOGIN BulkUser WITH PASSWORD = 'qwer!@#$%^'
GO
ALTER LOGIN BulkUser
WITH CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
USE [SurveyDB]
ALTER LOGIN BulkUser
WITH PASSWORD = 'new_password',
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF
GO
USE [master]
ALTER LOGIN BulkUser DISABLE
GO
USE [master]
EXEC sp_alterlogin 'BulkUser', 'CHECK_POLICY', 'ON';
EXEC sp_alterlogin 'BulkUser', 'CHECK_EXPIRATION', 'ON';
EXEC sp_alterlogin 'BulkUser', 'MAX_FAILED_LOGIN_ATTEMPTS', '3';
EXEC sp_alterlogin 'BulkUser', 'LOGIN_LOCKOUT', '1';
EXEC sp_alterlogin 'BulkUser', 'LOGIN_LOCKOUT_TIME', '5';
GO
3. 内外网隔离
将MSSQL数据存储在内部网络,或使用防火墙保护MSSQL数据库的外部访问,可减少数据库被攻击的风险。
3.1 配置内部网络
首先可以考虑的是,在你的内部网络中,将MSSQL服务器放置在和公共网络隔离的区域中。
3.2 配置外部网络
创建防火墙规则,允许特定的IP地址或IP地址范围访问MSSQL服务,从而控制外部访问。
结论:
与其他数据处理方案相比,MSSQL提供了更多的数据处理功能。 但是,为了保持数据库安全,建议将我们上述提到的措施纳入你的计划中,使用最低权限账户访问MSSQL,通过密码复杂性策略和内外网隔离来确保数据库安全。