操作基于CentOS7.9,执行以下命令完成MySQL、OpenSSL、ClamAV的安装: ``` yum -y install mysql-server openssl clamav systemctl enable --now mysqld clamd ```
验证安装有效性:执行mysql --version、openssl version、clamd --version,出现对应版本号表示安装成功。
对档案数据库表启用AES-256加密,修改MySQL配置文件/etc/my.cnf,添加完整配置:
```
[mysqld]
default_authentication_plugin=mysql_native_password
plugin-load-add=keyring_file.so
early-plugin-load=keyring_file.so
keyring_file_data=/var/lib/mysql/keyring
```
重启MySQL服务,执行密钥初始化与档案库创建: ``` mkdir -p /var/lib/mysql/ chown mysql:mysql /var/lib/mysql/keyring mysql -uroot -p -e "CREATE DATABASE archive DEFAULT CHARACTER SET utf8mb4;" mysql -uroot -p archive -e "ALTER TABLE file_metadata ADD COLUMN encrypted_content BLOB;" ```
插入档案数据时需使用AES加密函数,示例SQL: ``` INSERT INTO archive.file_metadata (file_name, encrypted_content) VALUES ('人事档案.pdf', AES_ENCRYPT('原始人事档案内容', 'your_256_bit_key_here')); ``` 注意:密钥必须存储在独立密钥柜,禁止与数据库部署在同一服务器。
限制档案库仅允许指定业务IP访问,执行如下权限配置命令: ``` mysql -uroot -p -e "CREATE USER 'archive_user'@'192.168.1.100' IDENTIFIED BY 'YourStrongPass123!'; GRANT SELECT,INSERT,UPDATE ON archive. TO 'archive_user'@'192.168.1.100'; FLUSH PRIVILEGES;" ``` 禁止使用%通配符配置用户IP,避免任意IP访问风险。
用OpenSSL生成MySQL服务端SSL证书,执行以下命令: ``` cd /etc/my.cnf.d/ openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem openssl req -newkey rsa:2048 -nodes -days 3650 -keyout server-key.pem -out server-req.pem openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem ```

修改MySQL配置文件/etc/my.cnf,添加SSL配置项:
```
[mysqld]
ssl-ca=/etc/my.cnf.d/ca-cert.pem
ssl-cert=/etc/my.cnf.d/server-cert.pem
ssl-key=/etc/my.cnf.d/server-key.pem
```
强制业务用户使用SSL连接,执行: ``` mysql -uroot -p -e "ALTER USER 'archive_user'@'192.168.1.100' REQUIRE SSL;" ```
配置ClamAV自动扫描档案存储目录,创建配置文件/etc/clamd.d/scan.conf,内容如下:
```
LocalSocket /var/run/clamd.scan/clamd.sock
User clam
ArchiveMaxFileSize 100M
ExcludePath ^/proc/
ExcludePath ^/sys/
DatabaseMirror db.local.clamav.net
```
启动扫描服务并更新病毒库: ``` systemctl enable --now clamd freshclam ```
修改MySQL配置文件/etc/my.cnf,添加审计日志配置:
```
[mysqld]
plugin-load-add=audit_log.so
audit_log_format=JSON
audit_log_file=/var/log/mysql/audit.log
```
重启MySQL后查看审计日志: ``` tail -f /var/log/mysql/audit.log ``` 每天定时将审计日志备份到异地服务器,保留周期不低于90天。
创建备份脚本/opt/backup_archive.sh,完整内容:
```
!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/backup/archive/
mkdir -p $BACKUP_DIR
mysqldump -uarchive_user -p'YourStrongPass123!' archive | gzip > $BACKUP_DIR/archive_$DATE.sql.gz
cp -r /var/lib/mysql/keyring $BACKUP_DIR/keyring_$DATE/
scp $BACKUP_DIR/ 192.168.1.200:/remote/archive_backup/
```
赋予脚本执行权限并加入定时任务: ``` chmod +x /opt/backup_archive.sh crontab -e 添加以下内容,每天凌晨2点执行备份 0 2 /opt/backup_archive.sh ```