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?
user-permissions
Sangha Preet
fuente
fuente
Respuestas:
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.
fuente
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
fuente
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/bin
directorio 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.fuente
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 ...
fuente
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:
Si va a bloquear los sistemas de desarrollo, entonces debe considerar lo siguiente:
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!
fuente
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:
su
osudo
al usuario, que se bloqueará para que NO tenga acceso de shell. (Esto es para contabilidad / auditoría).sudoers
archivo.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.
fuente
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).
fuente
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.
fuente
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.
fuente
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.
fuente
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:
Nos hubiera gustado poner a todas las personas con acceso de administrador en un vlan "no confiable", pero nunca llegamos a eso.
fuente