¿Bloquear una máquina de desarrolladores requiere más esfuerzo de lo que vale? [cerrado]

19

Después de haber trabajado como desarrollador y en administración / soporte de TI para un equipo de desarrollo, me he encontrado con muchos tipos diferentes de entornos, desde el completamente bloqueado hasta el completamente no. En mi experiencia de soporte limitado, creo que ha sido menos esfuerzo apoyar con una máquina menos bloqueada y ciertamente sentí que esto era más fácil, pero por supuesto esto podría ser parcial. Me gustaría saber cuál es la vista desde una perspectiva de soporte de TI, ¿es realmente más difícil apoyar a los desarrolladores que no tienen máquinas bloqueadas?

Sangha Preet
fuente
10
Dado el gran segmento de programadores de la población de Fallas del servidor de Stack Overflow, apuesto a que esto adolece de sesgo de selección. ¿Qué desarrollador realmente va a decir: "¡Ciérrenme, por favor!"
romandas

Respuestas:

11

El mayor problema con no bloquear una máquina de desarrolladores es que cualquier software que desarrollen requerirá privilegios de administrador completos para ejecutarse. El acceso de los desarrolladores debe ser el mismo que el entorno en el que deberán ejecutarse. Si necesitan ser "autosuficientes" o "autoinstalables", entonces deles otra cuenta de administrador, por ejemplo, Bruce.admin, que deben usar al hacer la administración. cosas, pero no se usan día a día.

Al igual que ningún administrador de UNIX decente que valga la pena usará una cuenta raíz para su trabajo diario no administrativo.

Bruce McLeod
fuente
14
Me ofende "requerirá". Lo estás haciendo sonar como una conclusión inevitable de que los desarrolladores naturalmente harán lo incorrecto. Si bien estoy de acuerdo en que el desarrollo de software que solo se ejecuta con privilegios innecesariamente altos es menos que deseable, no creo que TI deba tratar de imponer prácticas de desarrollo particulares con medidas severas como el bloqueo de la máquina. Si TI es una parte interesada en el proceso para definir los requisitos de la aplicación, y debería ser para aplicaciones internas, entonces haga que sea un requisito que las aplicaciones se desarrollen y prueben para ejecutarse con privilegios más bajos.
Chris W. Rea
Pero sí creo que la idea de una cuenta separada tiene mérito. Pero no me lo fuerces, eso es todo.
Chris W. Rea
44
En Windows es mejor hacer esto al revés. Haga cuentas de prueba que se comporten con los permisos de un usuario estándar. Las aplicaciones se pueden probar iniciando sesión en la máquina (o una VM) como la cuenta de usuario de prueba.
ConcernedOfTunbridgeWells
3
He formado la opinión "requerirá" basada en mis 15 años de experiencia en pruebas técnicas. Claro que hay excepciones, pero la mayoría de las aplicaciones en Windows no están diseñadas para el menor privilegio, y eso no se debe a que los desarrolladores naturalmente hagan lo incorrecto, es porque es realmente difícil hacer lo correcto.
Bruce McLeod
1
Después de haber utilizado varios miles de aplicaciones diferentes, solo el 5% de ellas necesitaban derechos de administrador sin ninguna razón real.
Mircea Chirea
55

La mayoría de los desarrolladores son técnicamente inteligentes y saben lo que están haciendo. A menudo necesitan instalar muchas aplicaciones especializadas, tener que obtener permiso para hacer esto y lograr que la TI baje y se agregue puede ser muy frustrante, particularmente en compañías más grandes, para ambas partes.

He descubierto que lo que funciona mejor es permitirles hacer lo que quieran con respecto a la instalación de software en sus máquinas, pero si tienen problemas con algo que no admitimos, entonces están solos. La mayoría de los desarrolladores están contentos con esto, y prefieren poder cuidar su propia máquina de todos modos.

Está bien bloquear a alguien en la contabilidad para usar solo IE y abrir la palabra, pero si eres un desarrollador que necesita instalar 4 tipos diferentes de navegador y necesita instalar rápidamente una aplicación para resolver un problema, puede ser molesto.

Mi experiencia es que las empresas que tienen muchos conocimientos técnicos, por lo que las tiendas de desarrollo, los proveedores de TI, etc., que confían en sus empleados y les permiten decidir qué quieren instalar, son mucho más felices y molestan menos a TI

Sam Cogan
fuente
10
Si pudiera votar por esta respuesta varias veces, lo haría. Soy desarrollador y estoy de acuerdo con el 110%. +1
Chris W. Rea
1
@ cwrea: ¿Cuál podría ser el 10% de exceso?
setzamora
3
Estoy de acuerdo, pero las empresas que son muy estrictos en cuanto a la seguridad de la información, nunca permitirá que las aplicaciones sean instalados que no son "normas de la empresa"
setzamora
Después de que me hayan quitado mis derechos de administrador, me encuentro enviando un correo electrónico a Soporte cada media hora para obtener esto o aquello, o cambiar esta configuración, o esa configuración. Un tema común para verificar las fechas de implementación fue hacer doble clic en la hora en el Área de notificación. Algo para lo que ahora "no tengo el nivel de privilegio adecuado" ... ¡Me está volviendo loco!
1
Si bien decir que 'si lo desinstalas no es compatible' está muy bien, prácticamente se convierte en un desarrollador que se queja a su jefe de que el software xyz no funciona y Systems / helpdesk no me ayudará. El jefe es derribado por su compañero, y lo siguiente que sabes es que un Gerente / Director / VP está respirando el cuello de alguien sin preocuparse de que no sea compatible, solo arréglalo ahora. Ahora Systems / Helpdesk debe admitir el programa aleatorio xyz para el desarrollador a y el programa aleatorio abc para el desarrollador b. Si realmente lo necesita, póngalo a través de los canales.
Zypher
14

Vea esta publicación de Stackoverflow para un debate animado sobre los méritos de bloquear las máquinas de desarrollo. (Descargo de responsabilidad: escribí la respuesta aceptada).

Desde la perspectiva del administrador de sistemas, el acceso a los sistemas de producción es sensible y debe restringir dicho acceso a las personas que lo necesitan para hacer su trabajo (esto puede incluir desarrolladores que tienen responsabilidades de soporte de nivel 3 para la aplicación). Los derechos de administrador local sobre una PC de desarrollo o un servidor de desarrollo no comprometen significativamente la seguridad de sus sistemas de producción.

Haga una imagen que pueda usar para reconstruir las máquinas si es necesario. La instalación manual de la edición de desarrollo de SQL Server, Visual Studio, Cygwin y MikTex, además de muchas otras aplicaciones, lleva bastante tiempo. Una imagen con estas grandes aplicaciones instaladas será razonablemente valiosa si tiene que volver a crear imágenes de las máquinas.

Desde una perspectiva de desarrollo, encuentro que puedo solucionar la mayoría de los problemas con la máquina y, por lo general, solo necesito ayuda del personal de soporte de la red en raras ocasiones. Los entornos demasiado restrictivos tienden a generar tráfico de soporte de desarrollo espurio para hacer un trabajo que los desarrolladores son perfectamente capaces de hacer ellos mismos.

Otro lugar donde los desarrolladores tienden a necesitar mucho trabajo administrativo es en servidores de bases de datos que alojan entornos de desarrollo. La mayoría de los desarrolladores son capaces de aprender tareas rutinarias de DBA fácilmente, y de todos modos deben obtener un conocimiento práctico de esto (en mi humilde opinión, en principio). Las políticas de acceso de administrador demasiado restrictivas en los servidores de desarrollo se pueden poner de pie de muchas maneras.

Una red de desarrollo temporal es una buena idea si se puede arreglar; puede hacer un firewall desde sus servidores de producción si es necesario.

  • Cuando los desarrolladores pueden replicar fácilmente la estructura de un entorno de producción, promueve una cultura de pruebas de implementación donde se puede sintetizar una prueba de integración sin saltar a través de los aros. Esto tenderá a mejorar la calidad del lanzamiento y despliegue de producción.

  • Ser capaz de emular un entorno de producción también crea conciencia sobre la implementación de producción y los problemas de soporte. Alienta al personal de desarrollo a pensar en cómo una aplicación podría ser compatible con la producción, lo que probablemente fomentará las arquitecturas construidas con esto en mente.

  • Si esta red tiene un controlador de dominio, puede establecer una relación de confianza para que confíe en su controlador de dominio principal y sus cuentas. Esta relación de confianza no tiene que ser recíproca, por lo que no compromete la seguridad de su infraestructura de red de producción. Esto puede permitirle tener una red de desarrollo no confiable, pero aún así permitir a los desarrolladores acceder a recursos autenticados por dominio, como cuentas de Exchange o servidores de archivos.

  • Desea que los desarrolladores tengan un alcance razonable para la experimentación sin tener que saltar a través de los aros. Colocar obstáculos políticos en el camino de este trabajo tiene una tendencia a alentar soluciones de yeso adhesivo que son políticamente convenientes pero que generan una deuda técnica a largo plazo (y a menudo no reconocida). Como administrador de sistemas o analista de soporte, adivina quién puede recoger las piezas ...

Agregaré que este es un problema mucho menor en un entorno unix o linux; los usuarios pueden personalizar bastante su propio entorno desde el suyo .profile. Puede compilar e instalar cosas bajo su propio /home/bloggsj/bindirectorio para deleite de su corazón. Los 'derechos de administrador local' son principalmente un problema de Windows, aunque todavía hay algunas cosas que necesitan acceso root en Unix.

Preocupado por TunbridgeWells
fuente
Quería comentar tu última viñeta. Usted menciona "obstáculos políticos". Tenga en cuenta que la intención original de las prácticas de seguridad es cualquier cosa menos política. Más tarde puede transformarse en otra cosa porque todas las organizaciones eventualmente adquieren personas que siguen la carta pero no la intención de la regla, o peor aún, pervierten las políticas alguna vez nobles en feifdoms. Pero la buena seguridad y la buena política PUEDEN ir de la mano. Sin embargo, se requieren esfuerzos de buena fe de todos los involucrados.
quux
En general, una política administrada razonablemente no generará este tipo de obstáculo político, o al menos no lo hará insuperable. Sin embargo, la política de TI tiende a desarrollarse incidente por incidente y no siempre es 'razonable'
Preocupado por
8

La opción más sensata que he visto (he estado en ambos lados -y aún estoy-) es simplemente cosas desbloqueadas y sin soporte también. Dales libertad, y si se equivocan, todo lo que pueden obtener es un restage con una imagen estándar ... En esa situación, creo que es un buen plan ponerlos en alguna forma de red "no confiable".

En cuanto a la (no) sensación de bloquear escritorios de desarrolladores: estoy bastante seguro de que todo el bloqueo solo obstaculiza la productividad de todos modos, además, cualquier desarrollador razonablemente calificado encontrará fácilmente los agujeros ...

Vincent De Baere
fuente
2
Recibo unos 20 minutos de soporte y luego la oferta de una nueva imagen. Funciona bien para nosotros.
Preet Sangha
6

La respuesta es realmente: no hay una respuesta simple de sí o no. Pero la seguridad es al menos tan importante para los usuarios de desarrollo como para cualquier otra persona.

Por un lado, sí, los desarrolladores tienden a ser técnicamente más inteligentes. Por otro lado, el suyo a menudo es un trabajo estresante y es probable que sus hitos de desarrollo tengan prioridad sobre el cuidado adicional necesario para mantener el propio sistema como un entorno seguro. Esto no es una crítica de los desarrolladores; Es una consideración directa de sus deberes diarios.

Si va a dar a los desarrolladores acceso completo y sin restricciones a sus sistemas, entonces debería considerar las siguientes medidas adicionales:

  • Proporcione otro sistema, bloqueado tanto como los sistemas de usuario normales están bloqueados, para uso normal sin desarrollo.
    • Ponen sus máquinas de desarrollo de acceso completo en una VLAN especial, con acceso solo a recursos de desarrollo.
  • Pregunte si algo evitaría que un sistema infectado ponga en peligro la base de código. ¿Podría una máquina de puerta trasera registrar código maligno, o borrar la base de código, en manos de un hacker hostil? Tome las medidas adecuadas para mitigar este riesgo.
  • Del mismo modo, pregunte si algo protege los datos comerciales almacenados en los sistemas a los que los desarrolladores tienen acceso.
  • Realice regularmente el inventario de software y la auditoría de seguridad de los sistemas de desarrollo.
    • Obtenga una idea de lo que están ejecutando y use esta información para construir sus imágenes de redistribución del sistema de desarrollo.
    • Tarde o temprano tendrás un desarrollador que se descuida e instala cosas que son claramente peligrosas o que no están relacionadas con el trabajo. Al enviar advertencias rápidamente cuando esto sucede, le informará a la comunidad de desarrolladores que sí, que alguien está observando y que tienen la responsabilidad de mantenerse dentro de los estándares razonables.
  • ¿Estás haciendo escaneos regulares de malware? En algunos casos, los desarrolladores se quejarán con razón del impuesto sobre el rendimiento aplicado por los sistemas AV de acceso (aquellos sistemas AV que siempre están encendidos, siempre escaneando en cada acceso a archivos). Puede ser preferible pasar a una estrategia de escaneo nocturno y / o crear exclusiones de archivos / carpetas para su escaneo en acceso. Sin embargo, asegúrese de que los archivos excluidos se escaneen de alguna otra manera.
    • ¿Pueden sus desarrolladores habilitados para administrador desactivar todos los escaneos AV? ¿Cómo detectarías y remediarías esto?

Si va a bloquear los sistemas de desarrollo, entonces debe considerar lo siguiente:

  • ¿Tiene la capacidad de soporte para responder a sus solicitudes de soporte rápidamente? Considere la tasa de pago promedio de sus desarrolladores y pregunte si se merecen o no un SLA de tiempo de respuesta más rápido. Probablemente no tenga sentido mantener a su desarrollador de $ 120k (quién es la clave de un proyecto multimillonario) esperando mientras maneja las necesidades de soporte de los empleados de $ 60k / año.
  • ¿Tiene una política clara e inequívoca sobre qué solicitudes de soporte atenderá y no atenderá a sus desarrolladores? Si empiezan a tener la sensación de que el apoyo es arbitraria, que tendrá finalmente sentir el dolor.

De cualquier manera, debe admitir que los desarrolladores son un caso especial y que necesitan soporte adicional de algún tipo. Si no está presupuestando para esto, es probable que los problemas se agraven en este momento ... o lo serán en el futuro.

Como nota al margen, he visto argumentos muy similares que tienen lugar con los administradores de sistemas. En al menos dos trabajos diferentes, he visto a los administradores de sistemas discutir con bastante acritud cuando se sugirió que ellos mismos deberían haber bloqueado los sistemas, o al menos usar dos inicios de sesión (uno con privilegios de administrador / raíz; uno sin él). Muchos administradores de sistemas sintieron que no deberían ser encerrados de ninguna manera y argumentaron enérgicamente en contra de tales medidas. Tarde o temprano, algún administrador reacio al bloqueo tendría un incidente de seguridad y el ejemplo tendría un efecto educativo en todos nosotros.

Solía ​​ser uno de esos administradores de sistemas que se ejecutaban con privilegios de administrador todo el tiempo. Cuando realicé el cambio a cuentas duales y solo elevé a medida que lo necesitaba, admito que fue bastante frustrante durante los primeros meses. Pero el lado positivo en la nube fue que aprendí mucho más sobre la seguridad de los sistemas que administraba, cuando mi cuenta normal vivía bajo las mismas restricciones que estaba imponiendo a los usuarios. ¡Me hizo un mejor administrador! Sospecho que lo mismo es cierto para los desarrolladores. Y afortunadamente en el mundo de Windows, ahora tenemos UAC, lo que hace que sea más fácil ejecutarlo como usuario limitado y elevarlo solo cuando sea necesario.

Personalmente, no creo que nadie deba estar por encima de alguna forma de prácticas de seguridad. Todos (administradores de sistemas, desarrolladores, gerentes superiores incluidos) deben estar sujetos a suficientes procedimientos de seguridad y supervisión para mantenerlos alerta. Decir lo contrario es decir que no vale la pena proteger los sistemas y los datos de la empresa.

Digámoslo de otra manera. Si Mark Russinovich puede ser absorbido por un rootkit , ¡cualquiera puede!

quux
fuente
3

Cuando tiene algunos desarrolladores, el enfoque para darles servidores de desarrollo es una posibilidad, pero si tiene un piso completo de desarrolladores, entonces estoy muy en contra de otorgarles derechos de administrador.

El problema es que terminarás con un piso completo de desarrolladores, cada uno haciendo lo que hacen, por lo general, la mayoría ni siquiera es consciente de la seguridad y solo quiere que su aplicación funcione. Luego, recibirá una solicitud de: "Hemos completado la fase de desarrollo, por favor, replique nuestro entorno de desarrollo en prueba, pre-prod y prod".

También se acostumbran a instalar basura aleatoria (software mal empaquetado), y luego le delegan para instalarla en la docena de servidores en los otros niveles.

Hago la política bastante simple:

  • Los desarrolladores NO obtienen acceso root para el entorno de desarrollo.
  • Los desarrolladores obtienen acceso de root a los servidores VMware previos al desarrollo, pero NO tienen soporte.
  • Los desarrolladores deben proporcionar paquetes RPM que pertenezcan a la distribución del sistema operativo en el que se ejecutará su aplicación, O paquetes RPM que cumplan con el FHS y el LSB.
  • Ninguna de sus aplicaciones puede, bajo ninguna circunstancia, ejecutarse como root
  • No tendrá acceso al usuario de la aplicación suo sudoal usuario, que se bloqueará para que NO tenga acceso de shell. (Esto es para contabilidad / auditoría).
  • Todos los comandos que necesiten ejecutarse con acceso privilegiado deberán solicitarse y aprobarse explícitamente, momento en el que se agregarán al sudoersarchivo.
    • Ninguno de estos comandos / scripts será editable por ellos.
    • Ninguna referencia de script (directa o indirectamente) de estos comandos será editable por ellos.

Lo anterior, sobre todo, hará que piensen en lo que se permitirá y no se permitirá cuando llegue el momento de mover el proyecto a la prueba y a los servidores anteriores.

Jerjes
fuente
2

Bloquear las máquinas de los desarrolladores requiere más esfuerzo del que vale. Daña seriamente la productividad ya que no se puede hacer casi nada sin derechos administrativos. Por supuesto, eventualmente el sistema se desordenará, pero seguramente su departamento de TI no está brindando soporte para todas esas herramientas de terceros que se utilizan en el desarrollo.

Entonces, como sugirió Vincent De Baere, el mejor curso de acción sería simplemente restaurar el sistema desde una imagen, por supuesto, el entorno debe restaurarse después de eso, pero eso no debería ser un problema de TI. Si sucede N veces, puede poner a dicha persona en una especie de "lista negra" y, sí, abandonar sus derechos administrativos por un tiempo.

De cualquier manera, el entorno debe configurarse de manera que se asegure de que una máquina infectada (o desordenada) no afecte a ninguna otra máquina o, por ejemplo, no envíe spam o algo (ok, ahora Solo digo cosas obvias, lo siento).

shylent
fuente
1

Bueno, en parte puede depender del entorno en el que se esté ejecutando (por ejemplo, Linux versus Windows); sin embargo, suponiendo un entorno de Windows, generalmente es más problemático de lo que vale simplemente porque parte del software de desarrollo requiere que tenga permisos elevados para trabajar. Por ejemplo, se sabe que Visual Studio requiere permisos de administrador , por lo tanto, no veo el beneficio de hacer que alguien salte los obstáculos para una parte requerida de su trabajo.

Sin embargo, si la compañía requiere que se bloqueen las cosas, es probable que su mejor opción sea darles a todos los desarrolladores máquinas virtuales en sus sistemas en las que puedan volverse locos. mundos (por ejemplo, escritorio normal restrictivo y un entorno totalmente personalizable).

Actualización : en el lado de Windows, hay un poco más de valor, al parecer, Visual Studio que requiere derechos de administrador está un poco anticuado y ahora hay formas explícitas de establecer los permisos necesarios (archivo PDF). Sin embargo, no creo que esto cambie tanto mi opción, ya que la mayoría de los desarrolladores que conozco, incluido yo mismo, tienden a usar herramientas adicionales más allá de Visual Studio y saber lo que todos necesitan en términos de permisos puede ser difícil de predecir.

anónimo
fuente
Es cierto que MS recomienda que VS2005 se ejecute como administrador. Pero Michael Howard, uno de los principales expertos en seguridad de software en MS, dice que el 99% de las veces funciona bien como nonadmin: blogs.msdn.com/michael_howard/archive/2007/01/04/… ... Entonces, Si la seguridad es importante para usted, puede intentar ejecutarlo de forma no administrativa. ¡Una sorpresa agradable probablemente te espera!
quux
1

Estoy de acuerdo con la noción de usar máquinas virtuales sobre un escritorio restringido

A menos que se requiera lo contrario, creo que la mejor configuración es un escritorio Linux restringido con un vm gratuito para todos en la parte superior. Linux reduce los gastos generales para mí, un VM no solo puede ser el SO que quieran, sino que también se puede restaurar a instantáneas o copias de seguridad, y en general el mundo se ve un poco más brillante cuando no hay una gran cantidad de configuraciones diferentes que necesitan apoyo.

Casey K
fuente
+1 ... No entiendo por qué las máquinas virtuales están tan infrautilizadas. No solo para el propósito que mencionó, sino que la distribución de software sería mucho más fácil usando máquinas virtuales.
1

Yo (como desarrollador) prefiero tener el control total de mi maquinaria, es decir; corriendo como administrador cuando sea necesario.

Puede proporcionar capacitación especial para desarrolladores antes de que se les permita el acceso completo a sus computadoras. Establezca algunas reglas para ellos, y tal vez podría hacer una auditoría de vez en cuando para ver si siguen las mejores prácticas.

En su mayoría, necesitarán saber más sobre la infraestructura de TI desde una vista de administrador de TI / soporte de TI, cosas relacionadas con la seguridad, así como por qué no desarrollar con derechos elevados. (y cómo asegurarse de que no ...)

"No confíes ciegamente en nosotros cuando te decimos que sabemos todo lo que necesitamos saber sobre computadoras" ;-)

Todavía tendrá que apoyarlos con redes, dominios y cuentas, instalaciones de software de herramientas que no sean de desarrollo, etc.

Arjan Einbu
fuente
Una cosa más: asegúrese de que tengamos instalado el AV adecuado ... Forzosamente si es necesario ... ;-)
Arjan Einbu
1

Mi experiencia es con una población de usuarios que se dividió en partes iguales entre las personas que solo necesitaban una máquina bloqueada y otros (desarrolladores, científicos) que necesitaban acceso de administrador. Las personas de gama alta usaron una gran cantidad de software diferente, algunos internos, otros no, pero muchos de ellos necesitaban administrador para ejecutarse, y sus trabajos requerían que usaran muchos paquetes, por lo que tenía más sentido dejar que la gente hiciera ellos mismos.

Terminamos con los siguientes procesos:

  • Nuestra imagen estándar tenía las herramientas básicas: Windows, Office, Antivirus, Acrobat, algunas utilidades.
  • Proporcionamos mucho espacio en el disco de la red: suficiente para que todo pudiera almacenarse en la red. La única excepción fueron los archivos de video en proceso que tenían que permanecer locales.
  • El personal (en consulta con sus supervisores) tenía dos opciones: o bien TI mantenía su PC, realizaba todas las instalaciones y configuraciones O podía tener acceso de administrador para hacerlo ellos mismos. En cualquier caso, todos los datos fueron respaldados en la red.
  • Si el departamento de TI mantenía el sistema y se apagaba, lo volveríamos a poner en el estado en que estaba, incluyendo la adición de software adicional que necesitaban que hubiéramos instalado.
  • Si tuvieran acceso de administrador y el sistema falleciera, lo examinaríamos y trataríamos de solucionarlo, pero nuestro compromiso era devolverlos a la imagen estándar y tendrían que tomarlo desde allí. Si tuvieran alguna información local, primero trataríamos de obtenerla, pero nuestro SLA era solo para conseguirles una PC estándar que funcionara lo antes posible.
  • Se requería que cualquier persona con acceso de administrador supiera cómo asegurarse de que las actualizaciones de Windows funcionaran, para mantener actualizados el antivirus y el antimalware.

Nos hubiera gustado poner a todas las personas con acceso de administrador en un vlan "no confiable", pero nunca llegamos a eso.

Ward - Restablece a Monica
fuente