Os desenvolvedores devem ter permissões de administrador em seu PC ou estão dando a eles acesso de usuário avançado suficiente?
Alguns comentários:
- Se eles quiserem experimentar um novo aplicativo que precisaria ser instalado, eles poderiam experimentá-lo em uma máquina virtual e depois solicitar ao administrador da rede que o instalasse para eles. Você acha que isso funcionaria?
- Existe algo que um desenvolvedor precise fazer em seu PC que exija permissões de administrador?
Somos uma equipe de 5 desenvolvedores e desenvolvemos aplicativos da web
development-environment
Craig HB
fonte
fonte
Respostas:
A resposta é sim'. Os desenvolvedores precisam seguir as configurações do sistema para testar itens, instalar software (se nada mais, para testar o processo de instalação do que quer que eles estejam desenvolvendo), cutucar o registro e executar o software que não funcionará corretamente sem privilégios de administrador (apenas para listar alguns itens). Existem várias outras tarefas essenciais ao trabalho de desenvolvimento que exigem privilégios de administração.
Tendo em mente que a equipe de desenvolvimento não tem necessariamente acesso root aos sistemas de produção, os direitos de administrador em um PC local não comprometem significativamente a segurança dos sistemas de produção. Quase não há razão operacional legítima para restringir o acesso de administrador aos PCs locais para a equipe que precisa dele para fazer seu trabalho.
No entanto, o motivo mais importante para fornecer acesso administrativo é que a configuração de um ambiente de desenvolvimento comprometido ou de segunda taxa envia uma mensagem para sua equipe de desenvolvimento:
Geralmente, fornecer um ambiente de trabalho de segunda categoria (e muito fundamentalmente defeituoso) para a equipe de desenvolvimento é uma receita para as consequências naturais de irritar sua equipe - incapacidade de reter pessoas competentes, alta rotatividade de pessoal, moral ruim e entrega de baixa qualidade. Sair do seu caminho para fazê-lo - especialmente se houver um tom de pandering ao capricho burocrático - é simplesmente irresponsável.
Lembre-se de que a rotatividade de sua equipe não implica apenas custos de substituição da equipe. O custo mais sério da rotatividade de pessoal é que a maioria dos que ficam por aí será a madeira morta que não consegue um emprego melhor. Com o tempo, isso degrada as capacidades dos departamentos afetados. Se o seu setor estiver suficientemente próximo, você também poderá obter uma reputação.
Um ponto a ser observado é que os privilégios administrativos são muito menos problemáticos para o desenvolvimento em sistemas unix-oid ou mainframe do que no Windows. Nessas plataformas, um usuário pode fazer muito mais em seu próprio domínio sem precisar de permissões para todo o sistema. Você provavelmente ainda desejará acesso root ou sudo para desenvolvedores, mas não ter isso será muito menos frequente. Essa flexibilidade é uma razão significativa, mas menos conhecida, da popularidade contínua de sistemas operacionais derivados de unix nas escolas de Ciência da Computação.
fonte
Os desenvolvedores devem ter controle total e total da máquina que estão usando. A maioria das ferramentas de depuração requer permissões de administrador para se conectar ao tempo de execução do aplicativo que eles estão criando.
Além disso, os desenvolvedores frequentemente baixam e experimentam coisas novas. Adicionar etapas adicionais, como a necessidade de um administrador de rede e instalar algo para eles, frustra o desenvolvedor e rapidamente tornará a vida um inferno para a pessoa de operações de rede.
Dito isto, eles devem ser um administrador em SUA caixa, não na rede.
fonte
Sim e não.
Sim, economiza muito tempo incomodando o suporte ao sistema.
Não, seus usuários não o possuem, portanto não conte com isso.
Desenvolvemos com permissões de administrador e testamos sem. O que dá certo.
fonte
Administrador local sim, por todos os motivos mencionados acima. Administrador de rede não, porque eles inevitavelmente serão atraídos para tarefas de administração de rede porque "eles podem". Devs deve estar desenvolvendo. A administração de rede é um trabalho totalmente diferente.
fonte
Os desenvolvedores normalmente precisam fazer coisas que a pessoa comum não faria e, portanto, normalmente devem ter contas de administrador. Fazê-los pular através de aros estranhos desperdiça seu tempo e os desmoraliza. Pode haver exceções em situações de alta segurança, mas se você não pode confiar em alguém com uma conta de administrador, com certeza não pode confiar no código deles.
Eles também devem ter uma conta disponível com a mesma permissão que seus usuários (mais de uma conta se o pool de usuários tiver status de permissão diferente). Caso contrário, eles podem apenas desenvolver algo interessante, implantá-lo e depois descobrir que não funcionará para os usuários.
Também existem muitas maneiras de danificar computadores com contas de administrador (sim, eu fiz isso). O departamento de TI precisa de uma política que recrie novamente o computador de um desenvolvedor se não conseguir consertá-lo rapidamente. Em um local em que contratei, tive que assinar uma cópia dessa política para obter minha conta de administrador.
Esta é uma resposta bastante específica para o Windows. No Linux e em outros sistemas Unix-y, os desenvolvedores costumam se dar bem apenas com contas de usuário, geralmente não precisam de outra conta para teste (se eles têm uma conta com a qual podem fazer sudo, eles sabem quando estão usando o sudo, mas eles podem precisar de um com as mesmas permissões de grupo) e podem causar danos incríveis ao sistema operacional com muita facilidade; portanto, a mesma política de TI é necessária.
fonte
Sim, o Half-Life 1 (e todos os mods relacionados: contra-ataque, dia da derrota, etc.) precisam de direitos de administrador (pelo menos para a primeira execução, acho) para funcionar corretamente no Windows NT, 2000, XP, etc. .
E que tipo de desenvolvedor não joga Counter Strike na hora do almoço? (uma porcaria, com certeza)
fonte
Tendo suportado a dor de ter que se desenvolver sem direitos de administrador na máquina, minha resposta só pode ser sim, é essencial.
fonte
Absolutamente! De que outra forma eu instalaria o gerenciador de downloads para baixar filmes à noite?
Às vezes, os desenvolvedores realmente precisam instalar coisas ou mudar alguma coisa no sistema para testar alguma idéia. Será impossível se você precisar ligar para o administrador sempre que precisar alterar alguma coisa.
Também tenho minha observação pessoal de que alguns administradores tendem a estragar tudo o que é possível, a fim de fazer com que pequenas coisas dependam deles diariamente assim ... o que, assegurando seu emprego? irritando os outros usuários? Não tenho resposta. Mas o bom senso não é visto aqui.
Na última vez que houve um problema no meu PC, participei ativamente da restauração do sistema, fazendo algumas sugestões trabalhando em equipe com o administrador, ou então pensei ... Admin ficou muito zangado e me acusou de tentar ensinar ele ou redefinir as regras. Suponho que era apenas o ego dele, pois ele não era visto tão legal em nosso quarto entre outros colegas.
fonte
A resposta é: os desenvolvedores devem ter 2 máquinas !!
Um desenvolvimento que possui direitos de administrador e energia, memória, tamanho de tela e portabilidade suficientes e privilégios de ADMIN, com software antivírus corporativo carregado mas configurável pelo desenvolvedor quando exigido pela política de conjunto automático.
Um corporativo que possui carga corporativa, políticas, privilégios de usuário não administrador, etc ... O desenvolvedor pode usar este para aplicativos de modo de liberação de teste de unidade, pois alguns desenvolvedores têm o hábito desagradável de fazer todos os testes de unidade com privilégios de administrador.
fonte
Se você inverter a pergunta, acho que fica mais fácil responder; devemos remover permissões de administrador dos desenvolvedores? Qual é o ganho?
Mas, na verdade, acho que a resposta depende do seu contexto, do seu ambiente. Uma pequena startup terá uma resposta diferente para a agência governamental com certificação ISO.
fonte
Sim, mas eles precisam estar cientes das limitações que seus usuários enfrentarão ao executar o software em um ambiente mais limitado. Os desenvolvedores devem ter acesso fácil a ambientes "típicos" com recursos e permissões limitados. No passado, eu incorporava a implantação de compilações em um desses sistemas "típicos" (geralmente uma VM em minha própria estação de trabalho) como parte do processo de compilação, para que eu pudesse sempre ter uma idéia rápida de como o software funcionava em um máquina do usuário.
Os programadores também têm a responsabilidade de conhecer as regras rígidas e rápidas de escrever software para usuários não administradores. Eles devem saber exatamente quais recursos do sistema eles sempre têm permissão (ou são proibidos) de acessar. Eles devem conhecer as APIs usadas para adquirir esses recursos.
"Funciona na minha máquina" nunca é uma desculpa!
fonte
Como administrador de sistemas, sou a favor de desenvolvedores com direitos de administrador local em suas estações de trabalho. Quando possível, não é uma má idéia fazer a maioria das coisas com uma conta padrão no nível de 'usuário' e, em seguida, usar outra conta 'admin' para fazer alterações, instalar aplicativos etc. Muitas vezes você pode usar sudo ou runas para realizar o que deseja, mesmo sem fazer logon Fora. Também é útil nos lembrar de quais são os problemas de segurança que os usuários finais terão que passar ao liberar para produção.
Em uma nota lateral, também é aconselhável ter um sistema [limpo] ou VM (s) para que você possa testar as coisas corretamente e não entrar no cenário "parece / funciona bem no meu sistema" devido a ajustes no sistema.
fonte
Nenhum usuário avançado
Antes de tudo, o Usuário avançado é basicamente um administrador - portanto, " limitar " um usuário ao Usuário avançado não fornece nenhum aumento de segurança ao sistema - você também pode ser administrador.
Faça logon interativamente como um usuário normal
Segundo, é claro que um desenvolvedor precisa de acesso administrativo à sua máquina de desenvolvedor (e servidores e segundas caixas e assim por diante), mas é claro que ninguém deve fazer logon interativamente como administrador durante o desenvolvimento ou teste normal. Use uma conta de usuário normal para este e muitos aplicativos.
Você realmente não deseja executar [inserir nenhum navegador, plug-in, mensagem instantânea, cliente de e-mail e outros] como administrador.
Normalmente, você também não faz logon na sua caixa do Linux como root, mesmo que tenha acesso root quando precisar.
Use uma conta de administrador pessoal separada
Forneça ao desenvolvedor uma conta de administrador pessoal separada em sua máquina (preferencialmente na conta de domínio), que também é um administrador válido em outros servidores de desenvolvimento / teste e caixas às quais a pessoa precisa de acesso administrativo.
Utilize "executar como" e no Vista + UAC para solicitar ou solicitar prompt e insira as credenciais administrativas para tarefas e processos somente quando necessário. PKI com cartões inteligentes ou similar pode reduzir bastante a tensão na inserção de credenciais com frequência.
Todo mundo está feliz (ou?;)
Em seguida, audite o acesso. Dessa forma, há rastreabilidade e uma maneira fácil de descobrir quem está usando as sessões de serviços de terminal em um servidor de desenvolvimento / teste específico que você precisa acessar agora ...
É certo que há definitivamente um trabalho de desenvolvimento que nunca exigirá privilégios de administrador local - como a maioria do desenvolvimento da Web, onde a implantação é testada em um servidor ou máquina virtual separada e onde o cassini ou o que é usado para depuração local realmente funciona bem como um usuário normal.
fonte
Trabalho principalmente no mundo * nix e no modelo padrão para os desenvolvedores trabalharem em uma conta de usuário normal e sem privilégios, com a capacidade (via
sudo
ousu
) de escalar para privilégios de administrador conforme necessário.Não sei ao certo qual seria o arranjo equivalente do Windows, mas, na minha experiência, a configuração ideal:
Por um lado, ter direitos de administrador disponíveis sob demanda fornece ao desenvolvedor todo o poder sobre sua estação de trabalho, quando necessário.
Por outro lado, o software Windows tem uma longa e longa história de suposição de que todos os usuários têm direitos de administrador, a ponto de muitos programas não serem executados para um usuário não administrador. Muitos dos problemas de segurança do Windows decorrem diretamente desse requisito implícito de que, para poder usar o computador com confiabilidade, todos os usuários devem ser administradores. Isso deve mudar e a maneira mais eficaz de garantir que seu software seja executado para usuários não administradores é que seus desenvolvedores os executem como usuários não administradores.
fonte
[desculpas inglês não é minha língua materna, fazendo o meu melhor :)] Bem,
Experiência pessoal (eu sou um desenvolvedor c ++ / SQL):
Eu costumava ser administrador da minha máquina Windows no meu trabalho anterior. Eu também tinha direitos dbo (não dba) em bancos de dados, incluindo bancos de dados do ambiente de produção. Em 2 anos e meio, com 8 pessoas com esses altos direitos loucos ... nunca tivemos problemas. Na verdade, resolvemos muitos problemas atualizando o db manualmente. Poderíamos fazer muitas coisas rapidamente para hot fixes e desenvolvedores.
Agora mudei de emprego. Eu consegui (chorando muito) ser administrador da minha máquina Windows. Mas o servidor dev é um servidor red hat ao qual nos conectamos usando ssh. Tentar instalar o Qt foi uma tortura, limites de cota, limites de espaço, execução e direitos de gravação. Finalmente desistimos e pedimos ao administrador para fazer isso por nós. 2 semanas depois ainda nada está instalado. Estou ficando muito rápido lendo jornais e pressionando alt + tab.
Eu pedi direitos de administrador, pois apenas o desenvolvedor do meu soft usa esta máquina.
-> Resposta: "Se houver processos para você não fazer o que quiser. Ele deve funcionar bem uma vez no prod".
-> Tentando explicar a um gerente não técnico: "Não terei direitos de administrador em ambientes de produção ou UAT. Mas minha máquina de desenvolvimento é diferente. Se eu fosse construir cadeiras em vez de softwares, você me diria que posso coloquei as ferramentas que eu quero no meu workshop porque meu workshop precisa parecer com o local em que a cadeira será usada? Dou um pacote executável ao uat. As bibliotecas e ferramentas que eu usei para construí-los são invisíveis para o usuário final ou o cara instalando o pacote ".
Eu ainda estou esperando hoje. Encontrei uma solução, abra um ambiente de desenvolvimento, acesse seu juiz online favorito, desafie-se. quando alguém olha para sua tela, ele vê você programando. ;)
fonte
Você pode responder a isso de duas maneiras. Sim e não, ou depende. - Posso ser mais vago ....
Depende se é necessário que eles façam seu trabalho. Se for o caso, conceda a eles poderes administrativos no computador. Se não, então não. Nem todo desenvolvimento de software exige que um engenheiro tenha direitos de administrador.
Sim e não depende da sua opinião. Alguns engenheiros veem o computador como domínio e são as regras do domínio. Outros não querem a responsabilidade.
Trabalhei em uma empresa em que não tinha direitos de administrador e sempre que precisava fazer algo que exigia direitos de administrador, era necessário ligar para o suporte técnico e eles me concederam direitos de administrador temporário até a reinicialização. Às vezes era uma dor, mas era assim que eu vivia com ela. Também trabalhei em locais em que tenho direitos administrativos totais no meu computador. Isso foi ótimo, exceto no momento em que instalei algum software que hospedava o sistema operacional e tive que levar meu computador ao suporte técnico e fazer com que eles reinventassem o disco rígido ....
Pessoalmente, acho que um engenheiro deve ter direitos de administrador em seu computador, mas com o entendimento de que, se eles estragar tudo, uma nova imagem de linha de base pode ser recarregada e eles perderão tudo o que foi feito desde a linha de base original. No entanto, não acredito que todos em uma empresa devam ter direitos de administrador em seu computador. Os departamentos de contabilidade, assistentes administrativos e outros departamentos não precisam ter esses direitos para que não sejam concedidos.
fonte
ht tp: //msdn.microsoft.com/en-us/library/aa302367.aspx
Na minha experiência, é sempre necessário um compromisso entre nós (codificadores) e eles (segurança). Eu admito (embora eu odeie), há mérito no artigo da Microsoft acima. Como sou programador há anos, experimentei a dor de precisar instalar apenas um depurador diferente, para ficar irritado por não poder. Isso me forçou a pensar criativamente em como fazer meu trabalho. Depois de anos lutando contra nossa equipe de segurança (e várias discussões), entendo o trabalho deles de ter de proteger todas as áreas, incluindo minha área de trabalho. Eles me mostraram as vulnerabilidades diárias que aparecem, mesmo no aplicativo Quicktime mais simples. Eu posso ver sua frutificação toda vez que eu quero instalar um utilitário rápido ou ajustar meu IIS local para que eu possa causar um sério problema de segurança. Eu não entendi completamente até ver outro desenvolvedor ser enlatado. Ele estava tentando depurar e acabou desligando a Symantec apenas para obter (e depois DAR) algum vírus a centenas de pessoas. Foi uma bagunça. Ao conversar com um dos "secheads" (pessoal da segurança) sobre o que aconteceu, eu pude ver que ele queria apenas dizer "disse a você ...".
Aprendi que nossos secheads (bem, pelo menos os meus) só querem proteger nossa empresa. A boa notícia é que encontramos um compromisso, e eu posso fazer o meu trabalho e os secheads são legais com a nossa rede segura!
Credo
fonte
Sim, se você deseja que os participantes ou alguns usuários mal-intencionados se comprometam a comprometer seu domínio.
ou seja, Comprometer uma conta de baixo nível> Encontre onde admin -> Mimikatz -> Elevar permissões -> Administrador de domínio.
Portanto, não, usuários normais não devem ser administradores.
A Microsoft também disse que o UAC não é um limite de segurança; portanto, não o use como tal. Existem vários desvios do UAC disponíveis no mundo real.
Se eles precisam de administrador como parte de sua função, forneça contas de usuário administrador local de domínio separadas, usadas apenas para instalar o software (com permissões de administrador apenas em sua própria máquina), nunca para uso geral ou acesso à Internet. Isso deve ter uma política de senha mais rigorosa (por exemplo, comprimento mínimo de 15 caracteres). A funcionalidade Runas deve ser usada para isso.
Qualquer ambiente em que as contas de usuário normais sejam administrativas é uma receita para um desastre de segurança.
fonte
Uau, essa pergunta certamente abrirá algumas respostas interessantes. Em resposta, cito o frequentemente usado - 'Depende' :)
Nas pequenas empresas, isso pode ser apenas uma questão de ser pragmático. É provável que os desenvolvedores sejam os mais adeptos tecnicamente, por isso faz sentido para eles administrar suas próprias máquinas.
Pessoalmente, sou fã da "conta de administrador", que pode ser usada quando necessário - ou seja, "Executar como ..." (notei que essa abordagem era muito semelhante ao UAC posteriormente).
Se você estiver desenvolvendo software de desktop, não é uma má idéia para os desenvolvedores trabalhar dentro dos limites que o usuário final experimentará - ou seja, direitos limitados ou restritos. Se você criar o software com direitos limitados, é uma boa chance de encontrar os mesmos problemas que seus usuários-alvo enfrentariam com o mesmo conjunto de permissões.
Dito isto, se você tiver um bom laboratório de testes e / ou uma equipe decente de controle de qualidade, isso pode ser um ponto discutível - especialmente se você tiver uma prática ALM meio decente.
Então, finalmente - eu desenvolvo sem o UAC, principalmente porque confio em mim e em minhas habilidades. Em um ambiente de equipe, eu colocaria em votação. Em organizações maiores, talvez você não tenha essa liberdade. Os administradores da empresa geralmente têm a palavra final :)
fonte
Na minha empresa, desenvolvedores, engenheiros e meu chefe (proprietário da empresa) têm privilégios de administrador local. Meu chefe também tem privilégio de administrador de rede, caso eu seja atingido por esse barramento rebelde (ou saia). Todo mundo fica trancado.
Como administrador de sistema, essa configuração me causou um pouco de dor de vez em quando, especialmente quando um software não aprovado é instalado. No entanto, como parte de um programador, entendo a necessidade de usuários avançados terem mais controle sobre seu ambiente e, como tal, estou disposto a aturar as peculiaridades ou problemas ocasionais que possam surgir. Eu faço backups de rotina de suas estações de trabalho - apenas por precaução.
A propósito, tive mais problemas com o chefe mexendo nas coisas do que com qualquer outra pessoa. Como a velha pergunta: "Onde fica um elefante? Onde ele quiser!" Mas em uma pequena empresa onde ele é essencialmente o administrador de sistemas de "backup", não há muita escolha.
fonte
Depende das habilidades do desenvolvedor e se ele é consultor ou não.
Eu acho que é razoável que um desenvolvedor experiente e confiável tenha o direito de fazer o que quiser com seu PC, desde que não prejudique sua produtividade.
fonte
Ninguém no Windows XP deve usar uma conta de administrador para uso diário e, no Vista, se você precisar ser administrador, pelo menos, o UAC deve estar ativado. Especialmente desenvolvedores web e outros desenvolvedores que navegam na web com o Internet Explorer.
O que você pode fazer é fazer com que os desenvolvedores usem sua conta de usuário comum, mas forneça a eles uma segunda conta que seja um administrador em seu PC para que eles possam usá-la conforme necessário (Executar como). Eu sei que eles disseram desenvolvimento da Web, mas para o desenvolvimento do Windows, seu software deve ser testado usando uma conta de usuário comum, não como administrador.
fonte