Bloquear uma máquina de desenvolvedores é mais esforço do que vale? [fechadas]

19

Tendo trabalhado como desenvolvedor e em suporte / administrador de TI para uma equipe de desenvolvimento, deparei-me com muitos tipos diferentes de ambiente, desde o completamente bloqueado até o completamente não. Na minha experiência limitada de suporte, acho que tem sido menos esforço oferecer suporte a uma máquina menos travada e certamente achei que isso era mais fácil, mas é claro que isso poderia ser um viés. Gostaria de saber qual é a visão da perspectiva do suporte de TI. É realmente mais difícil oferecer suporte a desenvolvedores que não possuem máquinas bloqueadas?

Preet Sangha
fonte
10
Dado o grande segmento de programadores da população de falhas de servidor do Stack Overflow, aposto que isso sofre com o viés de seleção. Qual desenvolvedor realmente vai dizer: 'Bloqueie-me, por favor!'?
Romandas 06/04/09

Respostas:

11

O maior problema em não bloquear uma máquina de desenvolvedores é que qualquer software que eles desenvolvem exigirá privilégios totais de administrador para serem executados. O acesso dos desenvolvedores deve ser o mesmo do ambiente em que eles precisam rodar. Se eles precisam ser "auto-suportáveis" ou "auto-instaláveis", dê a eles outra conta de administrador, por exemplo, Bruce.admin, que eles precisam usar ao administrar o administrador. coisas, mas não usado no dia a dia.

Assim como nenhum administrador decente do UNIX que se preze, jamais usará uma conta root para seu trabalho diário de não administrador.

Bruce McLeod
fonte
14
Eu me ofendo ao "exigirá". Você está fazendo parecer uma conclusão precipitada de que os desenvolvedores naturalmente farão a coisa errada. Embora eu concorde que o desenvolvimento de software que é executado apenas com privilégios desnecessariamente altos é menos do que desejável, não acho que a TI deva tentar aplicar práticas de desenvolvimento específicas com medidas severas, como o bloqueio da máquina. Se a TI é uma parte interessada no processo para definir os requisitos de aplicativos - e deve ser para aplicativos internos - faça com que seja um requisito que os aplicativos sejam desenvolvidos e testados para serem executados com privilégios mais baixos.
27909 Chris W. Rea
Mas acho que a idéia de uma conta separada tem mérito. Mas não force isso em mim, é tudo.
27720 Chris W. Rea
4
No Windows, é melhor fazer o contrário. Faça contas de teste que se comportem com as permissões de um usuário padrão. Os aplicativos podem ser testados efetuando login na máquina (ou VM) como a conta de usuário de teste.
ConcernedOfTunbridgeWells
3
Eu formei a opinião "exigirá" com base em meus 15 anos de experiência em testes técnicos. Claro que existem exceções, mas a maioria dos aplicativos no Windows não é projetada para menos privacidade, e isso não ocorre porque os desenvolvedores naturalmente farão a coisa errada, é porque é realmente difícil de executar corretamente.
23411 Bruce McLeod
1
tendo usado milhares de aplicativos diferentes, apenas 5% deles precisavam de direitos de administrador sem motivo real.
Mircea Chirea
55

A maioria dos desenvolvedores é tecnicamente experiente e sabe o que está fazendo. Geralmente, eles precisam instalar muitos aplicativos especializados, ter que obter permissão para fazer isso e fazer com que a TI desça e adicione-a pode ser muito frustrante, principalmente em empresas maiores, para ambos os lados.

Eu descobri que o que funciona melhor é permitir que eles façam o que querem com relação à instalação de software em suas máquinas, mas se eles tiverem problemas com algo que não suportamos, eles estarão por conta própria. A maioria dos desenvolvedores está feliz com isso e prefere poder cuidar de sua própria máquina de qualquer maneira.

Bloquear alguém na contabilidade para usar apenas o IE e o open word é bom, mas se você é um desenvolvedor que precisa instalar 4 tipos diferentes de navegador e precisa instalar rapidamente um aplicativo para resolver um problema, isso pode ser irritante.

Minha experiência é que as empresas que possuem muito conhecimento técnico, portanto, oficinas de desenvolvimento, fornecedores de TI etc., confiam em seus funcionários e permitem que eles decidam o que desejam instalar são muito mais felizes e incomodam menos a TI.

Sam Cogan
fonte
10
Se eu pudesse votar nessa resposta várias vezes, eu o faria. Sou desenvolvedor e concordo com 110%. +1
Chris W. Rea
1
@ cwrea: Qual poderia ser o excesso de 10%?
Setzamora 29/05/09
3
Eu concordo, mas as empresas que são muito rigorosos em termos de segurança da informação, nunca permitirá que aplicativos a serem instalados que não são "os padrões da empresa"
setzamora
Tendo acabado de tirar meus direitos de administrador, estou enviando um e-mail para o Suporte a cada meia hora para obter isso ou aquilo ou alterar essa configuração ou aquela configuração. Um tema comum para verificar as datas de implantação era clicar duas vezes na hora na área de notificação. Algo que eu agora "não tenho o nível de privilégio adequado" para ... Está me deixando louco!
1
Embora dizer que 'se você desinstalá-lo, não há suporte', tudo fica bem, praticamente se transforma em um desenvolvedor reclamando com seu chefe que o software xyz não funciona e o Systems / helpdesk não vai me ajudar. Boss é abatido por seu colega, e a próxima coisa que você sabe é que um gerente / diretor / vice-presidente está respirando no pescoço de alguém sem se importar que não seja suportado, apenas conserte-o agora. Agora, o Systems / Helpdesk precisa oferecer suporte ao programa aleatório xyz para o desenvolvedor a e ao programa aleatório abc para o desenvolvedor b. Se você realmente precisar, coloque-o nos canais.
Zypher 04/06/09
14

Veja esta postagem do Stackoverflow para um debate animado sobre os méritos de bloquear as máquinas do desenvolvedor. (Isenção de responsabilidade: escrevi a resposta aceita).

Do ponto de vista do administrador de sistemas, o acesso aos sistemas de produção é sensível e você deve restringir esse acesso às pessoas que precisam dele para realizar seu trabalho (isso pode incluir desenvolvedores com responsabilidades de suporte de nível 3 para o aplicativo). Os direitos de administrador local sobre um PC ou servidor de desenvolvimento não comprometem significativamente a segurança de seus sistemas de produção.

Faça uma imagem que você possa usar para reconstruir as máquinas, se necessário. A instalação manual da edição para desenvolvedor do SQL Server, Visual Studio, Cygwin e MikTex, além de vários outros aplicativos, consome muito tempo. Uma imagem com esses aplicativos grandes instalados será razoavelmente valiosa se você precisar reinventar muito as máquinas.

De uma perspectiva de desenvolvimento, acho que posso resolver a maioria dos problemas com a máquina e, normalmente, só preciso da ajuda da equipe de suporte de rede em ocasiões bastante raras. Ambientes excessivamente restritivos tendem a gerar tráfego espúrio de suporte a desenvolvedores para fazer o trabalho que os desenvolvedores são perfeitamente capazes de fazer.

Outro local em que os desenvolvedores tendem a precisar de muito trabalho administrativo é em servidores de banco de dados que hospedam ambientes de desenvolvimento. A maioria dos desenvolvedores é capaz de aprender tarefas rotineiras de DBA facilmente e, de qualquer maneira, deve obter um conhecimento prático disso (IMHO, em princípio). Políticas de acesso de administrador excessivamente restritivas nos servidores de desenvolvimento podem ficar sob os pés de várias maneiras.

Uma rede de desenvolvimento de riscos é uma boa idéia se puder ser organizada - você pode fazer o firewall dos servidores de produção, se necessário.

  • Quando os desenvolvedores podem replicar facilmente a estrutura de um ambiente de produção, eles promovem uma cultura de teste de implantação, na qual um teste de integração pode ser sintetizado sem passar despercebido. Isso tenderá a melhorar a qualidade da liberação e implantação da produção.

  • Ser capaz de emular um ambiente de produção também aumenta a conscientização sobre os problemas de implantação e suporte da produção. Ele incentiva a equipe de desenvolvimento a pensar em como um aplicativo pode ser suportado na produção, o que provavelmente incentivará arquiteturas criadas com isso em mente.

  • Se esta rede tiver um controlador de domínio, você poderá estabelecer uma relação de confiança para confiar no seu controlador de domínio principal e em suas contas. Essa relação de confiança não precisa ser recíproca, portanto não compromete a segurança da infraestrutura de rede de produção. Isso pode permitir que você tenha uma rede de desenvolvimento não confiável, mas ainda permite que os desenvolvedores acessem recursos autenticados por domínio, como contas do Exchange ou servidores de arquivos.

  • Você deseja que os desenvolvedores tenham uma quantidade razoável de espaço para experimentação sem ter que pular os bastidores. A colocação de obstáculos políticos no caminho desse trabalho tende a incentivar soluções de gesso politicamente convenientes, mas que geram dívida técnica de longo prazo (e muitas vezes não reconhecida). Como administrador de sistemas ou analista de suporte, adivinhe quem pode pegar as peças ...

Acrescentarei que isso é muito menos um problema em um ambiente unix ou linux; os usuários podem personalizar bastante seu próprio ambiente .profile. Você pode compilar e instalar coisas em seu próprio /home/bloggsj/bindiretório para o deleite do seu coração. 'Direitos administrativos locais' é principalmente um problema do Windows, embora ainda existam algumas coisas que precisam de acesso root no Unix.

ConcernedOfTunbridgeWells
fonte
Eu queria comentar sobre o seu último ponto. Você menciona "obstáculos políticos" - lembre-se de que a intenção original das práticas de segurança é tudo menos política. Mais tarde, isso pode se transformar em algo mais, porque todas as organizações acabam adquirindo pessoas que seguem a letra, mas não a intenção da regra - ou pior, pervertem políticas outrora nobres em mulheres. Mas boa segurança e boa política podem andar de mãos dadas. Porém, são necessários esforços de boa-fé de todos os envolvidos.
quux
Geralmente, políticas gerenciadas de maneira razoável não geram esse tipo de obstáculo político ou, pelo menos, não o tornam intransponível. No entanto, a política tende a ser desenvolvido incidente por incidente e nem sempre é 'razoável'
ConcernedOfTunbridgeWells
8

A opção mais sensata que eu já vi (já esteve nos dois lados - e ainda estou -) é simplesmente coisas desbloqueadas e sem suporte também. Dê a eles liberdade e, se eles estragarem, tudo o que eles podem obter é um descanso com uma imagem padrão ... Nessa situação, acho um bom plano colocá-los em alguma forma de rede "não confiável".

No que diz respeito ao (não) senso de bloquear desktops de desenvolvedores: tenho certeza de que todo o bloqueio apenas atrapalha a produtividade, além disso, qualquer desenvolvedor razoavelmente qualificado encontrará facilmente os buracos ....

Vincent De Baere
fonte
2
Recebo cerca de 20 minutos de suporte e, em seguida, a oferta de uma nova imagem. Funciona bem para nós.
Preet Sangha
6

A resposta é realmente: não existe uma resposta simples, sim ou não. Mas a segurança é pelo menos tão importante para seus usuários de desenvolvimento quanto para qualquer outra pessoa.

Por um lado, sim, os desenvolvedores tendem a ser tecnicamente mais experientes. Por outro lado, o trabalho deles costuma ser estressante e seus marcos de desenvolvimento provavelmente terão prioridade sobre os cuidados extras necessários para manter o próprio sistema como um ambiente seguro. Isso não é uma crítica aos desenvolvedores; é uma consideração franca de seus deveres diários.

Se você deseja fornecer aos desenvolvedores acesso completo e sem restrições aos sistemas deles, considere as seguintes medidas adicionais:

  • Forneça outro sistema, bloqueado tanto quanto os sistemas de usuário normais, para uso normal não-dev.
    • Eles colocam suas máquinas dev de acesso completo em uma VLAN especial, com acesso apenas aos recursos dev.
  • Pergunte se alguma coisa impediria que um sistema infectado colocasse em risco a base de código. Poderia uma máquina backdoor verificar código maligno ou eliminar a base de código nas mãos de um hacker hostil? Tome as medidas apropriadas para mitigar esse risco.
  • Da mesma forma, pergunte se alguma coisa protege os dados corporativos mantidos nos sistemas aos quais os desenvolvedores têm acesso.
  • Faça regularmente o inventário de software e a auditoria de segurança dos sistemas de desenvolvimento.
    • Tenha uma idéia do que eles estão executando e use essas informações para criar suas imagens de reimplementação do sistema de desenvolvimento.
    • Mais cedo ou mais tarde, você terá um desenvolvedor que fica descuidado e instala coisas que são claramente perigosas ou completamente não relacionadas ao trabalho. Ao enviar avisos rapidamente quando isso acontece, você avisa a comunidade dev que sim, alguém está assistindo e eles têm a responsabilidade de permanecer dentro dos padrões razoáveis.
  • Você está fazendo verificações regulares de malware? Em alguns casos, os desenvolvedores reclamam com razão do imposto de desempenho cobrado pelos sistemas AV ao acessar (os sistemas AV que estão sempre ativados, sempre verificando todos os acessos a arquivos). Pode ser preferível mudar para uma estratégia de varredura noturna e / ou criar exclusões de arquivos / pastas para a varredura ao acessar. Certifique-se de que os arquivos excluídos sejam verificados de outra maneira.
    • Seus desenvolvedores habilitados para administrador podem desativar toda a verificação AV? Como você detectaria e remediar isso?

Se você deseja bloquear sistemas de desenvolvimento, considere o seguinte:

  • Você tem capacidade de suporte para responder rapidamente às solicitações de suporte? Considere a taxa média de pagamento de seus desenvolvedores e pergunte se eles merecem ou não um SLA de tempo de resposta mais rápido. Provavelmente não faz sentido manter seu desenvolvedor de US $ 120 mil (que é a chave para um projeto multimilionário) esperando enquanto você lida com solicitações de suporte de funcionários de US $ 60 mil / ano.
  • Você tem uma política clara e inequívoca sobre quais solicitações de suporte você fará e não atenderá aos seus desenvolvedores? Se eles começam a ficar a sensação de que o apoio é arbitrária, você vai , eventualmente, sentir a dor.

De qualquer forma, você precisa admitir que os desenvolvedores são um caso especial e precisam de suporte extra de algum tipo. Se você não está orçando para isso, os problemas provavelmente estão piorando agora ... ou serão no futuro.

Como uma observação lateral, vi argumentos muito semelhantes ocorrerem com administradores de sistemas. Em pelo menos dois trabalhos diferentes, vi os administradores de sistemas argumentarem de maneira bastante sombria quando foi sugerido que eles próprios deveriam ter bloqueado os sistemas ou pelo menos usar dois logins (um com privs root / admin; outro sem). Muitos administradores de sistemas achavam que não deveriam ser trancados de maneira alguma e argumentavam vigorosamente contra tais medidas. Mais cedo ou mais tarde, algum administrador avesso ao bloqueio teria um incidente de segurança e o exemplo teria um efeito educacional em todos nós.

Eu costumava ser um daqueles administradores de sistemas que corria com administradores privados o tempo todo. Quando fiz a alteração para contas duplas e apenas aumentei a necessidade, admito que foi bastante frustrante durante os primeiros meses. Mas o lado positivo da nuvem foi que eu aprendi muito mais sobre a segurança dos sistemas que estava administrando, quando minha conta normal vivia sob as mesmas restrições que eu impunha aos usuários. Isso me fez um administrador melhor! Eu suspeito que o mesmo se aplica aos desenvolvedores. Felizmente, no mundo Windows, agora temos o UAC, o que facilita a execução como um usuário limitado e eleva apenas quando necessário.

Pessoalmente, não acho que alguém deva estar acima de alguma forma de práticas de segurança. Todos (administradores de sistemas, desenvolvedores, gerenciamento superior incluído) devem estar sujeitos a procedimentos e supervisão de segurança suficientes para mantê-los alerta. Dizer o contrário é dizer que os sistemas e dados da empresa não valem o esforço para proteger.

Vamos colocar de outra maneira. Se Mark Russinovich pode ser capturado por um rootkit , qualquer um pode!

quux
fonte
3

Onde você tem alguns desenvolvedores, a abordagem para fornecer a eles servidores de desenvolvimento é uma possibilidade, mas se você tem um andar inteiro de desenvolvedores, sou totalmente contra conceder a eles quaisquer direitos de administrador.

O problema é que você acabará com um andar inteiro de desenvolvedores, cada um fazendo o que faz, geralmente a maioria nem sequer tem consciência da segurança e só quer que o aplicativo funcione. Em seguida, você receberá uma solicitação de - "Concluímos a fase de desenvolvimento, replique nosso ambiente de desenvolvimento em teste, pré-produção e produção".

Eles também adquirem o hábito de instalar lixo aleatório (software mal empacotado) e, em seguida, delegam para instalá-lo em mais ou menos uma dúzia de servidores nas outras camadas.

Eu simplifico a política:

  • Os desenvolvedores NÃO obtêm acesso root - nunca - para o ambiente de desenvolvimento.
  • Os desenvolvedores obtêm acesso root aos servidores VMware pré-dev, mas NÃO oferecem suporte.
  • Os desenvolvedores devem fornecer pacotes RPM que pertencem à distribuição do SO no qual seu aplicativo será executado, OU pacotes RPM que estejam em conformidade com o FHS e LSB.
  • Em nenhum caso, nenhum de seus aplicativos pode ser executado como root
  • O usuário não terá acesso ao suou sudoao usuário do aplicativo - que será bloqueado para não ter acesso ao shell. (Isto é para contabilidade / auditoria).
  • Quaisquer comandos que eles precisem executar com acesso privilegiado deverão ser explicitamente solicitados e aprovados - quando serão adicionados ao sudoersarquivo.
    • Nenhum desses comandos / scripts será gravável por eles.
    • Nenhuma referência de script (direta ou indiretamente) por esses comandos será gravável por eles.

Acima, acima de tudo, eles devem pensar sobre o que será e o que não será permitido quando chegar a hora de mover o projeto para os servidores de teste e acima.

Xerxes
fonte
2

Bloquear as máquinas dos desenvolvedores exige mais esforço do que vale a pena. Isso prejudica seriamente a produtividade, pois você não pode fazer praticamente nada sem direitos administrativos. É claro que, eventualmente, o sistema ficará confuso, mas certamente seu departamento de TI não está fornecendo suporte para todas as ferramentas de terceiros usadas no desenvolvimento?

Portanto, como sugeriu Vincent De Baere, o melhor curso de ação seria apenas restaurar o sistema a partir de uma imagem, é claro, o ambiente deve ser restaurado depois disso, mas esse não deve ser o problema da TI. Se isso acontecer N vezes, você poderá colocar uma pessoa em uma "lista negra" e, sim, abandonar seus direitos administrativos por um tempo.

De qualquer forma, o ambiente deve ser configurado de uma maneira que garanta que uma máquina infectada (ou confusa) não afete nenhuma outra máquina ou, por exemplo, não envie spam ou algo assim (ok, agora Só estou dizendo coisas óbvias, desculpe).

shylent
fonte
1

Bem, isso pode depender em parte do ambiente em que você está executando (por exemplo, Linux versus Windows); no entanto, assumindo um ambiente Windows, geralmente é mais complicado do que vale a pena, simplesmente porque alguns dos softwares de desenvolvimento existentes exigem que você tenha permissões elevadas para trabalhar. Por exemplo, sabe-se que o Visual Studio requer permissões de administrador ; portanto, não vejo o benefício de fazer alguém pular os bastidores para uma parte necessária de seu trabalho.

No entanto, se a empresa exigir que as coisas sejam travadas, sua melhor aposta provavelmente dará a todos os desenvolvedores máquinas virtuais em seus sistemas nos quais eles podem enlouquecer. Embora alguns possam não gostar muito disso, provavelmente oferecerá o melhor de ambos mundos (por exemplo, área de trabalho normal restritiva e um ambiente totalmente personalizável).

Atualização - No lado do Windows, vale a pena notar um pouco mais, aparentemente o Visual Studio que requer direitos de administrador é um pouco antigo e agora existem maneiras explícitas de definir as permissões necessárias (arquivo PDF). No entanto, não acho que isso mude minha opção, já que muitos desenvolvedores que conheço, inclusive eu, tendem a usar ferramentas adicionais além do Visual Studio e saber o que todos eles precisam em termos de permissões pode ser difícil de prever.

anônimo
fonte
É verdade que a Microsoft recomenda que o VS2005 seja executado como administrador. Mas Michael Howard, um dos principais profissionais de segurança de software da MS, diz que 99% das vezes funciona bem como não-administrador: blogs.msdn.com/michael_howard/archive/2007/01/04/… ... se a segurança for importante para você, tente executá-lo como não administrador. Uma agradável surpresa provavelmente espera por você!
quux
1

Concordo com a noção de usar máquinas virtuais em cima de uma área de trabalho restrita.

A menos que seja necessário, sinto que a melhor configuração é um desktop linux restrito com uma VM livre para todos no topo. O Linux diminui a sobrecarga para mim, uma vm pode não apenas ser o sistema operacional que eles desejam, mas também ser restaurada para instantâneos ou backups, e geralmente o mundo parece um pouco mais brilhante quando não há muitas configurações diferentes que precisam Apoio, suporte.

Casey K
fonte
+1 .. Não entendo por que as VMs são tão subutilizadas. Não apenas para o propósito que você mencionou, mas a distribuição de software seria muito mais fácil usando VMs.
1

Eu (como um dev eu) prefiro ter controle total da minha maquinaria, ou seja; executando como administrador quando necessário.

Você pode fornecer treinamento especial para os desenvolvedores antes que eles tenham acesso total a seus computadores. Defina algumas regras para eles e talvez você possa fazer uma auditoria de vez em quando para ver se elas seguem as práticas recomendadas.

Principalmente, eles precisam saber mais sobre a infraestrutura de TI na visão de administrador / suporte de TI, assuntos relacionados à segurança e por que não desenvolver com direitos elevados. (e como garantir que você não ...)

"Não confie cegamente em nós quando dizemos que sabemos tudo o que precisamos saber sobre computadores" ;-)

Você ainda precisará apoiá-los com rede, domínio e conta, instalação de software de ferramentas não-dev etc.

Arjan Einbu
fonte
Só mais uma coisa: Certifique-se de que temos AV apropriado instalado ... à força se necessário ... ;-)
Arjan Einbu
1

Minha experiência é com uma população de usuários dividida igualmente entre pessoas que precisam apenas de uma máquina bloqueada e outras (desenvolvedores, cientistas) que precisam de acesso de administrador. As pessoas sofisticadas usavam muitos softwares diferentes, alguns internos, outros não, mas muitos deles precisavam ser administrados pelo administrador e seus trabalhos exigiam que eles usassem muitos pacotes, por isso fazia mais sentido deixar as pessoas usarem. eles mesmos.

Terminamos com os seguintes processos:

  • Nossa imagem padrão possuía as ferramentas básicas: Windows, Office, Anti-virus, Acrobat, alguns utilitários.
  • Fornecemos muito espaço em disco na rede: o suficiente para que tudo possa ser armazenado na rede. A única exceção foram os arquivos de vídeo em processo que precisavam permanecer locais.
  • A equipe (em consulta com seus supervisores) tinha duas opções: a TI mantinha seu PC, fazendo todas as instalações e configurações OU poderia ter acesso de administrador para fazer isso sozinho. Nos dois casos, foi feito backup de todos os dados na rede.
  • Se a TI mantivesse o sistema e ele morresse, o colocaríamos de volta ao estado em que estava, incluindo a adição de software extra necessário para a instalação.
  • Se eles tivessem acesso de administrador e o sistema morresse, daríamos uma olhada e tentaríamos corrigi-lo, mas nosso compromisso era devolvê-los à imagem padrão e eles teriam que levá-la a partir daí. Se eles tivessem dados locais, tentaríamos obtê-los primeiro, mas nosso SLA era apenas para obter um PC padrão e funcional o mais rápido possível.
  • Qualquer pessoa com acesso de administrador era necessária para saber como garantir que as atualizações do Windows estivessem funcionando, para manter o antivírus e o antimalware atualizados.

Gostaríamos de colocar todas as pessoas com acesso de administrador em uma vlan "não confiável", mas nunca chegamos a isso.

Ala - Restabelecer Monica
fonte