Dans quelle mesure les touches_autorisées évoluent-elles?

11

Si j'utilise quelque chose comme gitolite pour gérer le contrôle d'accès, à quel point les touches authorisées évoluent-elles? Ce qui signifie si j'ai dit 50 000 utilisateurs à quoi ressemblerait la performance (je suppose que ce n'est pas très bon). Quelles sont les alternatives?

Mise à jour: j'ai décidé de faire quelques tests moi-même (ce que j'aurais dû faire en premier lieu). J'ai écrit un script simple pour générer des clés SSH et les ajouter à un fichier authorized_keys. Mon ordinateur n'est pas si rapide, donc je n'ai généré que 8 061 clés, puis j'ai ajouté les miennes à la fin, le fichier a fini par faire 3,1 Mo. J'ai ensuite ajouté un référentiel git avec un fichier et j'ai exécuté git clone trois fois:

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

Les performances sont bien meilleures que ce que je pensais. Je suis toujours très intéressé par des alternatives qui pourraient être plus rapides et plus efficaces pour un grand groupe de clés 50 000+.

Jeremy
la source
Vous attendez-vous à avoir 50000 utilisateurs simulés sur un seul serveur ou 50000 utilisateurs au total avec un accès sporadique?
Mxx
Accès sporadique. Je pose des questions sur les performances du serveur SSH devant rechercher un fichier authorized_keys contenant 50 000 clés à chaque connexion.
Jeremy
3
Un authorized_keysfichier avec des clés de 50 Ko ne fait que 25 Mo environ. Cela sera sûrement complètement mis en cache dans les tampons du système de fichiers. J'imagine que le temps pour trouver la clé dans le fichier serait éclipsé par le temps pour réellement utiliser cette clé pour authentifier l'utilisateur.
cjc

Réponses:

7

Vous pouvez réellement voir l'efficacité sur GitHub quant à la vitesse à laquelle cela est. Vous n'allez pas provoquer un goulot d'étranglement significatif avec autant de clés.

Bien que documenté dans leur blog de 2009 , ils ont changé la façon dont les clés ssh sont récupérées, à partir d'une base de données. Astuce chapeau: @Jeremey

Mais, vous avez créé plus de 8 000 clés, vous pouvez tester à nouveau avec 50 000 clés.

Ces clés n'ont pas besoin d'être des clés valides, écrivez simplement un générateur et écrivez le fichier, puis ajoutez le vôtre à la fin.

vgoff
la source
2
A convenu que l'OP devrait simplement tester un fichier de clés de 50K avec son matériel. Je ne sais pas si GitHub est un excellent exemple: qui sait ce qu'ils font sur le backend? Pour tout ce que nous savons, ils ont un sshd personnalisé qui stocke les authorized_keys dans Redis.
cjc
Peut-être, mais ils s'expriment assez bien sur ce sur quoi ils travaillent, et d'autres sites plus importants desservant des référentiels git publics utilisant gitolab ne l'ont pas mentionné. Cela ne vaut pas beaucoup de poids, bien sûr, mais je n'en ai vu aucune mention.
vgoff
Gerrit se vante d'une recherche de clé ssh optimisée, déclarant qu'elle devrait être plus rapide que Gitosis. Je ne connaissais pas le projet Gerrit.
vgoff
1
J'ai trouvé un article sur le fonctionnement de github: github.com/blog/530-how-we-made-github-fast . Ils utilisent un serveur SSHD patché qui obtient les clés d'un serveur MySQL.
Jeremy
2
jetez un œil à l'option AuthorizedKeysCommand sur sshd_config
Lluís