디스크 암호화 키 순환

Google Distributed Cloud (GDC) 에어 갭 어플라이언스는 외부 HSM이 제공되지 않는 경우 Linux Unified Key Setup (LUKS)을 사용하여 디스크의 데이터를 암호화합니다. 4개의 데이터 드라이브 위에 RAID5 배열이 생성되고 RAID5 배열 위에 단일 LUKS 기기가 생성됩니다. LUKS KEK는 무작위로 생성되며 순환할 수 있습니다.

이 문서에서는 다음을 위해 실행해야 하는 LUKS KEK를 순환하는 단계를 설명합니다.

  • 정기적으로 예약된 KEK 순환
  • KEK 노출

시작하기 전에

다음 단계를 완료합니다.

  1. 노트북 기본 요건을 충족하는지 확인합니다.
  2. 루트 사용자로 세 노드에 로그인할 수 있는지 확인합니다.

KEK 순환

Google Distributed Cloud (GDC) 에어갭 어플라이언스 시스템은 노드 bm01 및 bm02에 배포된 2노드 NetApp ONTAP Select (OTS) 클러스터를 활용합니다 (일반적으로 GPU 없음). 각 노드에는 중복성을 강화하기 위해 RAID5 배열로 구성된 전용 데이터 드라이브가 4개 있습니다. 데이터 보안을 위해 각 RAID5 어레이 위에 단일 LUKS 암호화 기기가 계층화됩니다.

LUKS 암호화 KEK는 /etc/luks에 있는 부팅 디스크에 저장됩니다. LUKS KEK를 순환하려면 클러스터 전체에서 보안을 유지하기 위해 두 노드에서 LUKS 암호화를 순환해야 합니다. 정기적인 KEK 순환을 수행하거나 KEK가 노출된 경우 bm01과 bm02 모두에서 다음 단계를 반복합니다.

  1. 루트 사용자로 노드에 로그인합니다.

  2. RAID 기기가 있는지 확인하고 RAID_DEVICE 전체 경로를 가져옵니다.

    ll /dev/md
    
  3. 이전 LUKS 키 파일이 있는지 확인하고 OLD_KEY 전체 경로를 가져옵니다.

    ll /etc/luks
    
  4. 키 슬롯 0과 1에 동일한 KEK가 있도록 키 슬롯 1에 이전 KEK를 추가합니다.

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

    RAID_DEVICEOLD_KEY을 이전 단계의 경로로 바꿉니다.

  5. 키 슬롯 0에서 이전 KEK를 삭제합니다.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. 새 KEK를 생성하고 새 키 파일 NEW_KEY에 저장합니다.

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

    NEW_KEY을 새 키 파일의 전체 경로로 바꿉니다.

  7. 키 슬롯 0에 새 KEK를 추가합니다.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. 머신 부팅 또는 종료 시 LUKS 기기를 열거나 닫도록 영구 구성을 설정합니다.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. 키 슬롯 1에서 이전 KEK를 삭제합니다.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. 새 KEK가 작동하는지 확인합니다.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. 이전 KEK가 더 이상 작동하지 않는지 확인합니다.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. 이전 KEK를 삭제합니다.

    rm OLD_KEY
    

회전이 완료되기 전에 노드를 재부팅하면 부팅 후에도 LUKS 기기를 열 수 있습니다. 노드가 다시 작동하면 단계를 재개할 수 있습니다.