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?
user-permissions
Preet Sangha
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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/bin
diretó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.fonte
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 ....
fonte
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:
Se você deseja bloquear sistemas de desenvolvimento, considere o seguinte:
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!
fonte
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:
su
ousudo
ao usuário do aplicativo - que será bloqueado para não ter acesso ao shell. (Isto é para contabilidade / auditoria).sudoers
arquivo.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.
fonte
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).
fonte
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.
fonte
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.
fonte
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.
fonte
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:
Gostaríamos de colocar todas as pessoas com acesso de administrador em uma vlan "não confiável", mas nunca chegamos a isso.
fonte