Blog IT, Blog Marketing

Zarządzanie kluczami SSH

Zarządzanie kluczami SSH News!

Marcin Sarna , 01.10.2020 r.

Klucze są fajne, dopóki nie zmieni się pracownik

Każdy programista potrzebuje dostępu do niektórych serwerów, proste. Zwykle odbywa się to za pomocą klucza publicznego i prywatnego – każdy pracownik generuje własną parę kluczy publiczny-prywatny. Klucze publiczne każdego programisty są dodawane do pliku authorized_keys na każdym serwerze, do którego powinien mieć dostęp. Co się jednak dzieje, gdy dany deweloper odchodzi z firmy, bo np. znalazł lepszą ofertę pracy na TeamQuest?

W takim przypadku klucze publiczne tego programisty powinny zostać usunięte ze wszystkich serwerów. Ale o tym ktoś musi pamiętać i jest to naprawdę dużo pracy. Co więcej, jeśli zostanie to zrobione ręcznie, istnieje spore ryzyko, że klucz nadal spoczywa zapomniany na jakimś serwerze, więc dostęp do niego pozostaje otwarty.

Alternatywne rozwiązania

Istnieje kilka tak komercyjnych jak i otwartych rozwiązań, które chcą pomóc w rozwiązaniu tego problemu. Podstawową ideą jest to, że w takim programie dodajesz i utrzymujesz klucze i listy dostępu a kiedy usuniesz klucz, program usuwa go ze wszystkich Twoich serwerów. Ale jeśli ktoś uzyska dostęp do tej usługi, może uzyskać dostęp do wszystkich serwerów. A co jeśli utracisz dostęp? W najgorszym przypadku utracisz również dostęp do wszystkich serwerów.

Rozwiązanie: podpisywanie kluczy

Ogólny pomysł jest taki: nadal generujesz parę kluczy publiczny-prywatny dla każdego programisty. Jednak nie przesyłasz kluczy publicznych na swoje serwery. Zamiast tego podpisujesz klucze publiczne generowanym wcześniej tak zwanym kluczem urzędu certyfikacji (CA). To podpisanie po prostu generuje trzeci plik certyfikatu, który zwracasz danemu programiście (czy innemu użytkownikowi serwera) a ten umieszcza go w swoim folderze .ssh.

Na serwerach z kolei wystarczy podać serwerowi klucz publiczny swojego CA, a serwer może wykryć, czy użytkownik ma prawidłowo podpisany certyfikat i zezwalać na dostęp tylko programistom, którzy mają taki podpisany certyfikat. Podpisując certyfikat, możesz określić, jak długo to podpisanie jest ważne. Jeśli więc podpiszesz go z okresem ważności 3 miesiące i deweloper opuści firmę, to nawet jeżeli nikt z tym nic nie zrobi to najdalej po 3 miesiącach na pewno nie będzie miał dostępu do żadnego z serwerów. No tak, ale podpisywać certyfikaty na nowo co 3 miesiące?

Ułatwianie sobie życie, o to zawsze chodzi

Jedną z możliwości jest zautomatyzowanie procesu, na przykład poprzez zbudowanie usługi, w której użytkownik może automatycznie uzyskać podpisany certyfikat, gdy autoryzuje się przy użyciu firmowego adresu e-mail i hasła.

Prostszą alternatywą jest to, że wydajesz certyfikaty, które są dłużej ważne, a jeśli ktoś odejdzie z firmy, możesz cofnąć certyfikat, czyli go unieważnić. Możesz umieścić listę nieważnych certyfikatów na swoich serwerach i nie będą one już akceptować użytkownika. Można to zrobić na przykład z wykorzystaniem cronjob na każdym serwerze, który dzięki temu będzie regularnie pobierał taką black… oj… - denylistę.

Zalety

Takie rozwiązanie to możliwość zarządzania dostępem do swoich serwerów przez SSH w oparciu o role. Wystarczy tylko raz skonfigurować serwery (tj. jakie „role” mają do nich dostęp, np. konkretne grupy deweloperów). Dla każdego nowego dewelopera wystarczy wygenerować podpisany certyfikat, a on natychmiast uzyska dostęp do wszystkich odpowiednich maszyn pasujących do jego roli. A kiedy odchodzi z firmy, można w prosty sposób i natychmiastowo odebrać mu dostęp.

Nawet jeśli zdarzy się niefortunny wypadek (tj. przypadek sklerozy) i programista opuści program bez odebrania mu dostępu, jego certyfikat wygaśnie po pewnym czasie, więc automatycznie utraci dostęp.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej