OpenResty Edge™ 数据库加密
如果想要对数据库的加密,我们可以将 PostgresSQL 的数据放到 dm-crypt 创建的加密分区上。
注意:加密后会对数据库的读写性能有影响,根据测试结果,数据库的写入性能会下降 20~30% 左右,读取性能会下降 5~10%
下面我们提供具体的配置方法,以下操作都在安装了 openresty-postgresql12 的机器上执行。
创建加密分区
准备一块新的硬盘,这里我们准备的设备名为 /dev/sdb。使用 cryptsetup 对新硬盘格式化进行格式化,需要输入密码。
sudo cryptsetup luksFormat /dev/sdb
映射到 /dev/mapper,映射名为 en_disk
。
sudo cryptsetup luksOpen /dev/sdb en_disk
对映射出来的设备进行初始化。
sudo mkfs.ext4 /dev/mapper/en_disk
将数据库迁移到加密分区上
停止 PostgreSQL 服务,
注意:数据库迁移过程中 Edge Admin 和 Edge Log Server 会无法工作。
sudo systemctl stop openresty-postgresql12
备份 PostgreSQL 数据目录。
sudo mv /var/postgres12/data /var/postgres12/data_backup
sudo chmod 777 /var/postgres12/data_backup
sudo mkdir -p /var/postgres12/data
将加密分区挂载到原来的数据目录。
sudo mount /dev/mapper/en_disk /var/postgres12/data
将备份数据复制到加密分区中。
sudo cp -R /var/postgres12/data_backup/* /var/postgres12/data
sudo chown -R postgres:postgres /var/postgres12/data
sudo chmod 700 /var/postgres12/data
启动 PostgreSQL 服务后,数据库迁移完成。
sudo systemctl start openresty-postgresql12
数据库迁移后,请检查 Edge Admin 和 Edge Log Server 是否正常工作。
开机自动挂载加密分区 (可选)
如果需要开机后自动加载加密分区而不是手动操作,可以按照下面的方法进行配置。
编辑 /etc/fstab
文件,在最后添加以下内容。
/dev/mapper/en_disk /var/postgres12/data ext4 defaults 0 0
在 /etc/crypttab
文件中添加以下内容。
en_disk /dev/sdb /root/diskpass
创建 /root/diskpass
文件,并往文件中写入加密分区的密码。
sudo touch /root/diskpass
sudo chmod 600 /root/diskpass
echo "your password" | sudo tee /root/diskpass
关联加密设备和密码。
sudo cryptsetup luksAddKey /dev/sdb /root/diskpass