¿Qué tan bien se escalan autorizado_claves?

11

Si estoy usando algo como gitolite para manejar el control de acceso, ¿qué tan bien se escalan autorizado_claves? Es decir, si tengo 50,000 usuarios, ¿cómo será el rendimiento (supongo que no es muy bueno). Cuales son las alternativas?

Actualización: decidí hacer algunas pruebas yo mismo (que debería haber hecho en primer lugar). Escribí un script simple para generar claves SSH y agregarlas a un archivo autorizado_keys. Mi computadora no es tan rápida, así que solo generé 8.061 claves y luego agregué la mía al final, el archivo terminó en 3.1MB. Luego agregué un repositorio git con un archivo y ejecuté git clone tres veces:

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

El rendimiento es mucho mejor de lo que pensé que sería. Todavía estoy muy interesado en cualquier alternativa que pueda ser más rápida y eficiente para un gran grupo de claves de más de 50,000.

Jeremy
fuente
¿Espera tener 50000 usuarios simultáneos en un solo servidor o 50000 usuarios totales con acceso esporádico?
Mxx
Acceso esporádico. Le pregunto sobre el rendimiento del servidor SSH al tener que buscar un archivo autorizado de claves con 50,000 claves en cada inicio de sesión.
Jeremy
3
Un authorized_keysarchivo con claves de 50k solo tiene alrededor de 25MB. Seguramente eso quedará completamente en caché en los búferes del sistema de archivos. Me imagino que el tiempo para encontrar la clave en el archivo se vería eclipsado por el momento de usar esa clave para autenticar al usuario.
cjc

Respuestas:

7

En realidad, puede ver la eficiencia en GitHub en cuanto a qué tan rápido es esto. No va a causar un cuello de botella significativo con tantas claves.

Aunque como se documenta en su blog de 2009 , han cambiado la forma en que se recuperan las claves ssh, desde una base de datos. Punta de sombrero: @Jeremey

Pero, si creó más de 8k claves, puede probar nuevamente con 50k claves.

Esas claves no necesitan ser claves válidas, solo escriba un generador y escriba el archivo y luego agregue el suyo hasta el final.

vgoff
fuente
2
Acordó que el OP debería probar un archivo de claves de 50K con su hardware. No estoy seguro de si GitHub es un gran ejemplo: ¿quién sabe lo que hacen en el backend? Por lo que sabemos, tienen un sshd personalizado que almacena las claves autorizadas en Redis.
cjc
Tal vez, pero son bastante expresivos sobre en qué están trabajando, y otros sitios más grandes que prestan servicios a repositorios públicos de git usando gitolab no lo han mencionado. No vale mucho peso, por supuesto, pero no he visto ninguna mención al respecto.
vgoff
Sin embargo, Gerrit se jacta de una búsqueda de clave ssh optimizada, afirmando que debería ser más rápido que la gitosis. No sabía sobre el proyecto Gerrit.
vgoff
1
Encontré un artículo sobre cómo funciona github : github.com/blog/530-how-we-made-github-fast . Usan un servidor SSHD parcheado que obtiene las claves de un servidor MySQL.
Jeremy
2
eche un vistazo a la opción AuthorizedKeysCommand en sshd_config
Lluís