Zarządzanie poświadczeniami bezpieczeństwa IAM dla wielu kontenerów dokerów

11

W zwykłym środowisku EC2 zarządzanie dostępem do innych zasobów AWS jest dość proste dzięki rolom i poświadczeniom IAM (automatycznie pobieranych z metadanych instancji). Jeszcze łatwiejsze dzięki CloudFormation, w którym możesz tworzyć role w locie po przypisaniu określonej roli aplikacji do instancji.

Jeśli chciałbym przeprowadzić migrację do Dockera i mieć coś w rodzaju wdrożenia typu M-do-N, na którym mam M komputerów i uruchomionych na nim N aplikacji, jak powinienem ograniczyć dostęp do zasobów AWS dla aplikacji? Metadane instancji są dostępne dla każdego na hoście, więc każda aplikacja będzie mogła zobaczyć / zmodyfikować dane każdej innej aplikacji w tym samym środowisku wdrażania.

Jakie są najlepsze praktyki dostarczania poświadczeń bezpieczeństwa do kontenerów aplikacji działających w takim środowisku?

Alex B.
źródło

Odpowiedzi:

5

Jest ten projekt: https://github.com/dump247/docker-ec2-metadata

Działa jako proxy do punktu końcowego metadanych instancji, zwracając rolę specyficzną dla kontenera. Nie korzystałem z niego wcześniej, ale wydaje się, że rozwiązuje opisany przypadek użycia.

cierpki
źródło
1

Stosowanie najmniejszych uprawnień przy użyciu ról i grup zabezpieczeń (nawet o których nie wspomniałeś) w AWS z EC2 to najlepsze praktyki zapewniające bezpieczne środowisko dla twoich aplikacji hostingowych, szczególnie podczas korzystania z CloudFormation. Jednak po nałożeniu na siebie środowiska Docker z wieloma dzierżawcami sytuacja zaczyna się rozpadać.

Najlepszą odpowiedzią, aby nadal czerpać korzyści z ról przy jednoczesnym stosowaniu najmniejszych uprawnień, jest niestosowanie podejścia obejmującego wiele dzierżawców. Zasadniczo używaj mapowania jeden na jeden między instancją EC2 a aplikacją, ale nadal możesz używać klastrów / ASG. Docker jest nadal niezwykle użytecznym i potężnym narzędziem, którego można używać do zarządzania i wdrażania aplikacji, ale na razie role mają zastosowanie w instancji EC2, a nie w kontenerze. Oznacza to na razie używanie oddzielnych maszyn wirtualnych dla każdej aplikacji.

Jeśli bycie wielodostępnym jest ważniejsze niż role, odpowiedzią jest nieużywanie ról i rozpowszechnianie poświadczeń AWS w aplikacjach przy użyciu innej metody.

Niestety żadne z tych rozwiązań nie jest bardzo pożądane i oczekuję, że AWS rozwiąże ten problem w przyszłości, głównie ze względu na rosnącą popularność kontenerów.

JaredHatfield
źródło