Jak dobrze skalowane są klucze autoryzowane?

11

Jeśli używam czegoś takiego jak gitolite do obsługi kontroli dostępu, jak dobrze skalowane są klucze autoryzowane? Oznacza to, że jeśli powiem 50 000 użytkowników, jaka będzie wydajność (domyślam się, że nie jest zbyt dobra). Jakie są alternatywy?

Aktualizacja: Postanowiłem zrobić kilka testów sam (co powinienem był zrobić w pierwszej kolejności). Napisałem prosty skrypt do generowania kluczy SSH i dodawania ich do pliku uprawnionych kluczy. Mój komputer nie jest tak szybki, więc wygenerowałem tylko 8 061 kluczy, a następnie dodałem własny na końcu, plik miał 3,1 MB. Następnie dodałem repozytorium git z jednym plikiem i trzy razy uruchomiłem klon git:

With 8,061 keys (Mine is at the end of the file)
real    0m0.442s
real    0m0.447s
real    0m0.458s

With just a single key:
real    0m0.248s
real    0m0.264s
real    0m0.255s

Wydajność jest znacznie lepsza, niż się spodziewałem. Nadal jestem bardzo zainteresowany alternatywami, które mogą być szybsze i bardziej wydajne dla dużej grupy kluczy od 50 000+.

Jeremy
źródło
Czekasz mieć 50000 simulatenious użytkowników na pojedynczym serwerze lub 50000 łączne użytkownikom sporadycznego dostępu?
Mxx,
Sporadyczny dostęp. Pytam o wydajność serwera SSH, który musi przeszukiwać plik kluczy autoryzowanych posiadający 50 000 kluczy przy każdym logowaniu.
Jeremy,
3
authorized_keysPlik z 50k kluczy wynosi jedynie około 25MB. Z pewnością będzie to całkowicie buforowane w buforach systemu plików. Wyobrażam sobie, że czas znalezienia klucza w pliku byłby krótszy niż czas rzeczywistego użycia tego klucza do uwierzytelnienia użytkownika.
cjc

Odpowiedzi:

7

Możesz zobaczyć efektywność GitHub pod względem szybkości. Tyle kluczy nie spowoduje znacznego wąskiego gardła.

Chociaż, jak udokumentowano na blogu z 2009 roku , zmienili sposób pobierania kluczy ssh z bazy danych. Wskazówka dotycząca kapelusza: @Jeremey

Ale utworzyłeś ponad 8 000 kluczy, możesz ponownie przetestować przy użyciu 50 000 kluczy.

Te klucze nie muszą być prawidłowymi kluczami, wystarczy napisać generator i napisać plik, a następnie dołączyć swój do końca.

vgoff
źródło
2
Zgodził się, że OP powinien po prostu przetestować plik 50K kluczy ze swoim sprzętem. Nie jestem pewien, czy GitHub jest świetnym przykładem: kto wie, co robią na backendie? Z tego co wiemy, mają dostosowany sshd, który przechowuje klucze autoryzowane w Redis.
cjc
Być może, ale głośno mówią o tym, nad czym pracują, a inne większe strony obsługujące publiczne repozytoria git za pomocą gitolabu nie wspomniały o tym. Oczywiście niewiele warte, ale nie widziałem o tym żadnej wzmianki.
vgoff
Gerrit szczyci się zoptymalizowanym wyszukiwaniem klucza ssh, stwierdzając, że powinien być szybszy niż Gitosis. Nie wiedziałem o projekcie Gerrit.
vgoff
1
Znalazłem artykuł o tym, jak działa github: github.com/blog/530-how-we-made-github-fast . Używają łatanego serwera SSHD, który pobiera klucze z serwera MySQL.
Jeremy,
2
spójrz na opcję AuthorizedKeysCommand na sshd_config
Lluís