SQcrypto.sh
Kryptování vrstev není pro použití skriptu crypto životně důležité, protože umí použít i plain sqimage. Ale je žádoucí pokud vrstva obsahuje data, která by šlo zneužít. U Full-Disklessu jsou všechna data na NFS serveru, v adresářích, které se sdílejí jen read-only a read-write přístup je vyhrazen jen konkrétním strojům. Ale autonomní Half-Diskless má snapshoty vrstev uložené jako soubory, takže se k nim může někdo nepovolaný dostat, pokud přehodí disk někam, kde bude mít přístup na uživatele root.
Nekryptované plain sqimage, může rozbalit a vytáhnout např. generický privátní ssh klíč, který se používá po úspěšném ověření uživatele k založení neexistujícího domovského adresáře. Ten mu sice bude k ničemu, ale nelze vyloučit, že se v nějaké jiné vrstvě vyskytnou soubory, které by volně dostupné být neměly. Proto se tyhle soubory kryptují.
Pro vytvoření kryptované verze vrstvy se používá stroj lab-burget – virtuální Half-Diskless, který má k dispozici virtuální blokové zařízení sdílené přes NFS a v konfiguraci vrstvu, ve které je skript SQcrypto.sh
a soubory potřebné pro sestavení dynamické verze ramdisku.
Skript SQcrypto.sh , je stejně jako SQimage.sh použitelný jen pod uživatelem root, který má povolen vzdálený přístup (ověřovaný ssh klíčem) na server, kde je HTTP úložiště.
|
- Nejprve se spustí stroj lab-burget v Half-Diskless konfiguraci, do které se přidá mezi použité vrstvy nový plain sqimage vytvořený na straně serveru skriptem
SQimage.sh
. - Během spuštění se stáhne na lokální blokové zařízení, do subvolume, které si
SQcrypto.sh
namountuje na adresář/local
- Během akce crypt udělá kopii stažené plain sqimage, kterou zakryptuje a použije při tom dekapitovanou hlavičku, kterou vytvoří v adresáři
/tmp
. Dekapitovanou hlavičku lze zabalit do archivu chráněného heslem rovnou během fáze crypt, pokud se zadá heslo jiné, než řetězecdefault
činone
- Pokud se použije
none
, zůstane hlavička rozbalená. A pokud se použijedefault
, použije skript jako heslo kontrolní součet zakryptovaného souboru. - Hotové soubory se odesílají přes SSH do úložiště na stroji k333-lab, kde zapíše další položka do souboru
changelog
při akci send. Použití kryptované verze vrstvy už je záležitostí konfigurace.
Při akci send se odešle vždy hlavička kontejneru i kryptovaný obsah, bez ohledu na to jestli se zadá jako parametr cesta k dekapitované hlavičce, nebo zakryptovanému blobu. |
Popis
SQcrypto.sh
je nástroj k zakryptování squashovaných snapshotů vrstev (plain sqimage), vytvořených přes SQimage.sh
. Stejně jako ramdiskový skript crypto, který sestavuje sendviče, i on pracuje se souborem changelog
, publikovaným přes HTTP.
Výsledkem zakryptování sqimage je kryptovaný blob s dekapitovanou hlavičkou, a dva hlavičkové soubory. Ty se odstraní, až po úspěšném exportu do úložiště.
Zápis do souboru changelog po úspěšném odeslání souborů
Když crypto během zavádění zjistí, že jde o kryptovaný soubor, pokusí se získat jeho dekapitovanou, zaheslovanou hlavičku. A při tom kontroluje changelog
, který může obsahovat záznam, že jde o aktualizovanou vrstvu. V takovém případě, pokud najde soubor <old>
v úložišti, ví co může odstranit.
SQimage.sh vkládá takový záznam při aktualizaci vrstvy, po vygenerování nového snapshotu. A SQcrypto.sh po odeslání souborů do úložiště sdíleného přes HTTP.
; C <new> <old>
- <new>
- je MD5 kontrolní součet stahovaného souboru
- <old>
- je název (MD5 kontrolní součet) nahrazovaného souboru
V konfiguraci stroje máme následující řádek:
setlayer c32af4db4aaea650590ba379a3385424 Pro skript crypto je to signál, že má zkontrolovat lokální úložiště, jestli obsahuje soubor setlayer c32af4db4aaea650590ba379a3385424:9e43748722e47242db40d03cf5a8f881 Řetězec za dvojtečkou je MD5 součet původní plain sqimage vrstvy a dekapitovaná hlavička kontejneru se během kryptování pojmenuje podle něj.
Teprve při odeslání do HTTP úložiště SQcrypto.sh hlavičku přejmenuje a do souboru ; C c32af4db4aaea650590ba379a3385424 9e43748722e47242db40d03cf5a8f881 Tenhle záznam je primárně určen pro aktualizaci, protože během zavádění z něm crypto zjistí, který soubor z lokálního úložiště může odstranit.
A pokud bude soubor kryptovaný a soubor Pointa je v tom, že konfigurace přes 'setlayer' umožňuje použít hlavičku pojmenovanou podle jiné, nekryptované či již nepoužívané starší vrstvy. |