Демонстрирую попытку реализации RLS в модели данных PowerPivot.
Логика задумки:
0) существует большой отчет по продажам, в который запросами загружается и трансформируется информация о продажах из разнородных источников. Читателей много: 30 человек с разным уровнем доступа (руководитель может видеть всю инфу, супервайзер - только по своей торговой команде) - надоело обновлять срезы по основному отчету, т.к. это не быстро;
1) существует запрос с юзерами и паролями в режиме "только подключение" - users;
2) пользователь при открытии заполняет таблицу Авторизация и прожимает кнопку, к которой привязан макрос, обновляющий соответствующий запрос;
3) при успешной авторизации (то есть в запросе users существует совпадение по ключам login и password ) пользователь видит доступную ему часть отчета, если совпадения нет - пустой отчет. (Директор имеет полный доступ, пароль 5678, Трус, Балбес и Бывалый - ограниченный, пароли соответственно abcd, efgh, 1234; пользователи ФамилияХ не имеют доступа вообще).
4) ограничение доступа прописывается в коде меры в DAX;
5) при закрытии книги отрабатывается макрос, очищающий таблицу "Авторизация" и обновляющий запрос в модели, чтобы скрыть отчет и сохранить книгу.
6) установленная защита книги не позволяет засунуть нос в текст запросов, в модель данных, чтобы подглядеть пароль либо удалить RLS-фильтр в мере, а скрытые от просмотра объекты не дают дернуть их значение функцией куба. (пароль для снятия защиты книги 159357)
Прошу у уважаемых форумчан критику решения.
Возможно макрос, сохраняющий книгу при закрытии, можно записать более корректно/отказоустойчиво (фрагменты кода надергал и из приемов Николая Павлова)
Также остается ощущение, что от того, кто захочет что-то выудить из модели, я ничего-то и не защитил: прошу подсказку на тему того, что еще сюда можно добавить для защиты от несанкционированного чтения. (в VBA я серый ... очень серый)
Благодарю за ответы.
Логика задумки:
0) существует большой отчет по продажам, в который запросами загружается и трансформируется информация о продажах из разнородных источников. Читателей много: 30 человек с разным уровнем доступа (руководитель может видеть всю инфу, супервайзер - только по своей торговой команде) - надоело обновлять срезы по основному отчету, т.к. это не быстро;
1) существует запрос с юзерами и паролями в режиме "только подключение" - users;
2) пользователь при открытии заполняет таблицу Авторизация и прожимает кнопку, к которой привязан макрос, обновляющий соответствующий запрос;
3) при успешной авторизации (то есть в запросе users существует совпадение по ключам login и password ) пользователь видит доступную ему часть отчета, если совпадения нет - пустой отчет. (Директор имеет полный доступ, пароль 5678, Трус, Балбес и Бывалый - ограниченный, пароли соответственно abcd, efgh, 1234; пользователи ФамилияХ не имеют доступа вообще).
4) ограничение доступа прописывается в коде меры в DAX;
5) при закрытии книги отрабатывается макрос, очищающий таблицу "Авторизация" и обновляющий запрос в модели, чтобы скрыть отчет и сохранить книгу.
6) установленная защита книги не позволяет засунуть нос в текст запросов, в модель данных, чтобы подглядеть пароль либо удалить RLS-фильтр в мере, а скрытые от просмотра объекты не дают дернуть их значение функцией куба. (пароль для снятия защиты книги 159357)
Прошу у уважаемых форумчан критику решения.
Возможно макрос, сохраняющий книгу при закрытии, можно записать более корректно/отказоустойчиво (фрагменты кода надергал и из приемов Николая Павлова)
Также остается ощущение, что от того, кто захочет что-то выудить из модели, я ничего-то и не защитил: прошу подсказку на тему того, что еще сюда можно добавить для защиты от несанкционированного чтения. (в VBA я серый ... очень серый)
Благодарю за ответы.