4.3. 암호화 로드
기본적으로 모든 RBD API는 암호화된 RBD 이미지를 암호화되지 않은 RBD 이미지와 동일한 방식으로 처리합니다. 이미지의 모든 위치에서 원시 데이터를 읽거나 쓸 수 있습니다. 원시 데이터를 이미지에 작성하면 암호화 형식의 무결성이 발생할 수 있습니다. 예를 들어 원시 데이터는 이미지 시작 부분에 있는 암호화 메타데이터를 재정의할 수 있습니다. 암호화된 RBD 이미지에서 암호화된 입력/출력(I/O) 또는 유지 관리 작업을 안전하게 수행하려면 이미지를 연 직후 추가 암호화 로드 작업을 적용해야 합니다.
암호화 로드 작업을 수행하려면 이미지 자체와 명시적으로 포맷된 각 이미지의 암호화 키 잠금을 해제하기 위한 암호와 암호화 형식을 지정해야 합니다. 열린 RBD 이미지의 모든 I/O는 암호화되거나 암호 해독됩니다. 복제된 RBD 이미지의 경우 상위 이미지의 IO가 포함됩니다. 암호화 키는 이미지가 닫힐 때까지 RBD 클라이언트에 의해 메모리에 저장됩니다.
RBD 이미지에 암호화가 로드되면 다른 암호화 로드 또는 형식 작업을 적용할 수 없습니다. 또한 열린 이미지 컨텍스트를 사용하여 RBD 이미지 크기 및 상위 중복을 검색하는 API 호출은 유효한 이미지 크기와 유효 상위 중첩을 각각 반환합니다. rbd-nbd
를 통해 RBD 이미지를 블록 장치로 매핑할 때 암호화가 자동으로 로드됩니다.
열린 이미지 컨텍스트를 사용하여 이미지 크기를 검색하고 상위 겹치는 API 호출은 유효한 이미지 크기와 유효 상위 중첩을 반환합니다.
암호화된 이미지의 복제본이 명시적으로 포맷된 경우, 상위 스냅샷에서 복사될 때 복제된 이미지 형식에 따라 상위 데이터를 다시 암호화해야 하므로 복제된 이미지의 복제본이 명시적으로 포맷되거나 축소됩니다. flatten 작업이 실행되기 전에 암호화가 로드되지 않으면 복제된 이미지에서 이전에 액세스할 수 있는 모든 상위 데이터가 읽을 수 없게 될 수 있습니다.
암호화된 이미지의 복제본이 명시적으로 포맷되면 복제된 이미지를 축소하는 작업이 투명하지 않습니다. 스냅샷을 포함하는 복제된 이미지 또는 복제된 이미지가 오브젝트 크기에 정렬되지 않는 크기로 축소되는 경우, 플랫과 유사하게 상위 스냅샷에서 일부 데이터를 복사하는 작업으로 축소되기 때문입니다. 축소 작업을 실행하기 전에 암호화를 로드하지 않으면 복제된 이미지에서 이전에 액세스할 수 있는 모든 상위 데이터가 읽을 수 없게 될 수 있습니다.