MySQL三级等保

1. 等保概述

1.1 什么是等保

等保(网络安全等级保护)是国家对信息系统安全等级保护工作的统一规范。根据《网络安全等级保护基本要求》,信息系统安全保护等级分为五级,其中三级等保是较为常见的企业级安全要求。

等保的核心价值

  • 合规要求:满足国家法律法规要求
  • 安全保障:提高系统安全防护能力
  • 风险控制:降低安全风险
  • 业务保障:保障业务稳定运行

1.2 MySQL等保要求

MySQL数据库作为信息系统的核心组件,需要满足等保的各项要求。本文详细介绍MySQL数据库在三级等保中的各项要求及实现方法。

等保要求分类

  1. 身份鉴别:用户身份识别和验证
  2. 访问控制:权限管理和访问限制
  3. 安全审计:操作日志和审计记录
  4. 可信验证:可信根验证(数据库不适用)
  5. 数据完整性:数据传输和存储完整性
  6. 数据保密性:数据传输和存储保密性
  7. 数据备份恢复:数据备份和恢复能力
  8. 剩余信息保护:数据清除和释放
  9. 个人信息保护:个人信息采集和使用(应用层)

2. 身份鉴别

2.1 身份标识和鉴别

2.1.1 要求内容

等保要求

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。

2.1.2 测评方法

1. 查询账号列表
1
2
3
4
5
-- 查询所有用户账号
SELECT user, host, password FROM mysql.user;

-- 或者MySQL 5.7+
SELECT user, host, authentication_string FROM mysql.user;

检查项

  • 查看用户列表
  • 检查是否存在相同用户名(不同host可以相同用户名)
  • 身份标识应具有唯一性

说明

  • MySQL身份鉴别通过username+host+password来进行登录验证
  • 鉴别因素三者不能同时为空
  • 同一host下的用户名必须唯一
2. 检查空口令账号
1
2
3
4
5
6
7
-- 检查空口令账号
SELECT * FROM mysql.user
WHERE LENGTH(password) = 0 OR password IS NULL;

-- MySQL 5.7+使用authentication_string
SELECT * FROM mysql.user
WHERE LENGTH(authentication_string) = 0 OR authentication_string IS NULL;

要求:输出结果应为空,不允许存在空口令账号。

3. 检查密码复杂度配置

针对MySQL 5.6.6之后版本

1
2
-- 查看密码复杂度相关配置
SHOW VARIABLES LIKE 'validate_password%';

输出示例

1
2
3
4
5
6
7
8
9
10
11
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM|
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+

参数说明

参数 说明 推荐值
validate_password_check_user_name 检查密码是否包含用户名 ON
validate_password_dictionary_file 字典文件路径 -
validate_password_length 密码最小长度 8+
validate_password_mixed_case_count 大小写字母数量 1+
validate_password_number_count 数字数量 1+
validate_password_policy 密码策略 MEDIUM/STRONG
validate_password_special_char_count 特殊字符数量 1+

注意:MySQL过低版本不能进行密码复杂度配置,则关注当前口令复杂度策略。

2.1.3 配置密码复杂度策略

安装validate_password插件
1
2
3
4
5
-- 检查插件是否安装
SHOW PLUGINS LIKE 'validate_password%';

-- 安装插件(如果未安装)
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
配置密码策略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 设置密码最小长度
SET GLOBAL validate_password_length = 8;

-- 设置密码策略(LOW/MEDIUM/STRONG)
SET GLOBAL validate_password_policy = MEDIUM;

-- 设置大小写字母数量
SET GLOBAL validate_password_mixed_case_count = 1;

-- 设置数字数量
SET GLOBAL validate_password_number_count = 1;

-- 设置特殊字符数量
SET GLOBAL validate_password_special_char_count = 1;

-- 检查密码是否包含用户名
SET GLOBAL validate_password_check_user_name = ON;
永久配置
1
2
3
4
5
6
7
8
9
10
11
# 编辑my.cnf
vim /etc/my.cnf

[mysqld]
plugin-load-add=validate_password.so
validate_password_length=8
validate_password_policy=MEDIUM
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1
validate_password_check_user_name=ON

2.1.4 定期更换密码

查看密码更换情况

MySQL 5.6.6开始,user表多了一个password_expired字段:

1
2
-- 查看密码过期状态
SELECT user, host, password_expired FROM mysql.user;

MySQL 5.7.4开始,增加了密码生命周期管理:

1
2
3
4
5
6
7
8
9
10
11
-- 查看全局密码生命周期
SHOW GLOBAL VARIABLES LIKE 'default_password_lifetime';

-- 查看用户密码信息
SELECT
user,
host,
password_last_changed,
password_expired,
password_lifetime
FROM mysql.user;

字段说明

  • password_last_changed:密码最后修改时间
  • password_expired:密码是否过期(Y/N)
  • password_lifetime:密码有效期(天),0表示永不过期
配置密码过期策略
1
2
3
4
5
6
7
8
-- 设置全局密码有效期(天)
SET GLOBAL default_password_lifetime = 90;

-- 设置特定用户密码有效期
ALTER USER 'user'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;

-- 立即过期用户密码
ALTER USER 'user'@'host' PASSWORD EXPIRE;
定期更换密码流程
  1. 访谈管理员:了解实际口令更换周期
  2. 查看记录:查看password_last_changed字段
  3. 配置策略:设置default_password_lifetime
  4. 定期检查:定期检查密码过期情况

2.2 登录失败处理

2.2.1 要求内容

等保要求

b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。

2.2.2 测评方法

1. 检查连接错误限制
1
2
-- 查看最大连接错误数
SHOW VARIABLES LIKE 'max_connect_errors';

要求max_connect_errors应设置为合理值(如100)

配置

1
2
3
4
5
6
7
-- 设置最大连接错误数
SET GLOBAL max_connect_errors = 100;

-- 永久配置
# my.cnf
[mysqld]
max_connect_errors = 100
2. 检查连接超时
1
2
-- 查看连接超时时间
SHOW VARIABLES LIKE '%timeout%';

关键参数

  • wait_timeout:非交互式连接超时(秒)
  • interactive_timeout:交互式连接超时(秒)

要求wait_timeout应设置为合理值(如28800秒=8小时)

配置

1
2
3
-- 设置连接超时
SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;
3. 登录失败延迟插件

使用connection_control插件实现登录失败处理

1
2
3
4
5
6
-- 检查插件是否安装
SHOW PLUGINS;
-- 或
SELECT plugin_name, plugin_status
FROM information_schema.plugins
WHERE plugin_name LIKE 'connection%';

安装插件

1
2
3
4
-- 安装connection_control插件
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS
SONAME 'connection_control.so';

配置参数

1
2
3
4
5
6
7
-- 查看配置
SHOW VARIABLES LIKE 'connection_control%';

-- 配置参数(事件毫秒)
SET GLOBAL connection_control_failed_connections_threshold = 3;
SET GLOBAL connection_control_min_connection_delay = 1000;
SET GLOBAL connection_control_max_connection_delay = 108000;

参数说明

参数 说明 示例值
connection_control_failed_connections_threshold 失败连接阈值 3
connection_control_min_connection_delay 最小延迟(毫秒) 1000
connection_control_max_connection_delay 最大延迟(毫秒) 108000

工作机制

  • 前3次失败没有延迟
  • 第4次失败延迟1000毫秒
  • 第5次失败延迟2000毫秒
  • 直到最大延迟108000毫秒

永久配置

1
2
3
4
5
6
# my.cnf
[mysqld]
plugin-load-add=connection_control.so
connection_control_failed_connections_threshold=3
connection_control_min_connection_delay=1000
connection_control_max_connection_delay=108000

注意:MySQL数据库要配置登录失败处理功能需要安装插件,默认无此功能,不符合等保要求。

2.3 远程管理加密

2.3.1 要求内容

等保要求

c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。

2.3.2 测评方法

1. 询问核查

询问管理员

  • 通过什么管理工具连接数据库
  • 连接工具是否具备远程连接加密措施
2. 检查SSL支持
1
2
-- 查看SSL支持
SHOW GLOBAL VARIABLES LIKE '%ssl%';

关键参数

  • have_openssl:是否支持OpenSSL
  • have_ssl:是否支持SSL

要求:值为YES则代表数据库支持SSL连接

3. 配置SSL连接

生成SSL证书

1
2
3
4
5
6
7
# 运行SSL设置脚本
mysql_ssl_rsa_setup --datadir=/var/lib/mysql

# 生成的文件
# ca.pem, ca-key.pem
# server-cert.pem, server-key.pem
# client-cert.pem, client-key.pem

配置MySQL使用SSL

1
2
3
4
5
# my.cnf
[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

客户端使用SSL连接

1
2
3
4
5
# 使用SSL连接
mysql -h192.168.70.160 -uroot -p \
--ssl-ca=/var/lib/mysql/ca.pem \
--ssl-cert=/var/lib/mysql/client-cert.pem \
--ssl-key=/var/lib/mysql/client-key.pem

验证SSL连接

1
2
3
4
-- 查看连接状态
STATUS;
-- 或
SHOW STATUS LIKE 'Ssl%';

输出示例

1
SSL: Cipher in use is DHE-RSA-AES256-SHA

2.4 双因子认证

2.4.1 要求内容

等保要求

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

2.4.2 测评方法

询问并核查

  • 是否采用双因子登录数据库
  • 其中一种是否属于密码技术

实现方式

  • 用户名+口令+Ukey:可以实现双因子认证
  • 用户名+口令:单因子,不符合要求

注意:通常情况下都是用户名+口令,且数据库层面实现双因子登录比较困难,目前好像只有用户名+口令+Ukey可以实现。


3. 访问控制

3.1 账户和权限分配

3.1.1 要求内容

等保要求

a)应对登录的用户分配账户和权限。

3.1.2 测评方法

1
2
-- 查询所有用户
SELECT user, host FROM mysql.user;

检查项

  • 询问数据库管理员各个账户的作用与权限
  • 输出结果是否与实际人员相符

注意:此项基本上默认符合,因为至少有个root用户存在。

3.2 默认账户处理

3.2.1 要求内容

等保要求

b)应重命名或删除默认账户,修改默认账户的默认口令。

3.2.2 测评方法

检查root账户

  • 是否重命名
  • 是否修改默认口令

重命名root账户

1
2
-- 重命名root账户
RENAME USER 'root'@'localhost' TO 'admin'@'localhost';

修改默认口令

1
2
-- 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword123!';

注意:默认账户root可以修改,若因为业务原因不方便修改,则应该使用强口令。

3.3 账户管理

3.3.1 要求内容

等保要求

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在。

3.3.2 测评方法

检查方法

  1. 查看user表
  2. 访谈管理员
  3. 核查表中用户与现实是否做到一一对应
  4. 检查是否存在共用、多余、过期的账户

删除多余账户

1
2
3
4
5
6
-- 删除多余账户
DROP USER 'olduser'@'host';

-- 停用账户(修改密码)
ALTER USER 'user'@'host' IDENTIFIED BY 'RandomPassword123!';
-- 然后不告知用户新密码

3.4 最小权限原则

3.4.1 要求内容

等保要求

d)应授予管理用户所需的最小权限,实现管理用户的权限分离。

3.4.2 测评方法

1. 核查管理员角色

先根据用户方实际人员情况核查是否具备不同管理员

  • 系统管理员
  • 审计管理员
  • 安全管理员

注意:此项至少要包括系统管理员和审计管理员才能算符合。

2. 查看管理员权限
1
2
3
-- 查看各管理员账户权限
SELECT Host, User, File_priv, Shutdown_priv, Grant_priv
FROM mysql.user;

权限说明

  • File_priv:文件操作权限
  • Shutdown_priv:关闭服务器权限
  • Grant_priv:授权权限

检查项

  • 各管理员账户权限设置是否与实际情况对应
  • 是否实现权限分离
3. 创建不同管理员

系统管理员

1
2
3
-- 创建系统管理员
CREATE USER 'sysadmin'@'localhost' IDENTIFIED BY 'Password123!';
GRANT ALL PRIVILEGES ON *.* TO 'sysadmin'@'localhost' WITH GRANT OPTION;

审计管理员

1
2
3
-- 创建审计管理员(只读权限)
CREATE USER 'auditadmin'@'localhost' IDENTIFIED BY 'Password123!';
GRANT SELECT ON *.* TO 'auditadmin'@'localhost';

3.5 访问控制策略

3.5.1 要求内容

等保要求

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。

3.5.2 测评方法

1. 访谈管理员

询问:是否制定了访问控制策略

2. 检查权限配置
1
2
3
4
5
6
7
8
-- 检查用户权限列表
SELECT * FROM mysql.user\G

-- 检查数据库权限列表
SELECT * FROM mysql.db\G

-- 检查用户表权限列表
SELECT * FROM mysql.tables_priv\G

检查项

  • 输出的权限列是否与管理员制定的访问控制策略及规则一致
3. 验证越权访问

登录不同的用户,验证是否存在越权访问的情形

1
2
3
4
5
6
7
8
-- 使用普通用户登录
mysql -uappuser -p

-- 尝试访问未授权的数据库
USE unauthorized_db; -- 应该失败

-- 尝试执行未授权的操作
DROP TABLE authorized_db.t1; -- 应该失败

注意:通常情况下是由系统管理员来配置策略,基本上算默认符合。

3.6 访问控制粒度

3.6.1 要求内容

等保要求

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。

3.6.2 测评方法

检查访问控制粒度

  • 主体:用户级或进程级
  • 客体:文件、数据库表级

MySQL访问控制粒度

  • 主体:用户级(user@host)
  • 客体:数据库表级(database.table)

示例

1
2
3
4
5
6
7
-- 用户级权限
GRANT SELECT ON database1.* TO 'user1'@'%';
GRANT SELECT ON database2.* TO 'user2'@'%';

-- 表级权限
GRANT SELECT ON database1.table1 TO 'user1'@'%';
GRANT SELECT ON database1.table2 TO 'user1'@'%';

注意:通常情况下数据库层面主体为用户级,客体为数据库表级,符合要求。


4. 安全审计

4.1 启用安全审计功能

4.1.1 要求内容

等保要求

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计。

4.1.2 测评方法

1. 检查日志配置
1
2
-- 查看所有日志相关配置
SHOW VARIABLES LIKE 'log_%';

关键日志

  • log_bin:二进制日志
  • log_slow_queries:慢查询日志
  • log_error:错误日志
  • general_log:通用查询日志
2. 检查通用查询日志
1
2
-- 查看通用查询日志配置
SHOW GLOBAL VARIABLES LIKE '%general%';

要求

  • general_log:应为ON1
  • general_log_file:日志文件路径

配置通用查询日志

1
2
3
4
# my.cnf
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log

注意general_log值为OFF0表示未开启,不符合要求。

3. 第三方审计工具

核查是否采取第三方工具增强MySQL日志功能

常用审计工具

  • MySQL Enterprise Audit:MySQL官方审计插件
  • McAfee Database Security:第三方审计工具
  • Imperva SecureSphere:数据库安全审计

审计内容应包括

  • 事件的日期和时间
  • 用户
  • 事件类型
  • 事件是否成功
  • 其他与审计相关的信息

4.2 审计记录内容

4.2.1 要求内容

等保要求

b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。

4.2.2 测评方法

1. 查看二进制日志
1
2
3
4
-- 查看当前日志
SHOW MASTER STATUS;

-- 根据日志存放路径,查看输出的日志内容

二进制日志内容

  • 事件的日期和时间
  • 用户信息
  • 事件类型(INSERT、UPDATE、DELETE等)
  • 事件是否成功
  • SQL语句内容
2. 查看通用查询日志
1
2
# 查看通用查询日志内容
tail -f /var/log/mysql/general.log

日志格式

1
2
3
2024-01-15 10:30:45    1 Connect    root@localhost on testdb
2024-01-15 10:30:46 1 Query SELECT * FROM users
2024-01-15 10:30:47 1 Quit

包含信息

  • 日期和时间
  • 连接ID
  • 事件类型(Connect、Query、Quit等)
  • 用户信息
  • SQL语句

注意:只要开启了审计功能,此项默认符合。

4.3 审计记录保护

4.3.1 要求内容

等保要求

c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。

4.3.2 测评方法

询问管理员

  • 是否对审计记录保护并定期备份
  • 备份在哪里
  • 日志记录保存时间是否大于6个月

保护措施

1
2
3
4
5
6
7
8
9
10
11
# 1. 设置日志文件权限
chmod 600 /var/log/mysql/general.log
chown mysql.mysql /var/log/mysql/general.log

# 2. 定期备份日志
# 添加到crontab
0 0 * * * cp /var/log/mysql/general.log /backup/logs/general-$(date +%F).log

# 3. 日志轮转
# 使用logrotate
vim /etc/logrotate.d/mysql

logrotate配置

1
2
3
4
5
6
7
8
9
/var/log/mysql/*.log {
daily
rotate 180
compress
delaycompress
missingok
notifempty
create 600 mysql mysql
}

要求:日志保存时间应大于6个月。

4.4 审计进程保护

4.4.1 要求内容

等保要求

d)应对审计进程进行保护,防止未经授权的中断。

4.4.2 测评方法

测试方法

  • 切换开放状态的账户(非root账户)进行测试
  • 看能否中断审计、日志服务

保护措施

1
2
3
4
5
6
7
8
9
10
# 1. 限制日志文件权限
chmod 600 /var/log/mysql/general.log
chown mysql.mysql /var/log/mysql/general.log

# 2. 限制日志目录权限
chmod 700 /var/log/mysql
chown mysql.mysql /var/log/mysql

# 3. 使用只读文件系统(可选)
# 将日志目录挂载为只读

验证

1
2
-- 使用普通用户尝试关闭日志
SET GLOBAL general_log = 'OFF'; -- 应该失败(需要SUPER权限)

5. 可信验证

5.1 要求内容

等保要求

a)可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。

5.2 测评方法

说明:数据库未涉及可信技术的使用,故不适用。

注意:此项主要针对操作系统和硬件层面,数据库层面不涉及。


6. 数据完整性

6.1 传输过程完整性

6.1.1 要求内容

等保要求

a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。

6.1.2 测评方法

说明

  • 若数据库只涉及鉴别信息,则按照身份鉴别c项来写(SSL加密)
  • 其他数据绝大多数情况考虑不适用,由应用层面负责

实现方式

  • 使用SSL/TLS加密传输
  • 使用校验和(Checksum)
  • 使用数字签名

6.2 存储过程完整性

6.2.1 要求内容

等保要求

b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。

6.2.2 测评方法

说明:如果数据保密性满足要求则完整性也满足要求,可以根据数据保密性b)来写。

实现方式

  • 数据加密存储
  • 校验和验证
  • 数字签名

7. 数据保密性

7.1 传输过程保密性

7.1.1 要求内容

等保要求

a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

7.1.2 测评方法

说明:数据库只涉及了身份鉴别,看身份鉴别c项(SSL加密)。

实现方式

  • 使用SSL/TLS加密传输
  • 使用VPN加密通道
  • 使用加密协议

7.2 存储过程保密性

7.2.1 要求内容

等保要求

b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

7.2.2 测评方法

主要查看

  • 鉴别信息采用了什么加密方式
  • 其他重要数据根据现场查看情况来定

MySQL密码加密

1
2
3
-- 查看密码加密方式
SELECT user, host, plugin, authentication_string
FROM mysql.user;

加密插件

  • mysql_native_password:MySQL原生加密
  • sha256_password:SHA256加密
  • caching_sha2_password:SHA2缓存加密(MySQL 8.0默认)

配置加密插件

1
2
3
-- 设置用户使用SHA256加密
ALTER USER 'user'@'host'
IDENTIFIED WITH sha256_password BY 'password';

数据加密存储

1
2
3
4
5
6
7
-- 使用AES加密存储敏感数据
INSERT INTO users (id, password)
VALUES (1, AES_ENCRYPT('password', 'encryption_key'));

-- 查询时解密
SELECT id, AES_DECRYPT(password, 'encryption_key') AS password
FROM users;

8. 数据备份恢复

8.1 本地数据备份与恢复

8.1.1 要求内容

等保要求

a)应提供重要数据的本地数据备份与恢复功能。

8.1.2 测评方法

询问管理员

  • 是否对数据库进行本地备份
  • 是否做过恢复性测试

备份方案

1
2
3
4
5
6
7
8
9
# 逻辑备份
mysqldump -uroot -pBgx123.com \
--all-databases \
--single-transaction \
--master-data=1 \
> /backup/mysql-$(date +%F).sql

# 物理备份
innobackupex --user=root --password=Bgx123.com /backup/

恢复测试

  • 定期进行恢复演练
  • 验证备份的可用性
  • 记录恢复时间

8.2 异地实时备份

8.2.1 要求内容

等保要求

b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地。

8.2.2 测评方法

询问管理员

  • 是否做了异地实时备份
  • 具体备份在哪里
  • 保存时间

异地实时备份方案

1
2
3
4
5
6
7
8
9
10
# 主从复制实现实时备份
# 主库:192.168.70.160
# 从库(异地):10.0.0.100

# 配置主从复制
CHANGE MASTER TO
MASTER_HOST='192.168.70.160',
MASTER_USER='repl',
MASTER_PASSWORD='Rep123.com',
MASTER_AUTO_POSITION=1;

注意:此项要注意实时,往往业主做了异地备份,但不是实时,也只能算部分符合。

8.3 热冗余

8.3.1 要求内容

等保要求

c)应提供重要数据处理系统的热冗余,保证系统的高可用性。

8.3.2 测评方法

询问管理员

  • 是否对数据库采用热冗余方式部署

热冗余方案

  • 主从复制:一主多从
  • 双主复制:Master-Master
  • MHA:MySQL高可用架构
  • Galera Cluster:多主集群

注意:需要注意一定要是重要数据存在的数据库,可根据现场具体情况和业务判断。


9. 剩余信息保护

9.1 鉴别信息清除

9.1.1 要求内容

等保要求

a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。

9.1.2 测评方法

说明:MySQL数据库自身能够保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。

实现方式

  • MySQL在删除用户时自动清除相关数据
  • 操作系统层面的数据清除

9.2 敏感数据清除

9.2.1 要求内容

等保要求

b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。

9.2.2 测评方法

说明:MySQL数据库自身能够保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。

实现方式

  • 删除数据时自动清除
  • 表删除时清除数据文件
  • 数据库删除时清除所有相关文件

10. 个人信息保护

10.1 个人信息采集

10.1.1 要求内容

等保要求

a)应仅采集和保存业务必需的用户个人信息。

10.1.2 测评方法

说明:数据库不涉及对个人信息的采集,此项在应用层面进行判定。

10.2 个人信息访问控制

10.2.1 要求内容

等保要求

b)应禁止未授权访问和非法使用用户个人信息。

10.2.2 测评方法

说明:数据库不涉及对个人信息的采集,此项在应用层面进行判定。

数据库层面可以做的

  • 限制用户权限
  • 加密存储敏感信息
  • 审计访问记录

11. 等保实施检查清单

11.1 身份鉴别检查

  • 所有用户都有唯一身份标识
  • 不存在空口令账号
  • 密码复杂度策略已配置
  • 密码定期更换机制已配置
  • 登录失败处理功能已配置
  • 连接超时已配置
  • SSL加密已配置
  • 双因子认证已实现(如适用)

11.2 访问控制检查

  • 所有用户都有明确的账户和权限
  • 默认账户已重命名或使用强密码
  • 多余账户已删除
  • 实现了权限分离(系统管理员、审计管理员)
  • 访问控制策略已制定
  • 访问控制粒度达到表级

11.3 安全审计检查

  • 安全审计功能已启用
  • 审计覆盖所有用户
  • 审计记录包含完整信息
  • 审计记录已保护
  • 审计记录定期备份
  • 审计记录保存时间≥6个月
  • 审计进程已保护

11.4 数据完整性检查

  • 传输过程完整性已保障(SSL)
  • 存储过程完整性已保障

11.5 数据保密性检查

  • 传输过程保密性已保障(SSL)
  • 存储过程保密性已保障(加密)

11.6 数据备份恢复检查

  • 本地备份已配置
  • 恢复测试已进行
  • 异地实时备份已配置
  • 热冗余已部署

12. 总结

12.1 等保的核心价值

  1. 合规要求:满足国家法律法规要求
  2. 安全保障:提高系统安全防护能力
  3. 风险控制:降低安全风险
  4. 业务保障:保障业务稳定运行

12.2 等保实施要点

  1. 身份鉴别:强密码、定期更换、登录失败处理
  2. 访问控制:最小权限、权限分离
  3. 安全审计:完整记录、保护备份
  4. 数据安全:加密传输、加密存储
  5. 备份恢复:本地备份、异地备份、热冗余

12.3 架构师建议

  1. 建立等保体系:制定完整的等保实施方案
  2. 定期评估:定期进行等保评估和整改
  3. 文档维护:记录等保实施过程和结果
  4. 持续改进:根据评估结果持续改进
  5. 团队培训:定期培训等保要求

12.4 等保检查清单

  • 身份鉴别配置完整
  • 访问控制策略完善
  • 安全审计功能正常
  • 数据加密传输和存储
  • 备份恢复机制完善
  • 等保文档完整

相关文章