Wie gut skaliert authorized_keys?

11

Wenn ich etwas wie Gitolite verwende, um die Zugriffskontrolle zu handhaben, wie gut skalieren autorisierte_Tasten? Das heißt, wenn ich 50.000 Benutzer gesagt habe, wie wird die Leistung sein (ich schätze nicht sehr gut). Was sind die Alternativen?

Update: Ich habe beschlossen, selbst einige Tests durchzuführen (was ich eigentlich hätte tun sollen). Ich habe ein einfaches Skript geschrieben, um SSH-Schlüssel zu generieren und sie einer Datei "authorized_keys" hinzuzufügen. Mein Computer ist nicht so schnell, also habe ich nur 8.061 Schlüssel generiert und am Ende meine eigenen hinzugefügt. Die Datei war schließlich 3,1 MB groß. Ich habe dann ein Git-Repository mit einer Datei hinzugefügt und den Git-Klon dreimal ausgeführt:

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

Die Leistung ist viel besser als ich dachte. Ich bin immer noch sehr an Alternativen interessiert, die für eine große Gruppe von Schlüsseln über 50.000 schneller und effizienter sind.

Jeremy
quelle
Erwarten Sie 50000 haben simulatenious Benutzer auf einen einzelnen Server oder 50000 Gesamt Benutzer mit sporadischem Zugang?
Mxx
Sporadischer Zugang. Ich frage nach der Leistung des SSH-Servers, der bei jedem Login eine Datei "authorized_keys" mit 50.000 Schlüsseln durchsuchen muss.
Jeremy
3
Eine authorized_keysDatei mit 50.000 Schlüsseln ist nur etwa 25 MB groß. Sicherlich wird das vollständig in Dateisystempuffern zwischengespeichert. Ich würde mir vorstellen, dass die Zeit, um den Schlüssel in der Datei zu finden, durch die Zeit, in der dieser Schlüssel tatsächlich zur Authentifizierung des Benutzers verwendet wird, in den Schatten gestellt wird.
CJC

Antworten:

7

Sie können tatsächlich die Effizienz auf GitHub sehen, wie schnell dies ist. Sie werden mit so vielen Schlüsseln keinen signifikanten Engpass verursachen.

Obwohl in ihrem Blog von 2009 dokumentiert , haben sie geändert, wie SSH-Schlüssel aus einer Datenbank abgerufen werden. Hut Tipp: @Jeremey

Wenn Sie jedoch über 8.000 Schlüssel erstellt haben, können Sie diese erneut mit 50.000 Schlüsseln testen.

Diese Schlüssel müssen keine gültigen Schlüssel sein. Schreiben Sie einfach einen Generator, schreiben Sie die Datei und hängen Sie Ihre an das Ende an.

vgoff
quelle
2
Einverstanden, dass das OP nur eine 50K-Schlüsseldatei mit seiner Hardware testen sollte. Ich bin mir nicht sicher, ob GitHub ein gutes Beispiel ist: Wer weiß, was sie im Backend tun? Nach allem, was wir wissen, haben sie eine angepasste SSHD, die die autorisierten Schlüssel in Redis speichert.
CJC
Vielleicht, aber sie sind ziemlich lautstark in Bezug auf das, woran sie arbeiten, und andere größere Websites, die öffentliche Git-Repositories mit Gitolab bedienen, haben dies nicht erwähnt. Natürlich nicht viel Gewicht wert, aber ich habe keine Erwähnung davon gesehen.
VGoff
Gerrit bietet jedoch eine optimierte Suche nach SSH-Schlüsseln, die besagt, dass sie schneller als Gitosis sein sollte. Ich wusste nichts über das Gerrit-Projekt.
VGoff
1
Ich habe einen Artikel darüber gefunden, wie Github funktioniert: github.com/blog/530-how-we-made-github-fast . Sie verwenden einen gepatchten SSHD-Server, der die Schlüssel von einem MySQL-Server erhält.
Jeremy
2
Werfen Sie einen Blick auf die Option AuthorizedKeysCommand auf sshd_config
Lluís