Hej,
od jakiegoś czasu zajmuje się dockerem i chciałbym się dowiedzieć czy tak właściwie jest on bezpieczny.
Chodzi mi tu głównie o wolumeny bo załóżmy że mam serwer który chciałbym udostępnić przez ldap zgodnie z wszystkim regułami które są w firmie.
Ale skoro zainstalowany jest docker to tak naprawdę nic mi to nie daje z wyjątkiem ograniczenia grupy użytkowników.
Np zwykły user nie ma dostępu do /etc/docker
ale właściwie wystarczy uruchomić byle jaki kontener z wolemenem np /etc/docker:/home/test
i juz mamy dostęp ( po wejściu do kontenera)
nawet lepiej możemy dać sobie pełny dostęp :/
Chodzi mi tu bardziej o wewnętrzne bezpieczeństwo czy jedynym rozwiązaniem na ten problem są serwery bez żadnych danych?
No ale przecież jak wejdziesz do kontenera, to /etc/docker będzie wskazywał na /home/test na hoście, a nie na /etc/docker na hoście, więc w czym problem?
No to jak dasz kontenerowi dostęp do /etc/docker, to czemu Cię dziwi, że on do tego będzie miał dostęp? Problem byłby, jakby kontener sam mógł sobie wziąć dostęp do /etc/docker, ale jeżeli Ty to musisz zrobić, to wszystko okej.
No jak dla mnie próbujesz rozwiązać zły problem. Dlaczego te 40 osób ma mieć możliwość zmapowania /etc/docker do kontenera? To nie jest problem w tym, że docker to może odczytać, problem jest w tym, że ktoś odpalił dockera z tym mapowaniem i to trzeba zablokować.
Kontener może sobie mieć dostęp do wszystkiego, ale to użytkownik musi ten kontener odpalić z odpowiednim mapowaniem, więc jeżeli użytkownik odpalający dockera ma roota, to raczej z tym trzeba walczyć, a nie z tym, że root może wszystko. Możesz odpalić kontener dockera bez uprawnień roota? Pytam, bo nie wiem, ja zawsze odpalałem kontenery z roota i nie wiem, czy da się bez.
Afish napisał(a):
Kontener może sobie mieć dostęp do wszystkiego, ale to użytkownik musi ten kontener odpalić z odpowiednim mapowaniem, więc jeżeli użytkownik odpalający dockera ma roota, to raczej z tym trzeba walczyć, a nie z tym, że root może wszystko. Możesz odpalić kontener dockera bez uprawnień roota? Pytam, bo nie wiem, ja zawsze odpalałem kontenery z roota i nie wiem, czy da się bez.
No przecież napisałem w pierwszym poście zwykły użytkownik zgodnie z polityką firmy (LDAP) czyli nie admin.
To jeszcze raz na czym polega problem
Powiedzmy że jestem zwykłym użytkownikiem i jest też administrator odpowiednio user
, admin
Scenariusz:
Na hoście jest zainstalowany docker
admin
i user
mogą używać dockera (clienta i servera)
user
nie ma dostępu do zasobów /etc/docker
admin
ma dostęp do /etc/docker
admin
jest przekonany że nikt nie ma dostępu do /etc/docker
i nie chce żeby ktoś miał tam dostęp bo tak i już
user
za pośrednictwem dockera może sobie zwiększyć uprawienia za pomocą wolumenów uruchamiając dowolny kontener z argumentem -v /etc/docker:/home/test
a następnie docker exec ...
i teraz kiedy jesteśmy w konsoli kontenera wchodzimy sobie do zasobu /home/test
i mamy full dostęp do hosta czyli /etc/docker
i w zasadzie możemy robić wszystko co nam się podoba
Czy takie coś jest bezpiecznie?
Bo np jak na hoście są jakieś istotne pliki to można je bez problemu sobie z nimi zrobić co się chce (oczywiście to się tyczy tylko pracowników).
No to nie, to nie jest bezpieczne. Jeżeli możesz odpalić dockera jako użytkownik, to po prostu ogranicz selinuksem dostęp do wybranych katalogów i po sprawie. https://serverfault.com/questions/806811/how-to-disallow-the-docker-daemon-to-mount-hosts-root-file-system-into-the-cont
Afish napisał(a):
No to nie, to nie jest bezpieczne. Jeżeli możesz odpalić dockera jako użytkownik, to po prostu ogranicz selinuksem dostęp do wybranych katalogów i po sprawie. https://serverfault.com/questions/806811/how-to-disallow-the-docker-daemon-to-mount-hosts-root-file-system-into-the-cont
Świetnie dokładnie o coś mi takiego chodziło. Dzięki!