Dev deve ser administrador em seu computador? [fechadas]

35

Em um ambiente corporativo, os desenvolvedores devem ter direitos de administrador em seus computadores? Por quê?

Ambiente tecnológico:

  • Windows 7
  • Visual Studio 2008 e 2010
  • servidor SQL
PBelanger
fonte
3
Veja também: stackoverflow.com/questions/701214/…
Zoredache
2
Veja também: programmers.stackexchange.com/questions/4596/…
goodguys_activate
3
Estou votando para reabrir esta, porque, apesar da natureza um tanto subjetiva da pergunta, essa é quase toda a administração do Windows (não posso comentar em outras plataformas) enfrentará durante sua carreira. As respostas postadas até agora fornecem informações que acredito que ajudarão outras pessoas quando enfrentarem esse problema.
John Gardeniers
2
Se eu pudesse votar para reabrir isso, eu o faria.
jmort253

Respostas:

52

Eles deveriam? Isso depende da corporação. Pessoalmente, acho que está tudo bem , desde que haja algumas regras entendidas.

  1. Ser administrador da sua caixa é um privilégio, NÃO um direito.
    1. A captura de vírus em várias ocasiões será revogada
    2. Desativar agentes corporativos será revogado corretamente - AV / inventário / implantação de software / etc
    3. Basicamente, se você fizer algo que arrisque, a rede será revogada
  2. Todas as ferramentas instaladas não devem depender do seu projeto sem colocá-las na lista oficialmente aprovada. Peça bem, não venha a falhar no dia da implantação e exija que $ random_library seja instalado em todos os servidores sem teste
  3. Para qualquer coisa fora dos aplicativos normais instalados em qualquer outro lugar, o suporte será o melhor esforço. O suporte técnico e / ou administradores de sistema não passará 5 horas tentando depurar por que você tem conflitos de dll.
Zypher
fonte
18
Boa lista. Acrescentaria também que, se o produto for finalmente executado por usuários sem direitos de administrador, será necessário fazer o teste em conformidade (teste de usabilidade real). Muitos desenvolvedores testam o pobre homem onde testam em sua máquina de desenvolvimento na qual têm direitos divinos. O produto funciona bem e eles dão um selo de aprovação apenas para saber que ele engasga em um ambiente não privado.
Shawn Anderson
4
@ Shawn, há uma razão pela qual você precisa de testadores e desenvolvedores.
Ian Ringrose
11
Esta é uma resposta típica de administrador de rede que não entende por que os desenvolvedores exigem privilégios de administrador. Isso deve ser decidido por uma pessoa no nível de gerente que gerenciou ou foi desenvolvedor no passado. Caso contrário, você manterá as máquinas livres de vírus e o escritório livre de desenvolvedores.
Muhammad Hasan Khan
11
@ Hasan, e esta é uma resposta típica do desenvolvedor que nunca teve que lidar com uma rede infestada saturando um DS3 com o tráfego derrubando todo o escritório. Não estou pedindo para você fazer algo tão oneroso aqui.
Zypher
9
Em uma casa de desenvolvimento, você está no negócio por causa do software que a equipe de desenvolvimento está produzindo. Trabalhei em várias empresas nas quais as máquinas foram bloqueadas a um nível que impossibilitava o trabalho e tivemos dificuldade em convencer as pessoas de que precisávamos de privilégios de administrador para executar as ferramentas de desenvolvimento. Ou onde o acesso à Internet foi cortado para que nem pudéssemos ler a documentação on-line. Ou um produto antivírus que examinava cada inserção de registro do banco de dados e, portanto, prejudicava tanto o desempenho que era impossível para nós desenvolvedores fazer o software funcionar corretamente.
Matt
35

Normalmente eu diria que sim. Coisas como depuradores exigem direitos altos, se não administrativos, para funcionar corretamente. Os desenvolvedores geralmente precisam instalar software aleatório, que pode levar dias ou semanas para ser instalado ao passar pelos canais. Durante esse período, geralmente o desenvolvedor deixa de custar à empresa nada além de dinheiro, especialmente se o desenvolvedor for um consultor.

Mrdenny
fonte
13
+1 - promotores são (geralmente) as pessoas bastante inteligentes e manter suas máquinas limpa
Mark Henderson
9
Não diga isso. :)
mrdenny
4
@ Mark, ainda tenho que ver evidências para apoiar essa alegação.
John Gardeniers
4
@ Mark Henderson, você pode ter a sorte de estar realmente trabalhando com um bom grupo de pessoas. Um se os sites que leio diariamente me dão a impressão de que nem todos os desenvolvedores são criados iguais.
Zoredache
8
Acredito que exista um velho provérbio klingon que diz: "Cuidado com os programadores carregando chaves de fenda".
Bart Silverstrim
23

Há ciência e arte em desenvolvimento; não é tão simples quanto "saber" o que precisamos. Se já tivéssemos a resposta, metade do nosso trabalho seria discutível; encontrar a abordagem correta geralmente é iterativo e pode envolver várias ferramentas de maneiras imprevisíveis. Exigir que um intermediário instale cada um deles (geralmente com alta latência), apenas para descobrir (cerca de uma hora) que, para o seu cenário, o "complemento de ferramenta super uber" é necessário.

Embora uma VM seja ideal para isso, também existem muitas ferramentas de desenvolvimento que não podem ser executadas (adequadamente ou até mesmo) em uma VM, porque elas próprias são uma VM - e não quero dizer coisas como JVM; Quero dizer emus / vms completos da máquina, como kits de ferramentas do dispositivo. A compatibilidade está melhorando.

Além disso, a maioria das ferramentas de desenvolvimento tem uma área de cobertura muito grande - muito maior que as ferramentas "regulares" (tornando a hospedagem de VM um pouco mais dolorosa do que você imagina) e, geralmente, por natureza de ser um depurador de processo, exige acesso elevado. Sem mencionar o fato de que eles podem ser intensivos em GUI; tentar executar em tempo integral em uma GUI da VM é ... extremamente doloroso.

O desempenho é enorme está aqui; você acha que não há problema em os usuários aguardarem três segundos após cada pressionamento de tecla no Word para que suas chaves sejam registradas? Eu não estou brincando - ferramentas de desenvolvimento em VMs etc podem ser tão ruins; para a maioria dos propósitos de desenvolvimento, você precisa de capacidade de resposta. Interromper o fluxo de lógica complexa do cérebro para o teclado pode tornar praticamente impossível realizar o trabalho. E odeio dizer isso, mas sim: o tempo de desenvolvimento é caro.

Marc Gravell
fonte
18

Em um ambiente Windows, e especialmente ao usar produtos de desenvolvedor da Microsoft, o desenvolvedor exigirá direitos de administrador em sua máquina. Se você negar esses direitos, sua capacidade de realizar seus trabalhos será restrita, se não totalmente evitada.

John Gardeniers
fonte
1
Talvez. Mas eles devem ser obrigados a testar seu código em um ambiente não privilegiado se estiverem produzindo um produto para consumo do usuário.
Bart Silverstrim
2
@ Bart, eu concordo plenamente, mas os desenvolvedores devem fazer seus testes em uma máquina separada de qualquer maneira, porque as ferramentas de desenvolvimento criam um ambiente completamente diferente daquele de um computador "normal".
John Gardeniers
@BartSilverstrim que nem sempre segue. Só porque a parte do usuário do aplicativo é executada como um usuário normal não significa que todos os componentes o fazem (por exemplo, considere um cliente de serviço, é provável que o servidor precise de privilégios mais altos). E, em seguida, considere o instalador ... #
Richard
1
@ Richard, isso também é verdade, mas acredito que o ponto de Bart foi que o teste precisa ser feito em um ambiente o mais próximo possível do que o cliente estará usando.
John Gardeniers
1
A resposta correta para um problema de software não relacionado às tarefas do sistema quase nunca deve ser "executada como administrador".
Bart Silverstrim
9

Como desenvolvedor, classifico um nível de privilégio acima do usuário básico, mas abaixo do (s) administrador (es) do sistema.

Ocasionalmente, posso precisar de uma biblioteca extra instalada para que o aplicativo que estou desenvolvendo funcione no ambiente de produção, ou seja, tenho uma regra estrita que desenvolvo por: "Para qualquer aplicativo que exija bibliotecas de terceiros, o as bibliotecas devem ser instaladas em um ambiente sandbox antes da implantação da produção e, em alguns casos, antes do desenvolvimento do aplicativo ".

O administrador do sistema com o qual trabalho e concordo com isso, e entre nós dois, aplicaremos ativamente essa regra e adiaremos qualquer implantação de aplicativo que não tenha passado nas "verificações de dependência".

Para responder sua pergunta, sim, sim, os desenvolvedores devem ter acesso total a suas próprias máquinas, mas essas máquinas devem ser isoladas do ambiente em que o aplicativo será implantado. Nesse caso, até a implantação do aplicativo deve estar em área restrita até ser considerada segura para implantar no ambiente de produção.

nesv
fonte
9

Isenção de responsabilidade: sou desenvolvedor.

Para mim, essa pergunta (e as respostas) parece estar atacando o problema pela abordagem errada - ou seja, o debate está focado no que os administradores querem / precisam versus o que os desenvolvedores querem / precisam. Mas você especificou que estamos em um ambiente corporativo, então vamos ver dessa maneira.

Então, vamos imaginar que estamos discutindo isso na frente do diretor de TI ou das operações, ou de quem controla nosso orçamento , e fazer essas perguntas.

  1. Qual é o privilégio mínimo necessário para executar as funções do departamento? Esta é a nossa linha de base.
  2. Quais são os riscos de conceder-lhes mais acesso? (riscos reais, não apenas cenários de melhor / pior caso)
  3. Qual é o verdadeiro custo esperado de conceder-lhes mais acesso? (custos de suporte, corrigindo alterações inadvertidas feitas por administradores inexperientes, etc.)
  4. Qual é o verdadeiro custo esperado de não conceder-lhes mais acesso? (perda de produtividade, exigindo suporte de TI para executar tarefas diárias, rotatividade de pessoas experientes devido à moral etc.)

Com essas perguntas respondidas, você pode tomar uma decisão informada, e não apaixonada.

Para o seu ambiente específico , existem algumas coisas que exigem direitos de administrador (consulte Direitos do usuário e Visual Studio ) - se elas não estiverem fazendo essas coisas, você poderá responder às perguntas 2 - 4.

Como consultor, tenho visto os dois extremos desta política, e enquanto eu sempre querem ter acesso de administrador para uma máquina, em alguns casos, não fazia sentido. E não tenho certeza do que é causa e do que é efeito, mas, sem exceção, todos os lugares que eu vi desenvolvendo o Windows nos quais os desenvolvedores tinham acesso de administrador também tinham MUITO mais produtividade em todos os desenvolvedores do que nos locais onde estavam bloqueados.

Philip Rieck
fonte
+1 porque você o coloca na perspectiva correta. Retire as preferências pessoais de desenvolvedores e administradores e concentre-se no que é importante para a organização como um todo.
amigos estão dizendo sobre
4

Eu acho que você está fazendo a pergunta errada, deveria estar perguntando:

Um bom desenvolvedor trabalha para um empregador que não lhe concede direitos de administrador em seu PC?

O que alguém “precisa” e o que espera geralmente não é a mesma coisa, afinal você não precisa permitir que um desenvolvedor tome café nas horas de trabalho, mas se você não…

(Certifique-se de deixar sua política clara na fase da entrevista; caso contrário, poderá haver pessoas que aceitam o cargo que desprezam sua empresa devido à falta de direitos de administrador - não espere que os programadores pensem de maneira lógica sobre esse tipo de coisa! )

Ian Ringrose
fonte
Admito que trabalho no ensino superior e sou um "administrador / programador de sistemas", como todos no meu grupo, por isso acho que minha experiência não é totalmente relevante. Mas não consigo imaginar trabalhar como desenvolvedor em uma loja que não me daria controle total sobre a minha estação de trabalho (escolha e instalação do SO, escolha de software etc.) e muito menos raiz disso.
Jason Antman
4

Na verdade, depende mais de quem você pergunta e de quem realmente precisa. Se você perguntar aos grupos corporativos de TI e de gerenciamento de riscos, eles estarão espalhados por você com histórias de horror (e, para lhe oferecer, eles exigem uma cabra sacrificada em um vínculo sagrado de promessa de que eles não serão responsabilizados), os desenvolvedores por outro lado, exige direitos de administrador, principalmente porque o trabalho é estressante e exigente o suficiente, sem a necessidade de solicitar permissão do suporte técnico para ocorrer um vazamento. O triste estado é que agora se trata mais de luta pelo poder e de exercer poder do que por necessidades de negócios e produtividade (por exemplo, resume-se a quem fará o outro pular em círculos)

IMHO, o melhor ambiente de trabalho que vi até hoje é onde os dois grupos estão sendo mantidos separados. Os desenvolvedores têm seu próprio domínio na floresta (em que a TI controla o que esse domínio e seus usuários podem fazer no resto da empresa) e todos são administradores locais com profissionais experientes, com o MCSE atuando como administradores de domínio local, eles têm seu próprio ambiente de teste e podem fazer praticamente o que desejam e precisam na LAN local com uma única política de TI (sem software pirata). A TI corporativa não é responsável e não oferece suporte aos desenvolvedores e aplica apenas algumas regras corporativas de alto nível (sem facebook, pornografia ou similar por meio de firewall, os desenvolvedores não permitem mexer com a LAN corporativa) e todos eles têm VPNs baseadas em RSA para trabalhar em casa o que os coloca diretamente dentro de sua LAN. Legal, não é?

mmix
fonte
2

É provável que a resposta seja subjetiva e específica para cada cenário individual, mas na maioria dos casos eu diria que sim.

joeqwerty
fonte
2

Eu diria que os direitos administrativos são importantes para o processo de desenvolvimento. Dada a relativa facilidade de usar uma VM para sandbox, não há razão para que você não possa colocá-las em uma VM e manter a segurança.

Qualquer coisa dá errado e você pode limpar e reconstruir em questão de minutos.

DivinusVox
fonte
2
Há uma boa razão para não prendê-los em uma VM - desempenho. Um desenvolvedor que trabalha em um aplicativo importante pode usar facilmente todos os bits de uma máquina de alta especificação, com grandes quantidades de RAM, HDD rápido, etc. Colocá-los em uma VM é o mesmo que devolvê-los de alguns anos atrás. Ótimo para segurança, mas não tão bom para produtividade.
John Gardeniers
1
Mas ótimo para forçar os desenvolvedores a escrever para as máquinas mais baixas oficialmente suportadas no projeto. Além disso, com servidores virtuais, podemos oferecer suporte à tolerância a falhas (e, em alguns casos, carga principal) para produtos ativos. Tudo uma questão de qual máquina / cluster sua VM é executado no.
DivinusVox
4
Não se trata de escrever para os requisitos mais baixos, é sobre o uso de ferramentas que exigem desempenho superior ao permitido pelas VMs. O uso do Visual Studio 2010 em uma VM é notavelmente menos responsivo do que no bare metal. O produto que você está escrevendo pode funcionar perfeitamente em uma VM, mas isso não significa que as ferramentas do desenvolvedor sempre funcionem.
Michael Shimmins
2

Definitivamente! Geralmente, grande parte do desenvolvimento que ocorre pode ou não estar em um ambiente virtual. Os direitos de administrador ajudam a superar muitas das substituições de manipulação de serviço, entradas do Registro e IIS localmente. Por outro lado, depende de quanta confiança você tem em seus desenvolvedores.

Como desenvolvedor, é frustrante quando algo não funciona porque não temos acesso.

Mike
fonte
2

Depende. Como desenvolvedor, deve-se sempre operar com o princípio de menos privilégios. Se você trabalha como contratado pelo governo, pode ser contratualmente obrigado a não ter acesso de administrador, por exemplo.

Como desenvolvedor de Java, quase não tenho necessidade de ter direitos de administrador em minha máquina continuamente . No entanto, existem casos legítimos em que você precisa de acesso de administrador sob demanda (ou seja, é necessário mover seu laptop por domínios fisicamente separados e alterar sua NIC de acordo.) Essa foi a única vez em que eu realmente precisei acesso administrativo permanente e contínuo à minha máquina.

Às vezes, você precisa de acesso de administrador porque a equipe de TI é insuficiente (ou incompetente ou atolada em burocracia.) "admin e instale o material para você, basta clicar neles.)

Então a resposta (novamente) é - depende. Você tem uma equipe de TI responsiva que pode instalar coisas sob demanda (ou dentro de um prazo razoável)? Os desenvolvedores realmente precisam dele para as tarefas pelas quais são pagos ?

Se os desenvolvedores precisarem verdadeira e legitimamente (como em "Eu literalmente não poderei fazer nada sem ele" ) em oposição a uma conveniência (como em "Quero instalar o que eu quiser" ) e se o suporte de TI não responde suficientemente (por qualquer motivo), então sim, eles devem ter acesso de administrador às suas máquinas.

Caso contrário, não. Lembre-se do princípio do menor privilégio , pessoal.

luis.espinal
fonte
2

Existem desenvolvedores e desenvolvedores. Se um "desenvolvedor" é um cara do jBoss de $ 40 / hora que escreve regras para um mecanismo de regras, é claro que não. Se um "desenvolvedor" é um funcionário de montagem / montagem de US $ 350 / hora, fazendo com que seu software de edição de vídeo seja executado o mais rápido possível em uma GPU, então sim, é claro.

ciência emocionante
fonte
1

Para as empresas preocupadas com a segurança, elas terão as pessoas de segurança ditadas e tentarão impor uma política que funcione com seu modelo de desenvolvimento e sistemas. Em um ambiente Windows, a maioria das pessoas diz que você deve ter direitos administrativos no host em que está desenvolvendo para executar suas tarefas.

Isto não é necessariamente verdade...

Você pode criar uma política personalizada e fazer com que todos os programas e funções funcionem com usuários de desenvolvimento em um sistema. Você só precisa se concentrar e se concentrar nos mínimos detalhes com permissões personalizadas nos diretórios do programa / sistema com grupos ou grupos personalizados, dependendo do design desejado.

A maioria das empresas dirá que é muito perigoso para os desenvolvedores ter sistemas em redes abertas porque os hackers podem ganhar controle e começar a compilar suas próprias ferramentas. Portanto, passar pela tarefa vale muito a pena, na minha opinião profissional.

Jason B Shrout
fonte
Embora o que você diz seja tecnicamente correto, também é um pesadelo implementar, manter e criar ambientes frágeis.
John Gardeniers
Eu preferiria o acesso total à rede dev e, em seguida, apenas conectar-me à rede corporativa pela Internet com uma VPN, se esse for um problema real. Eu também tenho muitos departamentos corporativos de TI que já me deram menos do que um bom ISP faz! Não há necessidade de um desenvolvedor para estar na mesma não filtrada rede como o departamento conta etc.
Ian Ringrose
1

Os desenvolvedores devem (idealmente) ter dois logins de domínio.

Um que tenha direitos de administrador local (para trabalho de desenvolvimento) e outro que tenha os mesmos direitos que todos os demais na empresa. Em seguida, eles podem testar seu trabalho em um conjunto representativo de permissões.

Isso deve reduzir a probabilidade de ItWorksOnMyMachine-itis aparecer ocasionalmente .....

Nick Haslam
fonte
0

Eu tenho que (aparentemente) fornecer a voz dissidente e dizer não apenas não, mas "diabos não". Não tenho problema em conceder direitos de administrador de desenvolvedores em uma VM em área restrita que não tem acesso à rede. Zypher quase acertou (correção em negrito):

"1.Ser administrador na minha caixa é um privilégio, NÃO um direito." Esses sistemas são ativos corporativos pelos quais sou responsável. Quando Joe Developer instala sua cópia pirata do Microsoft Bob ("porque eu precisava dela"), não será ele quem deve explicar como não foi encontrado antes da auditoria. Os desenvolvedores costumam pensar que, de alguma forma, as regras corporativas simplesmente não se aplicam a elas. Ao fornecer a eles uma VM em área restrita, eles podem seguir todas as regras que todos os demais devem seguir (já que agora apenas a TI pode copiar arquivos de e para o sistema). Magicamente, o sistema de solicitação é usado pelos desenvolvedores novamente, o céu não está mais caindo quando Joe Developer manipula sua caixa de desenvolvimento - ele apenas pede uma nova (ou uma restauração, se for solicitado backups)

O Sr. Denny mencionou os desenvolvedores que custam dinheiro quando precisam aguardar a instalação dos aplicativos. A. Olá ... meu tempo é geralmente tão valioso quanto o Joe Developer (geralmente mais desde que eu mantenho o crapware existente em execução - e eu realmente preciso mencionar todo o tempo gasto ajudando o desenvolvedor de Joe a depurar sua última obra-prima) e B. quando o desenvolvedor excede o orçamento, porque estava esperando por um aplicativo e tentava culpar a TI por isso, eu diria:

Sua falta de planejamento para o que você precisa escrever software não é de minha responsabilidade, temos um conjunto padrão de ferramentas e, se essa caixa de ferramentas estiver faltando, você deve ter recebido seus pedidos para que mais ferramentas sejam expedidas, em vez de tentar me fazer pular através de aros para obtê-lo para você, porque seu prazo é amanhã.

Dito tudo isso, trancar os desktops dos desenvolvedores fede, se você pudesse eliminar os desenvolvedores ruins que pensam que têm direito a assistir sua coleção baywatch e ficam indignados ao saber que não podem instalar o babewatch player para visualizá-los ("mas é código aberto "), talvez você possa relaxar. Porém, para todo grande desenvolvedor que "recebe", há mais 10 que sua empresa contratará para esse aplicativo vertical de 200 milhões de dólares, e é para isso que você precisa prestar atenção.

EDIT: Certianly é bem possível que os desenvolvedores aos quais eu tenha sido exposto sejam incomumente monótonos (pesquisando a safra atual, apenas 1 ouviu falar em stackoverflow, para fornecer algum nível de referência). O ponto de vista inicial com o qual começo é "o que você precisa fazer o que a empresa está pagando para você fazer". Se você precisa de direitos de administrador, você os obtém, mas não deve começar com eles, e se eu puder lhe dar uma caixa que, francamente, não me importo com o que você faz com isso e que funciona, então estamos prontos.

Jim B
fonte
14
Uau, o BOFH vive entre nós! Você fracassou no princípio básico de que nosso trabalho é principalmente o de permitir que todos os outros realizem seus trabalhos da melhor maneira possível, dentro dos limites impostos por políticas, requisitos legais etc. Não se trata de ditar arbitrariamente aos outros como eles devem funcionar simplesmente porque nos convém fazê-lo.
John Gardeniers
+1 no último parágrafo. Você pode eliminar todos os outros parágrafos se contratar apenas desenvolvedores decentes.
Robert Harvey
6
Uau - ame a nós e a mentalidade deles. Você considerou que o prazo "dele" também é realmente o seu "prazo", já que todos estão juntos (presumivelmente) para o benefício da empresa. Eu não te conheço de uma barra de sabão, mas você me lembra o administrador do sistema típico desagradável, arrogante, tentar encontrar uma maneira de dizer não-em vez de sim. Para todo mundo que administra um bom sistema, existem outros 10 contratados pela sua empresa que perpetuam o estereótipo que você acabou de criar e tornam muito mais difícil o resto da vida da empresa. Você deve se preocupar com a prestação de serviços, não com restrições.
Michael Shimmins
Abordei especificamente a maioria desses pontos em uma resposta: serverfault.com/questions/232416/…
Marc Gravell
1
Talvez você seja a razão pela qual os “desenvolvedores aos quais você foi exposto são extraordinariamente chatos”…. Uma empresa precisa decidir se deseja desenvolvedores que pensam livremente ou sem graça e não podem agir de uma maneira que os desenvolvedores que pensam livremente odeiam e esperam manter alguém à parte dos desenvolvedores sem graça. No entanto, desenvolvedores monótonos podem ser os melhores de muito trabalho corporativo.
Ian Ringrose