Przepis na pyszne babeczki z budyniowym nadzieniem
Continue reading “Pastéis de nata”
Debugowanie kontenerów w kubernetesie – część 2
Po poprzedniej części zapraszam na kolejną, pokazującą jak poradzić sobie z ograniczeniami które wprowadza Kubernetes podczas debugowania aplikacji sieciowych.
Wykonanie pojedynczego polecenia/shelll
kubectl -n my_namespace exec -it pod -- /bin/some_command
Gdzie zwykle /bin/some_command można zastąpić /bin/bash
Kontener do debugowania
kubectl debug my_pod_name -n my_namespace -it --image=ubuntu:latest /bin/bash
Powyższe spowoduje uruchomienie nowego kontenera w tym samym podzie. Dzięki temu możemy połączyć się do localhost (127.0.0.1) i sprawdzić jak działają nasze serwisy za pomocą curl/wget. W trybie debug mamy też dostęp do roota, dzięki czemu hardening właściwej aplikacji nie jest aż tak straszny i nie ogranicza nas, np. w zainstalowaniu nowych paczek. Taki kontener nie współdzieli też systemu plików z oryginalnymi kontenerami z poda, dzięki temu nie namieszamy zbyt dużo.
Lepszy kontener do debugowania
kubectl debug my_pod_name -n my_namespace -it --image=ubuntu:latest --share-processes -c container_name --copy-to=mg-debug
Jest to trochę bardziej rozbudowana wersja poprzedniego polecenia. Odpalając taki kontener do debugowania możemy wybrać jeden z istniejących kontenerów i kubectl skopiuje jego konfiguracje (zamontowane volumes, sieć i przestrzeń procesów). Zabawa w takim środowisku daje już dość duże możliwości interakcji z innymi kontenerami. Można wysłać przyjacieski sygnał -KILL do procesów, pogrzebać w podmontowanych wolumenach lub sprawdzić sieć, również bez ograniczeń hardeningu.
Shell noda
Link dla zdesperowanych: https://github.com/kvaps/kubectl-node-shell. Skrypt potrafi uruchomić shell na nodzie kubernetesa. Dzięki niemu możemy dostać się jako root na dowolnego noda z klastra jako root i wprost pogrzebać w systemie. Chyba najbardziej “wszechmocna” opcja do zabawy w szukanie dziury w całym.
Miłego debugowania!
Co zrobić gdy nie mamy w kontenerze roota i trzeba debugować sieć
Często debugowanie kontenerów w kubernetesie wymaga przeanalizowania ruchu, jaki wchodzi lub wychodzi do systemu. Nie ma z tym problemu jeśli mamy dostęp do konta administratora u możemy uruchomić netstat lub tcpdump aby popatrzeć w pakiety. Co jeśli nie ma do tego dostępu?
Continue reading “Co zrobić gdy nie mamy w kontenerze roota i trzeba debugować sieć”
Debugowanie kontenerów w chmurze
Czasami coś nie działa i przyczyna tego za diabła nie chce dać się znaleźć. Poniżej kilka pomocnych rad w debugowaniu w środowisku chmury i kontenerów, czyli “u mnie działa, a na cudzym komputerze nie”
Nowy adres
Od dzisiaj można przeglądać bloga pod adresem nabozny.io. Stara domena (jak również maile, jeśli ktoś do mnie pisał na nią 🙂 ) przestanie być aktywna z końcem listopada.
Przepis na makowiec
Do zrobienia będą potrzebne:
- Puszka maku
- Około 500-600g mąki tortowej
- 150g stopionego masła
- 180ml mleka (+/- szklanka)
- 6 żółtek
- Saszetka suchych drożdży lub pół kostki świeżych (chyba 50g)
- 6 łyżek cukru
- Pół łyżeczki soli
- Papier do pieczenia jeśli chcemy zawinąć
Mieszamy po kolei: żółtka, cukier (na tym etapie można zrobić kogel mogel :), masło (jeszcze lepszy kogel mogel), drożdże, sól i letnie/lekko ciepłe mleko. Następnie dosypujemy mąkę tak, żeby ciasto przestało się lepić i dało się je jako tako rozłożyć na papierze. Jeśli potrzeba, mąki można dosypać nawet więcej niż 500-600g, byle tylko dało się to rozwałkować.
Można (ale nie trzeba) całość ostudzić w lodówce przez ok. pół godziny, aby było łatwiej rozwałkować. Następnie bierzemy kawałęk, ok 70cm papieru do pieczenia i rozwałkowujemy na nim ciasto w podłużny placek. Na taki placek wykładamy mak z puszki (połowę lub 1/3, w zależności na ile kawałków podzieliliśmy ciasto) i delikatnie, równomiernie rozsmarowywujemy. na koniec z pomocą drugiej osoby zwijamy: jedna osoba unosi jeden koniec papieru do pieczenia, a druga zaczyna zrolowywać ciasto z makiem. W ten sposób powstaje zawijane ciasto o przekroju: (@). Taką roladę należy luźno zawinąć w papier do pieczenia, aby się nie rozerwała podczas pieczenia – wystarczy zostawić luz na około dwa palce. W ten sposób z powyższego przepisu da się zrobić 2-3 rolady makowe. Na koniec zabezpieczamy papier, np. zszywkami i wkładamy na pół godziny do piekarnika na 180*C.
Druga, prostsza wersja polega na wyłożeniu połowy ciasta do szerokiej brytfanki, nałożeniu na to maku i położeniu drugiej warstwy rozwałkowanego ciasta na wierzch. Jest mniej roboty, ale nie można tym poszpanować przed rodziną. Pieczemy mniej więcej tyle samo.
Szyfrowany dysk sieciowy dla potrzeb serwerowych
Poniżej przedstawiam kilka sposobów na wykorzystanie przestrzeni dyskowej zdalnej maszyny w sposób zabezpieczający w pełni nasze dane. Założenie konfiguracji jest jedno – maszyna udostępniająca swój dysk nie może mieć wglądu w nasze dane, które przechowujemy ani w klucze, którymi dane są szyfrowane. Całość komunikacji ma być w pełni bezpieczna, a jedyny dostęp do danych ma być możliwy jedynie po ich odszyfrowaniu w locie, już na komputerze klienta.
Dzięki temu przejęcie docelowej maszyny nie będzie oznaczało od razu wycieku naszych danych. Ma to być zapewnione począwszy od dostępu do samego jej dysku, aż po grzebanie w RAM’ie, gdzie mogą być przechowywane klucze szyfrujące, gdyby szyfrowanie odbywało się po zdalnej stronie. Kolejnym wymogiem jest aby sposób przechowywania danych był możliwy w środowisku serwerowym, gdzie chcemy zautomatyzować cały proces montowania i dostępu do danych, a więc bez żadnych UI oraz webowych interfejsów.
Continue reading “Szyfrowany dysk sieciowy dla potrzeb serwerowych”
Sejf w sejfie vs. Sejf z kilkoma drzwiczkami – jak kontrolować dostęp za pomocą kryptografii
Czasami potrzeba zabezpieczenia dostępu do danych na różne sposoby, tak aby tylko powołane osoby mogły je odczytać. Standardowym, dość powszechnym sposobem jest zaprzęgnięcie do tego celu dedykowanego serwisu, który kontroluje co kto może zrobić (np. LDAP) i podpięcie do niego serwisu zarządzającego danym zasobem (np. dostęp do systemu). Zaletą takiego podejścia jest oczywiście skalowalność i kontrola nad tym co się dzieje, jednak takie podejście zwiększa ilość słabych punktów, które mogą zawieść. Po pierwsze outage dowolnego z nich powoduje niedostępność całej usługi. Po drugie, znalezienie podatności w dowolnym z nich może doprowadzić do nieautoryzowanego dostępu do danych.
Zamiast powyższego podejścia chciałbym pokazać jak można uzyskać podobną “funkcjonalność” dotyczącą dostępu do danych za pomocą kryptografii. Zamiast kontrolować dostęp aktywnie, przez dedykowany serwis, zaszyfrujemy nasze dane w odpowiedni sposób, za pomocą ogólnodostępnych funkcji.
Wakacje Tyrol vs. Beskid Sądecki
Porównanie pobytu tu i tam, z nastawieniem na to aby nie zbankrutować i mieć fajne wakacje.
Czemu mi srand nie działa
Czasami człowiek spędzi dwa tygodnie na durny błąd, którego testy ani wszelkie debugowanie w żaden sposób nie zweryfikują. O co poszło tym razem? Wcisnąłem parę dinemic i jego wrapper dla pythona do Flaska. Ot co, alternatywa dla ORM Django i SqlAlchemy, w dodatku nie trzeba się martwić o uprawnienia, wewnętrzne API i tak dalej…