Merotasi kunci enkripsi disk

Perangkat air-gapped Google Distributed Cloud (GDC) menggunakan Linux Unified Key Setup (LUKS) untuk mengenkripsi data di disk saat HSM eksternal tidak disediakan. Array RAID5 dibuat di atas 4 drive data, dan satu perangkat LUKS dibuat di atas array RAID5. KEK LUKS dibuat secara acak dan dapat dirotasi.

Dokumen ini menjelaskan langkah-langkah untuk mengganti KEK LUKS yang harus dilakukan untuk:

  • rotasi KEK terjadwal secara rutin.
  • Eksposur KEK.

Sebelum memulai

Selesaikan langkah-langkah berikut:

  1. Pastikan Anda memenuhi prasyarat laptop.
  2. Pastikan Anda dapat login ke tiga node sebagai pengguna root.

Merotasi KEK

Sistem appliance air-gapped Google Distributed Cloud (GDC) menggunakan cluster NetApp ONTAP Select (OTS) dua node yang di-deploy di node bm01 dan bm02 (biasanya tanpa GPU). Setiap node memiliki 4 drive data khusus yang dikonfigurasi sebagai array RAID5 untuk meningkatkan redundansi. Satu perangkat yang dienkripsi LUKS disusun di atas setiap array RAID5 untuk memastikan keamanan data.

KEK enkripsi LUKS disimpan di disk booting yang berada di /etc/luks. Merotasi KEK LUKS memerlukan rotasi enkripsi LUKS di kedua node untuk menjaga keamanan di seluruh cluster. Untuk melakukan rotasi KEK reguler atau jika KEK terekspos, ulangi langkah-langkah berikut di bm01 dan bm02:

  1. Login ke node sebagai pengguna root.

  2. Pastikan perangkat RAID ada, dan dapatkan jalur lengkap RAID_DEVICE.

    ll /dev/md
    
  3. Pastikan file kunci LUKS lama ada, dan dapatkan jalur lengkap OLD_KEY.

    ll /etc/luks
    
  4. Tambahkan KEK lama ke slot kunci 1, sehingga slot kunci 0 dan 1 memiliki KEK yang sama.

    cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEY
    

    Ganti RAID_DEVICE dan OLD_KEY dengan jalur dari langkah sebelumnya.

  5. Hapus KEK lama dari slot kunci 0.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. Buat KEK baru, dan simpan di file kunci baru NEW_KEY.

    dd if=/dev/urandom of=NEW_KEY bs=512 count=1
    chmod u=r,go-rwx NEW_KEY
    

    Ganti NEW_KEY dengan jalur lengkap ke file kunci baru.

  7. Tambahkan KEK baru ke slot kunci 0.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. Menyetel konfigurasi persisten untuk membuka atau menutup perangkat LUKS saat booting atau mematikan mesin.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. Hapus KEK lama dari slot kunci 1.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. Pastikan KEK baru berfungsi.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. Pastikan KEK lama tidak berfungsi lagi.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. Hapus KEK lama.

    rm OLD_KEY
    

Jika node di-reboot sebelum rotasi selesai, perangkat LUKS masih dapat dibuka setelah booting. Anda dapat melanjutkan langkah-langkah setelah node kembali.