如果沒有提供外部 HSM,Google Distributed Cloud (GDC) 氣隙裝置會使用 Linux Unified Key Setup (LUKS) 加密磁碟上的資料。 系統會在 4 個資料硬碟上建立 RAID5 陣列,並在 RAID5 陣列上建立單一 LUKS 裝置。LUKS KEK 是隨機產生,且可以輪替。
本文說明如何輪替 LUKS KEK,適用於:
- 定期排定的 KEK 輪替作業。
- KEK 曝光。
事前準備
操作步驟如下:
- 確認符合筆電先決條件。
- 確認您能以根使用者身分登入這三個節點。
輪替 KEK
Google Distributed Cloud (GDC) 氣隙裝置系統會使用部署在節點 bm01 和 bm02 的雙節點 NetApp ONTAP Select (OTS) 叢集 (通常不含 GPU)。每個節點都有 4 個專屬資料硬碟,並設定為 RAID5 陣列,可提高備援能力。每個 RAID5 陣列的頂端都有一層 LUKS 加密裝置,確保資料安全無虞。
LUKS 加密 KEK 儲存在 /etc/luks 中的開機磁碟。輪替 LUKS KEK 時,必須輪替兩個節點上的 LUKS 加密,才能維持叢集安全性。如要定期輪替 KEK 或 KEK 遭到洩漏,請在 bm01 和 bm02 上重複執行下列步驟:
以超級使用者身分登入節點。
確認 RAID 裝置存在,並取得
RAID_DEVICE完整路徑。ll /dev/md確認舊的 LUKS 金鑰檔案存在,並取得
OLD_KEY完整路徑。ll /etc/luks將舊 KEK 新增至金鑰插槽 1,讓金鑰插槽 0 和 1 都有相同的 KEK。
cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEY將
RAID_DEVICE和OLD_KEY替換為上一步的路徑。從金鑰插槽 0 移除舊的 KEK。
cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY產生新的 KEK,並儲存在新的金鑰檔案
NEW_KEY中。dd if=/dev/urandom of=NEW_KEY bs=512 count=1 chmod u=r,go-rwx NEW_KEY將
NEW_KEY替換為新金鑰檔案的完整路徑。將新的 KEK 新增至金鑰插槽 0。
cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY設定持續性設定,在電腦啟動或關機時開啟或關閉 LUKS 裝置。
DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE) echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab從金鑰插槽 1 移除舊的 KEK。
cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY確認新的 KEK 是否正常運作。
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY確認舊 KEK 已失效。
cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY移除舊的 KEK。
rm OLD_KEY
如果節點在輪替完成前重新啟動,LUKS 裝置仍可在啟動後開啟。節點恢復後,即可繼續執行步驟。