Convenção de nomenclatura para bancos de dados e usuários do banco de dados para acesso por um aplicativo da web?

4

Ao instalar um aplicativo da web em que um único usuário é usado para conversar com um único banco de dados (digamos, MySQL, mas isso também pode ser aplicado a outros RDBMSes), você geralmente tem uma sequência de eventos como esta:

CREATE DATABASE wordpress CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'hunter2';

Alguns guias sugerem o uso de um nome de usuário diferente para o nome do banco de dados, onde outros sugerem usar um nome diferente, como 'appuser' para o usuário e 'app' para o nome do banco de dados.

Existem desvantagens técnicas óbvias no uso do mesmo nome? Existe algum lugar onde você possa criar confusão ao fazer isso?

Edit: Estou ciente de que esta é uma prática de segurança questionável, e você deve nomear seus bancos de dados fhqwhgads e seu usuário flobadob ; no entanto, (a) a obscuridade é uma ferramenta questionável, e (b) este é o exemplo que toda webapp dá em sua documentação.

    
por crb 03.06.2011 / 13:34

3 respostas

2

A desvantagem de usar o mesmo nome de usuário que o nome do banco de dados é simplesmente que é óbvio demais. Se você der uma olhada nos logs de acesso, verá que os atacantes tentam essa combinação regularmente e, se você acertar o nome, já fará parte dela. Além disso, faz pouca diferença o nome que você usa, embora haja algo a ser dito por não usar palavras do dicionário.

    
por 03.06.2011 / 15:36
3

Bancos de dados ofuscados fornecem cerca de 15 a 30 segundos de defesa em caso de comprometimento e cerca de 1234783562387561235 horas de frustração.

Sou da opinião de que você vincula o papel ao nome de usuário. Algo como:

app_role

Ou:

wordpress_www
wordpress_dba
wordpress_cron

Se eu vir um usuário wordpress , sei que algo não está certo. O uso da convenção *_dba ajuda a entender que os usuários da Web não devem possuir objetos de banco de dados, somente os *_dba 's devem. Para os usuários, você usa apenas o nome de usuário do site. Convenções simples como essa facilitam a administração de permissões, especialmente quando combinadas com SCHEMA s.

Aqui está um exemplo de projeto em que estou trabalhando que faz exatamente isso:

link

link

    
por 03.06.2011 / 17:21
1

Acho que as desvantagens não estão no nível técnico, mas mais no nível de administração e / ou segurança. Você poderia pensar nas linhas que nomes de usuários == nome do banco de dados é simples para administração e saber quais contas acessam quais bancos de dados, mas também torna mais fácil para um intruso poder adivinhar facilmente nomes de contas válidos com uma melhor taxa de sucesso. Normalmente eu sufixo a conta com o propósito e a aplicação. Algo como _wp reduziria o acesso intuitivo e ainda assim seria visível para um administrador de banco de dados determinar rapidamente a natureza da conta.

    
por 03.06.2011 / 15:18