Платформа SaaS - разные пользователи базы данных для каждого пользователя или одна основная учетная запись - PullRequest
1 голос
/ 19 марта 2012

У меня есть платформа SaaS, над которой я работаю;написано на PHP и использует базу данных MySQL (с использованием класса PHP PDO).

Приложение уже функционирует, и я решил использовать отдельную базу данных для каждого экземпляра.

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

Безопасность - это всегда то, о чем я беспокоюсь.Я хочу убедиться, что эта система настолько безопасна, насколько это возможно, до ее запуска.

В настоящее время мы используем одно имя пользователя и пароль MySQL, которые имеют доступ ко всем базам данных (в этой конкретной ферме MySQL).

Теоретически, если было нарушение безопасности, то злоумышленник мог бы получить доступ к другой базе данных (имя пользователя и пароль не установлены после установления соединения PDO / базы данных, но он мог бы выполнить запрос, такой как «использовать базу данных B»).).

Меня это должно беспокоить?Например, платформа SaaS, которая просто использует разбиение базы данных, уже менее безопасна, так как простая ошибка SQL может раскрыть данные клиента.

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

Спасибо!


Я решил использовать разные имена пользователей и пароли для каждого экземпляра.

Это еще один уровень безопасности, который не может повредить.

1 Ответ

1 голос
/ 19 марта 2012

Теоретически, если было нарушение безопасности, то злоумышленник может иметь возможность доступа к другой базе данных (имя пользователя и пароль не установлены после подключения PDO / базы данных, но они могут выполнить запрос, такой как «use databaseB»).

Меня это должно беспокоить? Например, SaaS платформа, которая просто использует разбиение базы данных, уже менее безопасна как простая ошибка SQL может выставить данные клиента.

1) Если вы выполняете свои защитные права, им должно быть очень трудно (если не невозможно) вручную писать запросы.
2) Проблема, которую вы только что изложили, заключается в том, что я бы рекомендовал разные пользователи / пароли между БД.
3) Еще одна причина, по которой я бы рекомендовал подключаться к нескольким БД ... Я сделал программное обеспечение для управления производством для компании, в которой работало около 10 человек. База данных не заняла много времени, чтобы стать огромной. Несколько баз данных будут держать размер под контролем лучше, чем 1.
4) Я был бы гораздо больше обеспокоен тем, что клиент случайно получит доступ к информации другой компании по такой простой проблеме, как проблемы с разрешениями, если я использую только одну базу данных.

Вопрос, который у меня все еще не решен в отношении разделения баз данных (я еще не исследовал / не тестировал) ... У меня хорошее понимание того, как обрабатывать сотни соединений с 1 базой данных. Что происходит, когда вместо этого вы обрабатываете всего несколько соединений с сотней баз данных?

...