Bezpieczne przechowywanie poświadczeń AWS na komputerze osobistym

10

Jak mogę bezpiecznie przechowywać dane uwierzytelniające AWS na komputerach osobistych?

Szczegółowo:

Wszyscy w naszym zespole wymagają poświadczeń bezpieczeństwa AWS do wykonywania zadań administracyjnych (poświadczenia są rozdzielone według roli). Poświadczenia te są zwykle przechowywane w postaci zwykłego tekstu w niektórych plikach konfiguracyjnych na dysku. Myślę, że jest to bardzo niepewne, szczególnie biorąc pod uwagę, że poświadczenia są rozdzielane między członków zespołu, kończą się kopią zapasową itp.

Wolałbym przechowywać te poświadczenia w postaci zaszyfrowanej (na przykład podobnej do kluczy ssh). Czy istnieje jakiś zautomatyzowany sposób? Czy też muszę zhakować skrypt bash, który używa na przykład openssl do szyfrowania danych?

W Internecie znajduje się wiele informacji na temat zabezpieczania poświadczeń w instancji EC2. Istnieje nawet funkcja ról Amazon IAM , ale ma ona również zastosowanie tylko do EC2.

arnuschky
źródło
1
To świetne pytanie i jestem bardzo zainteresowany odpowiedziami.
ceejayoz

Odpowiedzi:

4

https://github.com/realestate-com-au/credulous może być warte zbadania. Z opisu projektu:

credulous to narzędzie wiersza polecenia, które bezpiecznie zarządza poświadczeniami AWS (IAM) . Celem jest zaszyfrowanie poświadczeń przy użyciu publicznego klucza SSH użytkownika, aby tylko użytkownik, który ma odpowiedni prywatny klucz SSH, mógł je zobaczyć i używać. Ponadto narzędzie umożliwi również użytkownikowi łatwe obracanie bieżących danych uwierzytelniających bez przerywania bieżącego przepływu pracy użytkownika.

Artykuł na blogu wprowadzającym znajduje się na stronie http://techblog.realestate.com.au/protecting-your-aws-keys-with-credulous/ .

mvermaes
źródło
Wspaniale, właśnie tego szukałem (i czego sam nie znalazłem ...)
arnuschky,
Zobacz także github.com/99designs/aws-vault
Yves M.
4

Świetne pytanie - w zależności od osoby udzielającej odpowiedzi prawdopodobnie będziesz mieć kilka dróg do przebycia. Dam ci przykład tego, z czego korzystamy:

  1. Twórz role IAM w oparciu o użytkownika (programistę, infrastrukturę, bezpieczeństwo, audyt itp.) - Dostosuj zasady, aby zezwalać lub odmawiać określonych działań w oparciu o dostęp użytkownika.

Przykład: zezwól na wszystkie działania ec2 dla administratora. Lub zezwalaj tylko na dostęp dla dewelopera na podstawie znacznika lub podsieci itp.

  1. Uruchom instancje ec2 Linux za pomocą określonych ról IAM. Uruchom instancję dla każdej określonej roli lub użytkownika (dostosuj rozmiar / typ instancji zgodnie z potrzebą, budżetem itp.)

  2. Skonfiguruj grupę zabezpieczeń dla każdej instancji, aby zezwalała tylko na określone podsieci lub pojedyncze adresy IP, dzięki czemu możesz zablokować wpływ ruchu do SSH.

  3. Ustaw niestandardowego użytkownika / hasło dla SSH lub dołącz do domeny.

  4. Każdemu logowaniu użytkownika lub SSH do instancji Linux należy przypisać ich rolę lub dostęp użytkownika.

  5. Klucze API i dostęp są teraz dziedziczone z samej roli IAM instancji, co powoduje, że potrzeba przechowywania kluczy użytkowników nie ma znaczenia. Pamiętaj tylko o zablokowaniu grupy zabezpieczeń, udzielaj dostępu tylko określonym użytkownikom w Linux-ie. Użytkownik powinien mieć możliwość pisania skryptów za pomocą AWS API / korzystania z funkcji narzędzi API w normalny sposób.

Używamy tej metody od około roku - z dodatkowymi poprawkami bezpieczeństwa, takimi jak czas dzierżawy dostępu, kupionym w AWS HSM i działa świetnie.

Mam nadzieję, że to pomoże tobie lub komuś innemu.

Scott Moore
źródło
Niezły pomysł, dzięki! Nie myślałem o tym. W tej chwili nie ma dla nas żadnej opcji ze względu na związane z tym koszty, ale będę o tym pamiętać.
arnuschky