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