Eu executo um aplicativo web PHP symfony-framework para minha empresa e ele usa um único login de banco de dados para todas as conexões, seja o usuário um administrador ou um cliente.
Eu sei que os sistemas de segurança mais altos geralmente usam logins diferentes para diferentes níveis de usuários.
Independentemente de usar ou não uma estrutura, esse é um recurso de segurança que devo usar?
Importa se o aplicativo é baseado na Web ou na intranet?
Para esclarecer: devo me preocupar em criar um plug-in para o symfony para implementar vários logins de banco de dados e devo fazer isso para quaisquer outros aplicativos que eu criar que não sejam baseados em uma estrutura?
Caso você esteja se perguntando, estou usando PHP5 e MySQL.
Você normalmente tem que ponderar o custo de fazer isso versus os benefícios... mas o benefício no gerenciamento de riscos é difícil de quantificar.
Basicamente, tudo se resume a qual seria o custo de uma exploração e qual seria a probabilidade de isso acontecer.
Portanto, ter que restaurar a partir do backup porque alguém conseguiu derrubar uma tabela que cria uma negação de serviço e ficar fora do ar por um dia tem um custo para a empresa em termos de lucro que eles teriam obtido naquele determinado tempo, mas há também uma questão de perda de reputação (ou seja, clientes/usuários que param de fazer negócios com você ou usuários em potencial que têm menos probabilidade de fazer negócios no futuro)... site e causando isso.
Se você não está armazenando cartões de crédito e não é um grande alvo (o tipo de site que as pessoas se gabam de ter), é menos provável que você seja hackeado... software, você ainda corre o risco de ataques de script kiddies que estão apenas procurando pessoas executando software com uma exploração conhecida.
...
O que nosso pessoal de segurança parece não entender é que é um ato de equilíbrio - algumas mudanças de segurança criarão um fardo para seus usuários. E, às vezes, a própria segurança causará interrupções (por exemplo, um de nossos parceiros externos move intervalos de IP... feito por mais de uma semana) ou apenas degradação do desempenho.
Às vezes é só que leva mais tempo para codificar, ou mais dores de cabeça para manter, etc.
Mas é algo que você deve responder por si mesmo - o custo vale o benefício de ter feito a mudança? (e às vezes, se o custo for apenas em mão-de-obra, houve um custo de oportunidade; ou seja, você poderia estar fazendo outra coisa que tiraria ainda mais benefícios com seu tempo?)
Em ASP.NET/C#, eu poderia simplesmente escolher uma string de conexão diferente com base na classe do usuário (significaria um pouco de sobrecarga, mas não tão difícil de fazer) e manter duas strings de conexão em minha configuração (ou até mesmo construí-la na hora com base em outros fatores), então eu acho que a mesma coisa seria razoável e adequada no MySQL.
Isso faz algum sentido para você?