При установке веб-приложения, в котором один пользователь используется для общения с одной базой данных (скажем, MySQL, но это может относиться и к другим СУБД), вы часто получаете последовательность событий, например:
CREATE DATABASE wordpress CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'hunter2';
Некоторые гиды предложите использовать другое имя пользователя вместо имени базы данных, где другие предложите использовать другое имя, например appuser для пользователя и app для имени базы данных.
Есть ли очевидные технические недостатки использования одного и того же имени? Есть ли что-то, что вы могли бы создать путаницу, делая это?
Изменить: я знаю, что это сомнительная практика безопасности, и вы должны назвать свои базы данных fhqwhgads и ваш пользователь Flobadob; однако (а) неясность - сомнительный инструмент, и (б) это пример, который каждое веб-приложение приводит в своей документации.
Обфусцированные базы данных обеспечивают около 15-30 секунд защиты в случае компрометации и около 1234783562387561235 часов разочарований.
Я считаю, что вы привязываете роль к имени пользователя. Что-то вроде:
app_role
Или:
wordpress_www
wordpress_dba
wordpress_cron
Если я когда-нибудь увижу wordpress
пользователь, я знаю, что что-то не так. Используя *_dba
соглашение помогает понять, что веб-пользователи не должны владеть объектами базы данных, а только *_dba
должен. Для пользователей вы просто используете их имя пользователя на сайте. Подобные простые соглашения упрощают администрирование разрешений, особенно в сочетании с SCHEMA
с.
Вот пример проекта, над которым я работаю, который делает именно это:
https://github.com/sean-/flask-skeleton/blob/master/sql/create_roles.sql
https://github.com/sean-/flask-skeleton/blob/master/sql/perms.sql
Обратной стороной использования того же имени пользователя в качестве имени базы данных является просто то, что это слишком очевидно. Если вы посмотрите журналы доступа, вы увидите, что злоумышленники регулярно пробуют эту комбинацию, и если вы правильно указали имя, вы уже частично участвуете в этом. Кроме этого, не имеет большого значения, какое имя вы используете, хотя есть что сказать за то, что не использует словарные слова.
Я думаю, что недостатки не на техническом уровне, а скорее на уровне администрирования и / или безопасности. Можно подумать, что usernames == имя базы данных просто для администрирования и знания, какие учетные записи имеют доступ к каким базам данных, но также упрощает злоумышленнику возможность легко угадать действительные имена учетных записей с лучшим коэффициентом успеха. Обычно я добавляю к аккаунту суффикс с целью и применением. Что-то вроде _wp уменьшит интуитивно понятный доступ, но все же будет видно администратору базы данных, чтобы быстро определить природу учетной записи.