Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usuários de aplicativos MySQL vs usuários de banco de dados


Eu lutei com isso todos esses anos atrás, então aqui está a resposta que eu gostaria de ter:

Geralmente, isso está complicando demais as coisas, e a resposta principal para um aplicativo básico é:as permissões dos usuários serão gerenciadas pelo código PHP nas chamadas de API que você fizer, e um usuário de banco de dados está bem. Todos os usuários devem evitar interagir diretamente com o banco de dados para desenvolvimento de aplicativos em geral, para evitar a violação da santidade dos dados.

É bom pensar em segurança e restrições, mas a simplicidade é rei - quanto mais complexo você o torna, mais difícil é manter e, portanto, mais fácil é perder casos de canto.

Devo criar um novo usuário de banco de dados sempre que registrar um novo usuário da web?

Não, os usuários do banco de dados são diferenciados por seus privilégios. Como resultado, todos os usuários estão em conformidade com um conjunto de grupos com níveis de privilégios variados. As contas do banco de dados são separadas das contas da web - a conexão com o banco de dados é feita em segundo plano e não tem link para a conta da web que está sendo usada.

Uma boa abordagem seria criar uma conta de banco de dados para cada serviço conectado diretamente ao banco de dados. Para a grande maioria, este será um serviço, seu servidor web. Se o aplicativo crescer e serviços isolados como auditorias, microsserviços, segurança, IOT surgirem, eles provavelmente devem ter suas próprias contas.

Os privilégios CRUD são seguros para todos os usuários do site?

A pergunta é equivocada - você fornece o CRUD para a conta do banco de dados, que precisará dele. Para as permissões CRUD gerenciadas dentro do PHP, isso realmente depende do seu aplicativo e endpoints específicos. Por exemplo, você provavelmente não quer que todos os seus usuários possam deletar registros de usuário, então seu código PHP deve evitar que isso aconteça.

Quantos tipos diferentes de usuários de banco de dados devem existir?

O número depende do seu banco de dados. Geralmente, existem 4 grupos
  • Administradores de banco de dados
  • Designers de banco de dados
  • Usuários finais casuais
  • Usuários finais nativos

No entanto, se você deseja conceder privilégios no nível da tabela, talvez seja necessário ramificar um pouco mais. Isso sugere que 10 contas de banco de dados é uma quantia bem pequena, várias centenas são mais prováveis .

Quanto mais privilégios, mais espaço é necessário, mas é uma consideração bastante minuciosa e não deve desempenhar um papel importante no desempenho. A complexidade é o próximo problema - pense cuidadosamente em quantos grupos e permutações você realmente deseja testar. No caso da pergunta acima, eu era um único desenvolvedor amador - uma conta como DBA provavelmente está bem. Se houver vários usuários acessando diretamente o banco de dados (provavelmente uma má ideia para o desenvolvedor de aplicativos), talvez os divida com permissões variadas.

Falar sobre permissões de nível de tabela para um aplicativo simples é um exagero!