¿Debería ser dev en su computadora? [cerrado]

35

En un entorno corporativo, ¿deberían los desarrolladores tener derechos de administrador en su computadora? ¿Por qué?

Entorno tecnológico:

  • Windows 7
  • Visual Studio 2008 y 2010
  • servidor SQL
PBelanger
fuente
3
Ver también: stackoverflow.com/questions/701214/…
Zoredache
2
Ver también: programmers.stackexchange.com/questions/4596/…
goodguys_activate
3
Estoy votando para reabrir este porque a pesar de la naturaleza algo subjetiva de la pregunta, esta es una pregunta que casi todos los administradores de Windows (no puedo comentar en otras plataformas) ENCONTRARÁN durante su carrera. Las respuestas publicadas hasta ahora proporcionan información que creo que ayudará a otros cuando se enfrenten a este problema.
John Gardeniers
2
Si pudiera votar para reabrir esto, lo haría.
jmort253

Respuestas:

52

¿Deberían ellos? Eso depende de la corporación. Personalmente, creo que está bien siempre que haya algunas reglas entendidas.

  1. Ser administrador en su casilla es un privilegio, NO un derecho.
    1. La captura de virus en múltiples ocasiones será revocada correctamente
    2. La inhabilitación de los agentes corporativos será revocada correctamente: AV / inventario / implementación de software / etc.
    3. Básicamente, si haces algo que arriesga, la red recibirá la revocación correcta
  2. Las herramientas que instale no deben depender de su proyecto sin incluirlas en la lista aprobada oficialmente. Pregunte amablemente, no se bloquee el día de la implementación y exija que $ random_library se instale en todos los servidores sin pruebas
  3. Para cualquier cosa fuera de las aplicaciones normales instaladas en cualquier otro lugar, el soporte será el mejor esfuerzo. La mesa de ayuda y / o los administradores de sistemas no pasarán 5 horas tratando de depurar por qué tiene conflictos con DLL.
Zypher
fuente
18
Buena lista También agregaría que si el producto finalmente será ejecutado por usuarios sin derechos de administrador, entonces debe probar en consecuencia (prueba de usabilidad real). Demasiados desarrolladores hacen pruebas al pobre hombre donde prueban en su máquina de desarrollo en la que tienen derechos de dios. El producto funciona bien y le dan un sello de aprobación solo para saber que se ahoga en un entorno no privado.
Shawn Anderson
44
@ Shawn, hay una razón por la que necesitas probadores y desarrolladores.
Ian Ringrose
11
Esta es una respuesta típica de administrador de red que no entiende por qué los desarrolladores requieren privilegios de administrador. Esto debe decidirlo una persona de nivel gerente que haya administrado o haya sido desarrollador en el pasado. De lo contrario, mantendrá las máquinas libres de virus y Office libre de desarrolladores.
Muhammad Hasan Khan
11
@Hasan y esta es una respuesta típica del desarrollador que nunca ha tenido que lidiar con una red infestada que satura un DS3 con tráfico que destruye toda la oficina. No te estoy pidiendo que hagas nada tan oneroso aquí.
Zypher
99
En una casa de desarrollo estás en el negocio debido al software que el equipo de desarrollo está produciendo. Trabajé en varios negocios donde las máquinas estaban bloqueadas hasta un punto que hacía imposible el trabajo y nos costó convencer a las personas de que necesitábamos privilegios de administrador para ejecutar las herramientas de desarrollo. O donde se cortó el acceso a Internet para que ni siquiera pudiéramos leer la documentación en línea. O un producto antivirus que escaneó cada inserción de registro de la base de datos y, por lo tanto, perjudicó tanto el rendimiento que fue imposible para nosotros los desarrolladores hacer que el software se ejecute correctamente.
Matt
35

Por lo general, diría que sí. Cosas como los depuradores requieren derechos de administrador bastante altos si no es que funcionan correctamente. Los desarrolladores a menudo necesitan instalar software aleatorio que puede tardar días o semanas en instalarse al pasar por los canales. Durante ese tiempo, el desarrollador generalmente deja de trabajar y le cuesta a la empresa nada más que dinero, especialmente si el desarrollador es un consultor.

mrdenny
fuente
13
+1: los desarrolladores son (generalmente) personas bastante inteligentes y mantienen sus máquinas limpias
Mark Henderson
99
No digas eso :)
mrdenny
44
@ Mark, aún no he visto evidencia que respalde esa afirmación.
John Gardeniers
44
@ Mark Henderson, puede que tenga la suerte de estar trabajando con un buen grupo de personas. Uno si los sitios que leo a diario me dan la impresión de que no todos los desarrolladores son iguales.
Zoredache
8
Creo que hay un viejo proverbio klingon que dice: "Cuidado con los programadores que llevan destornilladores".
Bart Silverstrim
23

Hay ciencia y arte en desarrollo; no es tan simple como "saber" lo que necesitamos. Si ya tuviéramos la respuesta, la mitad de nuestro trabajo sería discutible; Encontrar el enfoque correcto es a menudo iterativo, y puede involucrar múltiples herramientas de maneras impredecibles. Requerir un intermediario para instalar cada uno de estos (a menudo con alta latencia), solo para encontrar (aproximadamente una hora) que para su escenario se necesita el "complemento de herramienta súper uber" es una tontería.

Si bien una VM es ideal para esto, también hay muchas herramientas de desarrollo que no pueden ejecutarse (correctamente, o incluso en absoluto) en una VM, porque ellas mismas son una VM, y no me refiero a cosas como JVM; Me refiero a emus / vms de máquina completa, como kits de herramientas de dispositivos. La compatibilidad allí está mejorando.

Además, la mayoría de las herramientas de desarrollo tienen una huella muy grande, mucho más grande que las herramientas "normales" (lo que hace que el alojamiento de VM sea un poco más doloroso de lo que cabría esperar) y, a menudo, por la naturaleza de un depurador de procesos, se requiere un acceso elevado. Sin mencionar el hecho de que pueden ser intensivos en GUI; intentar ejecutar a tiempo completo en una GUI de VM es ... extremadamente doloroso.

El rendimiento es enorme aquí; ¿Crees que está bien que los usuarios esperen 3 segundos después de cada pulsación de tecla en Word para que se registre su clave? No estoy bromeando: las herramientas de desarrollo en máquinas virtuales, etc. pueden ser tan desagradables; para la mayoría de los propósitos de desarrollo necesita capacidad de respuesta. Interrumpir el flujo de la lógica compleja del cerebro al teclado puede hacer que sea casi imposible hacer el trabajo. Y odio decirlo, pero sí: el tiempo de desarrollo es costoso.

Marc Gravell
fuente
18

En un entorno de Windows, y especialmente cuando se usan productos de desarrollador de Microsoft, el desarrollador requerirá derechos de administrador en su máquina. Si les niega esos derechos, se restringirá su capacidad para hacer su trabajo, si no se evita por completo.

John Gardeniers
fuente
1
Tal vez. Pero se les debe exigir que prueben su código en un entorno no privilegiado si están haciendo un producto para el consumo del usuario.
Bart Silverstrim
2
@Bart, estoy totalmente de acuerdo, pero los desarrolladores deberían hacer sus pruebas en una máquina separada de todos modos porque las herramientas de desarrollo crean un entorno completamente diferente al de una computadora "normal".
John Gardeniers
@BartSilverstrim que no siempre sigue. El hecho de que la parte del usuario de la aplicación se ejecute como un usuario normal no significa que todos los componentes lo hagan (por ejemplo, considere un cliente de servicio, es probable que el servidor necesite un mayor privilegio). Y luego considere el instalador ...
Richard
1
@ Richard, eso también es cierto, pero creo que el punto de Bart es que las pruebas deben realizarse en un entorno lo más cercano posible a lo que el cliente utilizará.
John Gardeniers
1
La respuesta correcta a un problema de software no relacionado con las tareas del sistema casi nunca debe "ejecutarse como administrador".
Bart Silverstrim
9

Al ser un desarrollador, clasifico un nivel de privilegio por encima del usuario básico, pero por debajo de los administradores del sistema.

Es posible que, en ocasiones, necesite una biblioteca adicional instalada para que la aplicación que estoy desarrollando funcione en el entorno de producción, dicho esto, tengo una regla estricta que desarrollo: "Para cualquier aplicación que requiera bibliotecas de terceros, las bibliotecas deben instalarse en un entorno de espacio aislado antes del despliegue de producción y, en algunos casos, antes del desarrollo de la aplicación ".

El administrador de sistemas con el que trabajo y estoy de acuerdo con esto, y entre los dos, aplicaremos activamente esa regla y retrasaremos cualquier implementación de aplicación que no haya pasado las "verificaciones de dependencia".

Sin embargo, para responder a su pregunta, sí, los desarrolladores deberían tener acceso completo a sus propias máquinas, pero esas máquinas deberían estar aisladas del entorno en el que finalmente se implementará la aplicación. En ese caso, incluso el despliegue de la aplicación debe estar protegido hasta que se considere seguro implementarlo en el entorno de producción.

nesv
fuente
9

Descargo de responsabilidad: soy un desarrollador.

Para mí, esta pregunta (y las respuestas) parecen estar atacando el problema desde un enfoque incorrecto, es decir, el debate se centra en lo que los administradores quieren / necesitan frente a lo que los desarrolladores quieren / necesitan. Pero especificó que estamos en un entorno corporativo, así que veámoslo de esa manera.

Así que imaginemos que estamos discutiendo esto frente al director de TI u operaciones, o quien controla nuestro presupuesto , y haga estas preguntas.

  1. ¿Cuál es el privilegio mínimo requerido para realizar las funciones del departamento? Esta es nuestra línea de base.
  2. ¿Cuáles son los riesgos de otorgarles más acceso? (riesgos reales, no solo los mejores / peores escenarios)
  3. ¿Cuál es el verdadero costo esperado de otorgarles más acceso? (costos de soporte, reparación de cambios inadvertidos realizados por administradores sin experiencia, etc.)
  4. ¿Cuál es el verdadero costo esperado de no otorgarles más acceso? (pérdida de productividad, que requiere soporte de TI para realizar tareas diarias, rotación de personas experimentadas debido a la moral, etc.)

Con estas preguntas respondidas, puede tomar una decisión informada en lugar de una apasionada.

Para su entorno específico , hay algunas cosas que requieren derechos de administrador (consulte Derechos de usuario y Visual Studio ): si no están haciendo esas cosas, puede responder las preguntas 2 a 4.

Como consultor, he visto a los dos extremos de esta política, y mientras que siempre quiere tener acceso de administrador a una máquina, en algunos casos, no tenía sentido. Y no estoy seguro de cuál es la causa y el efecto, pero sin excepción, todos los lugares que he visto haciendo el desarrollo de Windows donde los desarrolladores tenían acceso de administrador también tenían MUCHA mayor productividad de cada desarrollador que los lugares donde estaban bloqueados.

Philip Rieck
fuente
+1 porque lo pones en la perspectiva correcta. Elimine las preferencias personales de los desarrolladores y administradores y concéntrese en lo que es importante para la organización en su conjunto.
Jaap Coomans
4

Creo que estás haciendo una pregunta incorrecta, deberías preguntarte:

¿Funcionará un buen desarrollador para un empleador que no le otorga derechos de administrador en su PC?

Lo que alguien "necesita" y lo que espera a menudo no es lo mismo, después de todo, no necesita permitir que un desarrollador tome café en horas de trabajo, pero si no lo hace ...

(Asegúrese de aclarar su política en la etapa de la entrevista, de lo contrario, puede hacer que las personas tomen el trabajo que luego desprecian a su empresa debido a la falta de derechos de administrador; ¡no espere que los programadores piensen de manera lógica sobre este tipo de cosas! )

Ian Ringrose
fuente
Admito que trabajo en la educación superior y soy un "administrador / programador de sistemas", al igual que todos en mi grupo, así que supongo que mi experiencia no es totalmente relevante. Pero no puedo imaginarme trabajando como desarrollador en una tienda que no me daría un control total sobre mi estación de trabajo (elección e instalación del sistema operativo, elección del software, etc.) y mucho menos privilegios de root.
Jason Antman
4

En realidad, depende más de a quién le pregunte que quién realmente lo necesita. Si le preguntas a los grupos corporativos de TI y de gestión de riesgos, estarán sobre ti con historias de horror (y si te lo van a dar, exigen una cabra sacrificada en un santo vínculo de promesa de que no serán responsables), los desarrolladores por otro lado, exige derechos de administrador principalmente porque el trabajo es estresante y exigente sin tener que pedir permiso al servicio de asistencia para ir a tomar una fuga. El triste estado de las cosas es que ahora se trata más de la lucha por el poder y el ejercicio del poder que de las necesidades comerciales y de productividad (por ejemplo, se reduce a quién hará que el otro salte a través de los aros)

En mi humilde opinión, el mejor ambiente de trabajo que he visto hasta el día de hoy es donde los dos grupos se mantienen separados. Los desarrolladores tienen su propio dominio en el bosque (por lo que TI controla lo que este dominio y sus usuarios pueden hacer en el resto de la compañía) y todos son administradores locales con muchachos con MCSE que actúan como administradores de dominio local, tienen su propio entorno de prueba y pueden hacer más o menos lo que quieren y necesitan en su LAN local con una sola política de TI (sin software pirateado). La TI corporativa no es responsable y no brinda soporte a los desarrolladores y solo aplica algunas reglas corporativas de alto nivel (no Facebook, porno o similar a través del firewall, los desarrolladores no permiten meterse con la LAN corporativa) y todos tienen VPN basadas en RSA para trabajar desde casa lo que los coloca directamente dentro de su LAN. Aseado, ¿no es así?

mmix
fuente
2

Es probable que la respuesta sea subjetiva y específica para cada escenario individual, pero en la mayoría de los casos diría que sí.

joeqwerty
fuente
2

Diría que los derechos administrativos son importantes para el proceso de desarrollo. Sin embargo, dada la relativa facilidad de uso de una VM para sandbox, no hay ninguna razón por la que no pueda colocarlos en una VM y mantener la seguridad.

Todo sale mal y puedes borrarlo y reconstruirlo en cuestión de minutos.

DivinusVox
fuente
2
Hay una muy buena razón para no encerrarlos en una VM: el rendimiento. Un desarrollador que trabaje en una aplicación importante podría usar fácilmente cada máquina de alta especificación con grandes cantidades de RAM, disco duro rápido, etc. Ponerlos en una máquina virtual es casi lo mismo que devolverles sus máquinas hace unos años. Excelente para la seguridad pero no tan bueno para la productividad.
John Gardeniers
1
Pero es genial para obligar a los desarrolladores a escribir en el extremo inferior de las máquinas compatibles oficialmente en el proyecto. Además, con los servidores virtuales podemos ofrecer compatibilidad con tolerancia a fallas (y en algunos casos con carga principal) para productos en vivo. Todo es cuestión de en qué máquina / clúster se ejecuta su VM.
DivinusVox
44
No se trata de escribir para el extremo inferior de los requisitos, se trata de usar herramientas que requieren un rendimiento superior al que permiten las máquinas virtuales. El uso de Visual Studio 2010 dentro de una máquina virtual es notablemente menos sensible que en metal desnudo. El producto que está escribiendo puede funcionar bien en una máquina virtual, pero eso no significa que las herramientas del desarrollador siempre lo hagan.
Michael Shimmins
2

¡Seguro! Por lo general, gran parte del desarrollo que ocurre puede o no estar en un entorno virtual. Los derechos de administrador ayudan a superar muchas de las anulaciones de manejo de servicios, entradas de registro e IIS localmente. Por otro lado, depende de cuánta confianza tengas en tus desarrolladores.

Como desarrollador, es frustrante cuando algo no funciona porque no tenemos acceso.

Micro
fuente
2

Depende Como desarrollador, uno siempre debe operar según el principio de los privilegios mínimos. Si trabaja como contratista del gobierno, puede estar obligado por contrato a no tener acceso de administrador, por ejemplo.

Como desarrollador de Java, apenas he tenido necesidad de tener derechos de administrador en mi máquina de forma continua . Sin embargo, hay casos legítimos en los que necesita acceso de administrador a pedido (es decir, necesita mover su computadora portátil a través de dominios físicamente separados, y necesita cambiar su NIC en consecuencia). Esa fue la única vez que realmente necesité Acceso de administrador permanente y continuo a mi máquina.

A veces necesita acceso de administrador porque TI no tiene suficiente personal (o es incompetente o está empantanado en burocracia). Pero si trabaja con un departamento de TI competente, pueden instalar las cosas por usted de forma remota (o al proporcionar instaladores personalizados que "funcionarán como "admin e instale las cosas por usted simplemente haciendo clic en ellas.)

Entonces la respuesta (nuevamente) es: depende. ¿Tiene un personal de TI receptivo que pueda instalar cosas a pedido (o dentro de un tiempo razonable)? ¿Los desarrolladores realmente lo necesitan para las tareas por las que se les paga ?

Si los desarrolladores lo necesitan verdadera y legítimamente (como en "Literalmente NO podré hacer nada sin él" ) en lugar de una conveniencia (como en "Quiero instalar lo que quiera" ), y si es compatible con TI no responde lo suficiente (por cualquier razón), entonces sí, deberían tener acceso de administrador a sus máquinas.

De otra manera no. Recuerde el principio del menor privilegio , gente.

luis.espinal
fuente
2

Hay desarrolladores y hay desarrolladores. Si un "desarrollador" cuesta unos $ 40 / hora, JBoss java está escribiendo reglas para un motor de reglas, entonces, por supuesto, no. Si un "desarrollador" es un tipo de C / Assembly de $ 350 / hora que hace que su software de edición de video se ejecute lo más rápido posible en una GPU, entonces sí, por supuesto.

emoción
fuente
1

Para las corporaciones que están preocupadas por la seguridad, tendrán personas de seguridad que dictarán e intentarán hacer cumplir una política que funcione con su modelo de desarrollo y sistemas. En un entorno Windows, la mayoría de las personas le dirán que debe tener derechos administrativos en el host en el que se están desarrollando para poder realizar sus tareas.

Esto no es necesariamente cierto...

Puede crear una política personalizada y hacer que todos los programas y funciones trabajen con usuarios de desarrollo en un sistema. Solo tendrá que ponerse sucio y meterse en el meollo del asunto con permisos personalizados en los directorios del programa / sistema con grupos o grupos personalizados según el diseño deseado.

La mayoría de las corporaciones dirán que es muy peligroso para los desarrolladores tener sistemas en redes abiertas porque los piratas informáticos podrían obtener el control y comenzar a compilar sus propias herramientas, por lo que realizar la tarea vale la pena el riesgo en mi opinión profesional.

Jason B Shrout
fuente
Si bien lo que usted dice es técnicamente correcto, también es una pesadilla implementarlo, mantenerlo y crear entornos frágiles.
John Gardeniers
Preferiría tener acceso completo a la red de desarrollo, y luego solo conectarme a la red corporativa a través de Internet con una VPN si este es un problema real. ¡También muchos departamentos corporativos que he visto me proporcionaron menos de lo que hace un buen ISP! Como desarrollador, no es necesario estar en la misma red sin filtrar que el departamento de cuentas, etc.
Ian Ringrose
1

Los desarrolladores deberían (idealmente) tener dos inicios de sesión de dominio.

Uno que tiene derechos de administrador local (para el trabajo de desarrollo) y uno que tiene los mismos derechos que todos los demás en la empresa. Luego, pueden probar su trabajo en un conjunto representativo de permisos.

Esto debería reducir la probabilidad de que ItWorksOnMyMachine-itis aparezca ocasionalmente .....

Nick Haslam
fuente
0

Tengo que (aparentemente) proporcionar la voz disidente y decir no solo no, sino "diablos no". No tengo ningún problema para otorgar derechos de administrador de desarrolladores en una máquina virtual de espacio aislado que no tiene acceso a la red. Zypher tenía casi razón (corrección en negrita):

"1. Ser administrador en mi casilla es un privilegio, NO un derecho". Estos sistemas son activos corporativos de los que soy responsable en última instancia. Cuando Joe Developer instala su copia pirateada de Microsoft Bob ("porque lo necesitaba "), no será él quien tenga que explicar cómo no se encontró antes de la auditoría. Los desarrolladores habitualmente piensan que de alguna manera las reglas corporativas simplemente no se aplican a ellos. Al darles una máquina virtual de espacio aislado, pueden seguir todas las reglas que todos los demás deben seguir (ya que ahora solo TI puede copiar archivos hacia y desde el sistema). Mágicamente, el sistema de solicitud vuelve a ser utilizado por los desarrolladores, el cielo ya no se está cayendo cuando Joe Developer destroza su caja de desarrollo: solo pide una nueva (o una restauración si le han pedido copias de seguridad)

El Sr. Denny mencionó que los desarrolladores cuestan dinero cuando tienen que esperar a que se instalen las aplicaciones, A. hola ... mi tiempo suele ser tan valioso como Joe Developer (generalmente más porque mantengo el crapware existente en funcionamiento) y realmente tengo que mencionar todo el tiempo que pasé ayudando al desarrollador de Joe a depurar su última obra maestra), y B. cuando el desarrollador supera el presupuesto porque estaban esperando una aplicación y trataban de culparla, diría:

Su falta de planificación para lo que necesita para escribir software no es mi responsabilidad, tenemos un conjunto estándar de herramientas y si esa caja de herramientas falta lo que necesita, debería haber recibido sus solicitudes para acelerar más herramientas en lugar de intentar hacerme saltar a través de aros para conseguirlo porque su fecha límite es mañana.

Habiendo dicho todo esto, bloquear los escritorios de los desarrolladores apesta, si pudieras eliminar a los malos desarrolladores que piensan que tienen derecho a ver su colección baywatch y se indignan al saber que no pueden instalar el reproductor de bebés para verlos ("pero es código abierto ") es posible que pueda relajarse. Pero por cada gran desarrollador que lo "consigue", hay 10 más que su empresa va a contratar para esa aplicación vertical de 200 millones de dólares, y eso es lo que debe vigilar.

EDITAR: Ciertamente es bastante posible que los desarrolladores a los que he estado expuesto sean inusualmente aburridos (encuestando el cultivo actual, solo 1 ha oído hablar de stackoverflow, para dar un cierto nivel de referencia). El punto de vista inicial con el que empiezo es "qué necesita hacer lo que la compañía le está pagando". Si necesita derechos de administrador, los obtiene, pero no debe continuar con ellos y si puedo darle una caja que, francamente, no me importa lo que le haga y que funcione, entonces ambos estamos listos para comenzar.

Jim B
fuente
14
¡Guau, el BOFH vive entre nosotros! Usted ha fallado en el principio básico de que nuestro trabajo es principalmente permitir que todos los demás hagan su trabajo lo mejor que podamos dentro de los límites impuestos por políticas, requisitos legales, etc. NO es dictar arbitrariamente a otros cómo debemos trabajar simplemente porque nos conviene hacerlo.
John Gardeniers
+1 para el último párrafo. Puede eliminar todos los demás párrafos si solo contrata desarrolladores decentes.
Robert Harvey
66
Wow, ama la mentalidad de nosotros y ellos. ¿Consideró que "su" fecha límite también es "su" fecha límite ya que están todos juntos (presumiblemente) en beneficio de la empresa? No te conozco por una pastilla de jabón, pero me recuerdas al típico administrador de sistemas desagradable, arrogante, que trata de encontrar una manera de decir no en lugar de sí. Para cada uno de los buenos administradores de sistemas, hay otros 10 que contrata su empresa que perpetúan el estereotipo que acaba de exponer y hacen que todo lo demás en la vida de la empresa sea mucho más difícil. Debería preocuparse por la prestación del servicio, no por la restricción.
Michael Shimmins
He abordado específicamente la mayoría de estos puntos en una respuesta: serverfault.com/questions/232416/…
Marc Gravell
1
Tal vez USTED sea la razón por la que "los desarrolladores a los que ha estado expuesto son inusualmente aburridos" ... Una empresa tiene que decidir si quiere desarrolladores de libre pensamiento o aburridos y no puede actuar de una manera que los desarrolladores de libre pensamiento odian y luego esperan mantener a alguien separado de los desarrolladores aburridos. Sin embargo, los desarrolladores aburridos pueden ser el mejor trabajo corporativo.
Ian Ringrose