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