У меня есть веб-служба JSP / MySQL , где пользователи взаимодействуют с «процессами» - они могут загружать данные, настраивать, просматривать отчеты и т. Д. Для данного процесса. Они также могут создавать новые процессы или запускать отчеты, сравнивающие несколько процессов.
В настоящее время идентификатор процесса указан в URL (параметр GET), поэтому любой пользователь может взаимодействовать с любым процессом. Меня попросили добавить безопасность и мультитенантность к этому сервису. Для простоты предположим, что каждый арендатор имеет полный доступ к набору процессов, но процессы могут быть доступны нескольким арендаторам.
Мой предпочтительный подход:
- Добавление пользовательской таблицы (PK_User_Id, password_hash, name и т. Д.)
- Добавить таблицу доступа (FK_User_Id, FK_Process_Id)
- Страница входа SSL, на которой хранится идентификатор Tenant_Id в сеансе
- Страница выбора процесса, которая позволяет вам выбрать Process_Id, к которому у вас есть доступ, и сохранить его в сеансе
- Почти каждая страница будет создавать свои SQL-запросы на основе идентификатора процесса сеанса
- «Кросс-процессные» страницы, такие как «Создать», «Выбрать» и «Сравнить», вместо этого будут использовать идентификатор пользователя сессии
Мой начальник считает, что этого недостаточно, чтобы удовлетворить внешний аудит кода. Он опасается, что своенравный разработчик может написать запрос, который предоставляет данные одного клиента другому или что-то в этом роде.
Он хочет, чтобы я также использовал встроенные в ROLES ANSI SQL (приложение должно оставаться независимым от БД) для создания роли БД для каждого пользователя. Роль будет детализировать, к каким таблицам она имеет доступ, какие строки в общих таблицах и т. Д. Таким образом, при входе в систему Соединение будет «безопасным», и ошибка разработчика не может вызвать проблем.
- Возможно ли это?
- Есть ли такая вещь, как DB-независимые "роли", которые работают с MySQL?
- Могут ли роли указывать, что вам разрешено добавлять строки в таблицу, если первичным ключом является 'foo'?
- Достаточно ли безопасна моя система по отраслевым стандартам?