2016-03-02 31 views
5

Chcemy uniknąć włączenia "yum update" w dockerfiile, ponieważ może ona generować inny kontener w oparciu o budowanie obrazów docker, ale oczywiście może to stwarzać pewne problemy z bezpieczeństwem, jeśli system podstawowy wymaga aktualizacji. Czy najlepszą opcją jest posiadanie obrazu systemu bazowego i jego aktualizacja? Problem polegałby na tym, że wymagałoby to przebudowy i wdrożenia wszystkich aplikacji w całej organizacji za każdym razem, gdy stosowana jest aktualizacja zabezpieczeń.Jak radzić sobie z aktualizacjami zabezpieczeń w kontenerach dokowania?

Alternatywą, która wydaje mi się nieco trudna, byłoby po prostu ignorowanie aktualizacji zabezpieczeń w kontenerze i martwienie się o nie tylko na hoście. Proces myślenia polega na tym, że atakujący może dostać się do kontenera, na komputerze hosta musi znajdować się luka w zabezpieczeniach, inna luka w zabezpieczeniach mechanizmu dokowania, aby dostać się do kontenera, a następnie dodatkowa luka umożliwiająca wykorzystanie czegoś w obrębie kontenera. pojemnik, który wydaje się niesamowicie nieprawdopodobną serią wydarzeń. Wraz z wprowadzeniem przestrzeni nazw użytkownika i profili seccomp wydaje się, że zmniejsza to ryzyko.

W każdym razie, w jaki sposób radzić sobie z aktualizacjami zabezpieczeń w kontenerach, przy minimalnym wpływie na rurociąg CI/CD, lub najlepiej, gdy nie trzeba ponownie rozmieszczać całej infrastruktury?

+1

powinieneś przeczytać https://jpetazzo.github.io/2015/05/27/docker-images-vulnerabilities/ – user2915097

+0

To fantastyczny zasób! Dzięki za artykuł – jaumann

+0

Współpracownik wysłał mi ten artykuł dziś rano, który również wydaje się zajmować tym konkretnym problemem, bez konieczności ponownego wdrażania całej infrastruktury: https://www.hastexo.com/blogs/florian/2016/02/ 21/containers-just-because-everyone-else/# VsmK2oUo_qD – jaumann

Odpowiedz

1

Można zmniejszyć niepowtarzalność kompilacji, wprowadzając pośrednią warstwę aktualizacji.

Tworzenie obrazu jak:

FROM centos:latest 
RUN yum update -y 

Budowanie wizerunku, oznacz ją i przesunąć go. Teraz twoje kompilacje się nie zmienią, chyba że zdecydujesz się je zmienić.

Możesz albo skierować inne pliki Docker do myimage:latest, aby uzyskać automatyczne aktualizacje, gdy zdecydujesz się to zrobić, albo wskażesz konkretną wersję.

Sposób, w jaki skonfigurowałem system CI, polega na tym, że udana (ręczna) kompilacja obrazu podstawowego z aktualizacjami wyzwala kompilację wszelkich obrazów, które zależą od tego.

Zgłoszenie problemu związanego z bezpieczeństwem? Sprawdź, czy zaktualizowany pakiet jest dostępny, lub wykonaj tymczasową poprawkę w pliku Dockerfile. Wywołaj kompilację. Po chwili będziesz mieć gotowe wersje wszystkich gotowych do wdrożenia aplikacji.

+0

Myślę, że to będzie sposób, w jaki ostatecznie pójdziemy. To nie jest idealne, ponieważ nadal wymaga pełnego ponownego wdrożenia przedsiębiorstwa, gdy coś jest załatane, ale to może być coś, z czym musimy żyć. – jaumann

1

Większość głównych dystrybucji często wydaje nowy obraz podstawowy, który zawiera najnowsze aktualizacje krytyczne i poprawki zabezpieczeń, jeśli to konieczne. Oznacza to, że możesz po prostu pobrać najnowszy obraz bazowy, aby uzyskać te poprawki i odbudować swój obraz.

Ale także dlatego, że twoje kontenery używają yum, możesz wykorzystać yum do kontrolowania, które pakiety aktualizujesz. Yum pozwala ustawić wersję wydania, dzięki czemu możesz przypiąć aktualizacje do określonej wersji systemu operacyjnego.

Na przykład, jeśli używasz RHEL 7.2, może mieć Dockerfile który wygląda mniej więcej tak:

FROM rhel:7.2 
RUN echo "7.2" > /etc/yum/vars/releasever 
RUN yum update -y && yum clean all 

To gwarantuje, że zostaniesz na RHEL 7.2 i tylko odbierać krytyczne aktualizacje pakietu, nawet gdy robisz pełną aktualizację yum.

Aby uzyskać więcej informacji o dostępnych zmiennych yum lub innych opcjach konfiguracji, po prostu spójrz na stronę podręcznika "yum.conf".

Ponadto, jeśli potrzebujesz drobniejszej kontroli nad aktualizacjami, możesz sprawdzić pakiet "yum-plugin-versionlock", ale jest to więcej niż prawdopodobne przekroczenie dla twoich potrzeb.