Создание разных пользователей для каждой проблемы моего приложения! - PullRequest
0 голосов
/ 30 июля 2010

Я хочу создать свой сайт, и на странице есть так, чтобы на страницах форума использовался пользователь форума mysql с правами на mydb.forum_table, mydb_forum_table2.и страницу профиля, чтобы использовать пользователя профиля, имеющего доступ к mydb.users и mydb.profiefields и т. д. с фотогалереей, блогом, чатом и ... это правильный способ сделать это!Я думаю о принципе наименьших привилегий, но мне интересно, почему я не видел, чтобы другие известные CMS делали это!

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Одним из критических ресурсов для базы данных являются соединения. Как правило, базы данных настроены с максимальным количеством соединений, и каждый раз, когда процесс должен сделать запрос, ему нужно соединение для этого. Соединения с базой данных являются дорогостоящими объектами для создания - они требуют времени и памяти, и, самое главное, соединения устанавливаются для конкретного пользователя. Общепринятая «лучшая практика» для веб-приложений - для приложения, когда ему требуется соединение с базой данных, для проверки пула на наличие доступного соединения. Если в пуле есть свободное соединение, веб-приложение получит это соединение, использует его по мере необходимости, а затем возвращает его в пул для повторного использования. Если нет свободных подключений, приложение создаст новое, использует его, а затем помещает в пул для повторного использования.

Если вы имеете дело с приложением, которое использует несколько пользователей базы данных (для управления привилегиями), и вам нужно использовать пул соединений, ваше приложение должно будет создать много пулов (по одному для каждого пользователя), что обычно приводит к вашему приложение получает как минимум одно соединение для каждого пользователя базы данных, которое оно использует. Это неэффективно, подвержено ошибкам и излишне сложно.

Если вы действительно намерены ограничить доступ вашего приложения к данным, то вам, вероятно, следует выяснить, какую поддержку ваша база данных имеет для представлений. Если представления хорошо поддерживаются, то вы можете создать представление (или представления), настроенные в соответствии с потребностями любой части вашего приложения.

Я бы порекомендовал придерживаться одного пользователя базы данных, а затем использовать время, которое вы только что освободили, для дополнительной отладки вашего приложения. Вы получите лучшие результаты и усугубите меньше администраторов баз данных.

0 голосов
/ 30 июля 2010

Если я правильно понимаю, вопрос заключается в реализации контроля доступа к модулю на основе разрешений для таблиц, используемых модулем.

Я думаю, что это будет сложно поддерживать (связь между модулями,и таблицы), и медленно, чтобы проверить разрешения для каждой таблицы, к которой обращается модуль.

...