Tworzenie szyfrowanego wolumenu

Istnieje możliwość utworzenia szyfrowanego wolumenu w usłudze Atman Cloud. Taki wolumen jest szyfrowany za pomocą specyfikacji LUKS (Linux Unified Key Setup) oraz jest zabezpieczony 256 bitowym kluczem szyfrującym, który jest generowany automatycznie w momencie tworzenia. Aby móc szyfrować wolumeny, musimy posiadać dodatkowe uprawnienia. W tym celu należy skontaktować się z Atman Service Desk servicedesk@atman.pl.

Tworzenie szyfrowanego wolumenu z panelu Horizon

  1. Tworzenie zaszyfrowanego wolumenu z panelu Horizon

Tworzenie wolumenu za pomocą panelu Horizon odbywa się z zakładki Volumes -> Volumes -> Create Volume.

Po naciśnięciu opcji tworzenia wolumenu, musimy wybrać typ (Type) LUKS z odpowiednią liczbą IOPS, tak jak pokazane na obrazku poniżej. Resztę parametrów wybieramy zgodnie z naszymi preferencjami. Należy pamiętać, iż obowiązują nas obostrzenia quoty projektowej.

pic1

Tworzenie zaszyfrowanego wolumenu z CLI

  1. Tworzenie zaszyfrowanego wolumenu

openstack volume create --size <rozmiar_w_GB> --type LUKS 'zaszyfrowany_wolumen'

  1. Podmontowywanie wolumenu do instancji

openstack server add volume <uuid_instancji> 'zaszyfrowany_wolumen'

Tworzenie zaszyfrowanego, systemowego (bootowalnego) wolumenu z wolumenu niezaszyfrowanego

  1. Tworzenie obrazu z niezaszyfrowanego wolumenu

W zakładce Volumes -> Volumes, z wcześniej przygotowanego wolumenu wybieramy opcję Upload to Image

pic2

  1. Utworzenie wolumenu szyfrowanego z wcześniej przygotowanego obrazu

W zakładce Compute -> Images, z wcześniej przygotowanego obrazu wybieramy opcję Create Volume. W tym momencie musimy wybrać typ szyfrowany (np. LUKS_2000iops) w polu Type

pic3

  1. Utworzenie instancji ze startowym, zaszyfrowanym wolumenem

W zakładce Volumes -> Volumes wybieramy tak przygotowany wolumen, a następnie w opcjach tego wolumenu wybieramy opcję Launch as Instance

pic4

Następnie należy odczekać, aż instancja zostanie wykreowana i będzie w stanie Active/Running.

Uwagi i znane problemy związane z szyfrowaniem

Pomimo tego, iż zespół Atman Cloud dba o to, by usługa szyfrowania spełniała wszystkie wymagania klientów, znane są poniższe problemy i ograniczenia:

Tworzenie instancji z zaszyfrowanego wolumenu (punkt opisany powyżej), może zakończyć się tym, iż instancja przejdzie w stan ERROR i nie będzie można z niej korzystać. Aby temu zapobiec należy ponownie wykreować wolumen zaszyfrowany z obrazu i ponowić kreowanie instancji. Konwersja wolumenu niezaszyfrowanego do zaszyfrowanego wolumenu(punkt opisany poniżej, przez tzw. opcję retype) nie działa prawidłowo. Jest to spowodowane bug’iem w funkcjonalności: https://bugs.launchpad.net/nova/+bug/1925818 Z powodu ograniczenia w kooperacji pomiędzy usługą Barbican a Novą (a konkretniej LUKSem), nie ma możliwości podmiany klucza szyfrującego. Taki wolumen należy odszyfrować, sprawdzić czy działa i następnie zaszyfrować ponownie, a potem dołączyć do instancji. Konwersja wolumenu do zaszyfrowanego wolumenu z panelu Horizon(Uwaga: chwilowo funkcja niedostępna)

Niekiedy może pojawić się potrzeba przekonwertowania wolumenu, który do tej pory był niezaszyfrowany, na wolumen zaszyfrowany. Aby wykonać taką konwersję, muszą być spełnione poniższe warunki:

  • wolumen musi być w statusie Available

  • użytkownik musi posiadać rolę kreator, która umożliwia kreowanie zaszyfrowanych wolumenów

  • użytkownik posiada dostęp do zaszyfrowanego typu wolumenu (volume type: encrypted True)

  • tzw. root wolumen może być zaszyfrowany jedynie przez administratorów Atman Cloud - w wypadku takiej prośby należy się z tym zwrócić poprzez ServiceDesk

  1. Wybór odpowiedniego wolumenu do konwersji

Wybieramy odpowiedni wolumen w zakładce Volumes -> Volumes . Następnie w kolumnie Actions, wybieramy Change Volume Type

  1. Konwersja wolumenu

pic5

W nowo otwartym oknie (przykład powyżej) wybieramy odpowiedni typ (Type), adekwatny dla typu zaszyfrowanego. Następnie wybieramy odpowiednie Migration Policy „On Demand” i potwierdzamy przyciskiem Change Volume Type.

Gdy proces zmiany typu zostanie zakończony (operacja jest czasochłonna, może trwać nawet kilka godzin, jeżeli wolumen jest większy niż 1TB), możemy podmontować wolumen do instancji.

Pobranie oraz odczyt klucza szyfrującego wolumenu (CLI)

Istnieje możliwość uzyskania klucza i przekonwertowanie go do hasła (passphrase), które jest używane przez LUKS do szyfrowania naszego wolumenu. Zapisanie takiego hasła, w bezpiecznym miejscu, jest standardową procedurą bezpieczeństwa. Rekomendowane jest pobranie tego klucza i przechowywanie go w bezpiecznym, niezależnym od Atman Cloud środowisku, na wypadek tzw. Disaster Recovery. Poniższa procedura jest możliwa jedynie za pomocą CLI i wymaga posiadania openstack/barbican CLI napisanego za pomocą python w wersji trzeciej (jest to wersja odpowiadająca OpenStack w wersji Ussuri)

  1. Odczytanie interesującego nas secret href

barbican secret list

lub

openstack secret list

  1. Zapisanie klucza do pliku

barbican secret get --payload_content_type application/octet-stream <secret_href_z_poprzedniej_sekcji> --file my_secret_key.key

lub

openstack secret get --payload_content_type application/octet-stream http://controller.tc.eco.atman.pl:9311/v1/secrets/8aa87946-6bb0-4a71-a88f-8e1f5aeb7fc7 --file my_secret_key.key

  1. Przekonwertowanie klucza na hasło (passphrase)

hexdump -e '16/1 "%02x"' my_secret_key.key