24 votos

Por qué no permitir que los desarrolladores de cerca de la root de las contraseñas?

Me acaba de venir a través de Algo que se está quemando en la sala del servidor; ¿cómo puedo identificar rápidamente qué es?. En los comentarios me encontré con la siguiente cita:

you don't let a developer anywhere near your root passwords

Como desarrollador, pero también alguien muy interesado en sysadmin cosas, me pregunto si hay algo de esta frase más que el estándar para todo el mundo, es decir, no regalar las contraseñas? El comentarista dice esto como si es bastante común que los conocimientos en la administración de la comunidad. Es?

29voto

Mathias R. Jessen Puntos 16911

Dado que la responsabilidad del funcionamiento de un sistema de producción generalmente se refiere a un Sysadmin, sólo un Sysadmin debe tener pleno acceso administrativo al sistema - es tan simple como eso.

Ahora, usted podría decir "Bueno, a veces hacemos cambios de código que requieren un sistema de reconfiguración, no deberíamos tener acceso a reconfigurar los sistemas en consecuencia?"

NO

Si el código cambios requieren la reconfiguracion del sistema, usted debe ser capaz de explicar a un sysadmin ¿qué requisitos tiene. De esa manera, el administrador puede revisar sus requisitos de cambio y detener el cambio si podría tener implicaciones operativas que - como desarrollador - no podría haber previsto.


En respuesta a @NathanLong, me doy cuenta de que en las empresas más pequeñas a veces es el caso. En estas situaciones, donde los administradores y los desarrolladores son los mismos usuarios, una alternativa es dividir el sistema de propiedad entre varias personas, y asegúrese de que nadie - y me refiero a que nadie - empuja a sus propios cambios de configuración. Tiene otro dev revisar los cambios, dejar que un tercero lleve a cabo la reconfiguración.

Cuando la duda se produce, empezar con el cambio de la planificación y revisión - otra cosa sería constituyen horrible gestión del cambio

16voto

Zoredache Puntos 84524

Yo no estoy diciendo que los administradores de sistemas son perfectos, pero hay un gran número de ejemplos de los desarrolladores que no debería ser desarrolladores. Digamos que se le permita tener acceso a la root de los sistemas con datos de misión crítica.

Pero, en cualquier caso, es sobre todo acerca de tomar responsabilidad por los cambios realizados. Para muchos administradores de sistemas parece que los desarrolladores se vayan a hacer las cosas en los servidores, y luego no tomar responsabilidad por lo que han hecho. Los desarrolladores a menudo sólo se centra en conseguir que el único programa/tarea en la que están trabajando se va, y no se toman el tiempo para pensar acerca de la imagen en tamaño grande o del estado a largo plazo del sistema que se están tocando. No han aprendido los hábitos acerca de cómo realizar cambios de forma segura.

Estos no son ciertas para todos los desarrolladores, sin duda, hay algunos grandes desarrolladores que pueden mantener los sistemas de bien. Sólo que a menudo parece como estos son los verdaderos 95% del tiempo.

Hábitos como:

  • No hacer cambios a un sistema sin pruebas en dev sistemas de primer
  • No hacer cambios que no entiende (a ciegas buscando en Google, y haciendo cosas que no entiendo)
  • No hacer cambios sin verificar que saber que las copias de seguridad son los sistemas de trabajo, y cómo deshacer cualquier cosa que hagas.
  • No hacer cambios que harán que el sistema sea más difícil de mantener en el largo plazo. (es decir, no añaden ninguna deuda técnica)
  • No comprometer la seguridad del sistema
  • No cambiar el sistema de una manera que va a aumentar el potencial riesgo regulatorio (ver PCI-DSS, HIPAA, la ley de FERPA, etc)

12voto

Deruijter Puntos 221

Voy a intentar explicar con una metáfora (soy desarrollador, en ocasiones haciendo sysadmin cosas btw.)

Pintor y decorador de Interiores

Digamos que el desarrollador es un pintor, y se crea una gran cantidad de fantásticas pinturas. Ok, tal vez no son fantásticas, pero él hizo lo que su jefe le pidió que hiciera. Él es bueno en eso, así que todos los cuadros salen bien.

Ahora las pinturas deben ser colocados dentro de los respectivos edificios. El pintor sabe todo acerca de la pintura, pero no tiene idea de como la manera correcta de montar algo en una pared. Si el pintor decide intentarlo de todos modos (porque puede), el decorador de interiores (sysadmin), podría venir en un par de semanas más tarde y responder así: "Lo que el f. sucedió aquí..?" "Todo está torcida, esto.. esto tenía que ir en el techo! Cómo diablos es este conectado a la wa.. ES QUE la COLA!?"

Huelga decir que, el decorador de interiores podría haber hecho un mejor trabajo. Él sabía dónde poner qué, y cómo montarlo. Él fue consistente en el uso de los mismos tornillos y ocasionales de los cables. Él lo había hecho mil veces antes, y podría, más o menos, hacerlo con los ojos cerrados.

Larga historia corta: El sysadmin sabe cómo manejar su aparejo mejor que el desarrollador (al menos debería). Él va a mantener su sistema limpio y organizado y saber cómo toda la cosa funciona. Además, una gran cantidad de desarrolladores que están acostumbrados a hacer sysadmin cosas (en casa, por ejemplo), y van a tratar de hacerlo ellos mismos, si ellos pueden, porque les ahorra tiempo.

Por supuesto que hay situación donde una persona hace las dos cosas, pero lo más probable es ser relativamente simple ambientes o lugares donde el manager no pudo ver que él realmente necesita de dos personas.

8voto

HopelessN00b Puntos 38607

Yo aconsejo a girar a su alrededor y ponerse en la posición como la otra parte.

Así que, en ese sentido:

Por qué no los administradores tienen acceso completo a modificar el código fuente?

El largo y corto de él, para mí, es que los desarrolladores no deberían tener acceso root porque no necesariamente saben lo que están haciendo desde la perspectiva de los sistemas de administración, y no (o no) necesite, de manera que la concesión de la root es esencialmente lo que aumenta el riesgo de causar problemas, sin ningún beneficio. La administración de los sistemas es alguien del trabajo.

Como administradores de sistemas no debería estar haciendo cambios en el código, por las mismas razones.

4voto

Mark Fowler Puntos 141

Este consejo se siente un poco anticuado, Que viene de una época donde el travieso desarrolladores que había una contraseña de root entrar y hacer cambios en el sistema en vivo.

En estos días nadie se debe de hacer cambios a un sistema vivo, ni el desarrollador ni sysadmin. Hacer cambios en un servidor es el trabajo de un sistema, tales como Chef o de Puppet. Nuestra industria se trasladó más allá del concepto de la singular servidor que puede ser configurado años. Ahora necesitamos la capacidad de tener muchos configurados de forma idéntica servidores desplegados a la vez, o al menos la capacidad para reconstruir de manera fiable cualquier singulares servidor en cualquier momento. Esto descarta los cambios hechos a un servidor por alguien con una contraseña de root no importa lo que hat que tienen en.

Así que, volviendo a la pregunta: Si los desarrolladores tienen la contraseña de root? Sí! Deben los administradores de sistemas tienen la contraseña de root? Sí! Por qué? Debido a que los sistemas complejos no pueden ser diagnosticados sin smart generalistas que entienden ellos de extremo a extremo - o, al menos, un equipo compuesto de los desarrolladores, así como los administradores de sistemas. Y a parte de que el diagnóstico no puede hacerse sin necesidad de iniciar sesión en el servidor y tener el derecho de inspeccionar lo que está pasando (por ejemplo, un desarrollador puede ser que necesite para ejecutar strace o dtrace para entender lo que el webserver realidad se está tomando todo el tiempo.) Sólo recuerda - mira, no me toque!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: