Permitir que usuários Administradores efetuem login como outros usuários


11

Você acha que é uma boa prática implementar uma possibilidade de permitir que um usuário administrador efetue login como outro usuário, ignorando a senha? Isso poderia ser implementado por uma senha mestra ou uma função dentro da administração do usuário, "Efetue login como este usuário".

Os administradores estão solicitando que uma função dessas seja capaz de tentar reproduzir um problema relatado ou verificar se as concessões estão ok, por exemplo.


9
Em geral, não é uma boa ideia na engenharia de segurança permitir que as pessoas façam login como uma conta compartilhada (ou conta de outras pessoas, mesmo), mesmo que suas permissões sejam idênticas. A autenticação deve ser um processo separado da autorização. Se as tarefas forem realizadas em contas de usuário separadas, eles serão responsáveis por isso.
precisa saber é o seguinte

1
+1 a Mehrdad Afshari. Eu me arrepio toda vez que ouço pessoas falando sobre administração assim.
Dan McGrath

2
@Mehrdad Afshari e @Dan McG, tudo isso é bom e verdadeiro, mas o que você propõe fazer quando um administrador precisa acessar uma conta de usuário em uma situação cotidiana? Peça ao usuário para inserir suas credenciais? Muitas vezes, para verificar ou reproduzir um problema, é necessário verificar as configurações de um usuário específico, especialmente quando as contas estão vinculadas a direitos complexos e outras configurações que não podem ser reproduzidas 1: 1 com uma conta neutra.
Pekka

4
Você está olhando da maneira errada. Se o administrador precisar verificar a configuração de um usuário, precisamos desenvolver ferramentas melhores para obter essas informações de diagnóstico do usuário. Por exemplo: Se o seu aplicativo no Windows travar, você deseja que algum administrador da MS no RedDP RDPing na sua conta de usuário verifique tudo ou deseja um método altamente automatizado de enviar as informações necessárias de volta para eles (a critério do usuário) ?
Dan McGrath

2
@ Dan: O cliente pode não estar disposto a pagar por isso.

Respostas:


15

Não. De maneira alguma. Isso viola a segregação de deveres.

Também causa estragos na dependência de logs para mostrar ações do usuário.

Se você realmente precisar verificar coisas como essa, o administrador também deverá ter uma conta de teste simulada configurada como os usuários. Dessa forma, eles podem confirmar concessões, etc., funcionam corretamente primeiro no usuário de teste.

Além disso, os usuários administrativos nem sempre devem receber todos os direitos que um usuário possui. Por exemplo, um usuário pode ter motivos válidos para visualizar os números de cartão de crédito em um sistema. Um administrador não deveria; esses dados não fazem parte do trabalho deles. Mais uma vez, isso se resume à segregação de deveres.

Minimize sua exposição, minimizando a concessão de direitos inadequados. Isso deve incluir administradores também ...


1
Embora você tenha pontos válidos, não acho que a resposta seja tão clara - em alguns casos, é a melhor solução.
sleske

11

Do ponto de vista dos princípios de programação limpa e de segurança, não é uma boa ideia. Mas pode ser uma enorme conveniência no trabalho diário para o administrador, e é por isso que eu sou a favor se implementado bem.

Para mim, uma implementação correta teria que atender aos seguintes requisitos:

  • O sistema efetua login como usuário em questão, mas ignora a autenticação de senha se você estiver conectado como administrador.

  • O sistema está ciente de que este não é o usuário x, mas um administrador efetuou login como usuário x. Qualquer instalação de registro refletiria a diferença.

  • Não há como "sair" do logon do usuário de volta ao nível do administrador.

Na verdade, isso pode melhorar a segurança porque o administrador não precisa procurar e usar as credenciais dos usuários, o que, na realidade, costuma ser o caso pelos motivos mencionados pelo OP: Algo deve ser verificado, testado, etc. na conta do usuário. .


8

Como sempre ... depende. Não há resposta fácil e os dois sistemas são usados ​​na prática (por exemplo, Windows: Admin não pode fazer logon como usuário sem redefinir a senha vs. Linux: Admin: pode fazer logon como usuário local usando su).

Claramente, não permitir que o administrador efetue login como outro usuário é a opção mais segura; portanto, você deve decidir se o conforto adicional (poder depurar problemas que ocorrem apenas para um determinado usuário) supera o risco. Se você decidir implementar essa opção, verifique se existe um registro rigoroso, para que um administrador (ou alguém que tenha se apossado de uma senha de administrador) não possa ocultar suas faixas.

Como alternativa, você pode usar o padrão usado pelo Windows: Um administrador não pode fazer logon como outro usuário, mas um administrador pode redefinir a senha do usuário. Dessa forma, um administrador pode obter acesso, mas o usuário sempre saberá que alguém acessou sua conta.


Nitpick: sudonão efetua login como usuário local, apenas executa um processo como usuário (à la "Executar como usuário" da janela). Para efetuar login como um usuário local, use su. Caso contrário, eu concordo.
sleske

@lesleske: Claro, obrigado por descobrir isso. Fixo.

@lesleske: não necessariamente, olhe sudo -i.
Liori 7/05

A idéia de um 'shell de login' tem mais a ver com o shcomportamento do executável do que com as permissões concedidas. su - usere sudo -u user shconceda o mesmo acesso; a diferença é que shexecuta scripts de inicialização diferentes.
22419 jpaugh

3

Bem, o phpBB3 possui uma funcionalidade "Testar permissões do usuário" para administradores, o que é realmente útil. Além disso, ele realmente não permite que você interfira na conta do usuário, mas apenas obtém a experiência que ele tem, com base em suas permissões.

Mas, na verdade, fazer login como outra pessoa vem com vários problemas, como outros mencionados.


1

Sim, essa funcionalidade pode ser problemática, mas às vezes não há outra maneira, portanto pode ser necessária.

Alguns exemplos:

  • No Unix / Linux, essa funcionalidade existe ( su - <username>que fornece o mesmo resultado que o logon desse usuário, mas não requer senha para root)
  • o aplicativo em que trabalho também possui isso, e é essencial para depurar problemas nas configurações pessoais de um usuário (das quais nosso aplicativo possui muitos)

Conforme indicado, se configurações complexas dependem do usuário conectado (vars do ambiente, caminhos, configurações pessoais em um aplicativo), geralmente não há outra maneira prática de depurar o problema do usuário.

Quanto ao registro / auditoria: é claro que o uso dessa funcionalidade deve ser registrado. Fora isso, você precisará confiar no seu administrador para não abusar dele. Mas isso é válido para administradores em geral.

Se você precisar restringir mais seus administradores, precisará de algum tipo de sistema MAC (controle de acesso obrigatório), sem um administrador "verdadeiro". Isso é possível, mas muito mais complicado, por isso é uma troca.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.