Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Раздача прав в SSAS по таблице в БД. Как? / 12 сообщений из 12, страница 1 из 1
12.04.2019, 15:42
    #39800635
Nika gnome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Добрый день!
Хотелось бы раздать пользователям права в кубе в соответствии с таблицей.
ID City_ID user1 17 ggg/a.petrovich2 21 ggg/a.petrovich3 17 ggg/e.gigerovna4 24 ggg/e.gigerovna5 35 ggg/e.gigerovna
Есть ли какая-то возможность так сделать?
...
Рейтинг: 0 / 0
12.04.2019, 15:42
    #39800636
Nika gnome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Наверно, какую-то задачу в SSIS сделать...
...
Рейтинг: 0 / 0
12.04.2019, 15:43
    #39800637
Nika gnome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
и, кстати, аналогично устроить доступ в основную БД - тот же вопрос.
...
Рейтинг: 0 / 0
12.04.2019, 16:22
    #39800655
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Nika gnome,

В общем виде вам нужен Bridge между справочником городов (DimGeo) и вашей таблицей с правами User'a. Разумеется все не Visible для юеров. Далее настраиваем Dimension, на пересечении Bridge и User ставим User, а на пересечении DimGeo и бриджа ставим DimGeo.
Далее в роли пишем что то типа
NonEmpty (
City.City.Members,
(
StrToMember ("[Users].[User].[" + UserName () + "]"),
[Measures].[Bridge City Users Count]
)
)
ставим галочку Enable Visual Totals, и наверно все.
...
Рейтинг: 0 / 0
12.04.2019, 16:44
    #39800666
Alex_496
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Nika gnome,

Рабочий вариант для большого количества пользователей
...
Рейтинг: 0 / 0
12.04.2019, 17:10
    #39800676
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
из того как поставлена задача и лучших практик:
в SSIS (можно и другими инструментами) делай C# скрипт на AMO, который динамически будет создавать роли (хоть сотню) и добавлять туда пользователей (вместе с их SID из AD) на основе твоей SQL таблицы
в каждой роли на нужное измерение будет писать списком разрешенные элементы на выбранный атрибут измерения по ключам из таблицы (с прочими опциями на выбор типа visual_totals и т.д.)
для минимизации количества ролей (контекстов слоя безопасности) - лучше добавить алгоритм группировки пользователей по одинаковым правам
(а ещё намного лучше заменить этот шаг на управляемые AD группы {по регионам/уровню ответственности типа директор/менеджер/грузчик} вместо просто сотен учёток)

неизвестно: как часто меняются записи в таблице,
> если раз в день - то задача выполняется в том-же временном окне (по утрам/ночью) где и Process таск для куба.
> если безконтрольно по много раз за день (какими-то непонятными сторонними лицами) то можно (хотя это худшая практика, но при отсувствии альтернатив..) как выше советуют (с ROLAP таблицей на мост) - но как минимум кэширование слетает нафик, производительность падает на порядок из-за таких мостов на лету..

но вобще лучше отдельными ролями с SSIS пересозданием/корректировкой каждый раз на изменение (триггер) - но будет небольшая проблема что делать с текущими сессиями (ожидание/lock или {что навряд-ли в prod.} kill/terminate).

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


В DB так-же - лучший вариант группами AD, и отдать головную боль по управлению членством в группах в управление кто там занимается информационной безопасностью, иначе надоест ухаживать за таким хозяйством с сотнями/тысячами пользователей..
(или привязать к сайту с соответствующими правами на директоров департаментов/региональных отделов - пускай сами разрешают/запрещают)

как вариант автоматизации - тот-же какой-нибудь (напр. SSIS или PS или C# или даже просто T-SQL и пр.) task/job на триггере при insert/update/delete с проверкой на текущее состояние job-a.
но налету опять-же осторожно - т.к. вопрос с текущими сессиями/подключениями/запросами, соответственно лучше минимизировать и менять только тех пользователей которые попали под изменение (а не широким фронтом стирать по маске и дибавлять по новой).
...
Рейтинг: 0 / 0
12.04.2019, 21:11
    #39800772
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Nika gnomeи, кстати, аналогично устроить доступ в основную БД - тот же вопрос.

Вьюха, где в запросе в условии будет сравнение текущего пользователя и этого вашего поля с текстом.
...
Рейтинг: 0 / 0
12.04.2019, 21:12
    #39800773
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
...
Рейтинг: 0 / 0
12.04.2019, 21:17
    #39800776
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
Критик,

динамические права в SQL ? нет, не слышал (хотя может плохо искал и отстал немного)

для этого пользователю сначала надо будет получить доступ как минимум
на чтение в сответствующую базу - а там-то этого пользователя пока нет.
и только потом уже решать - к какой строке доступ давать а к какой нет.
...
Рейтинг: 0 / 0
06.12.2019, 12:50
    #39899045
AlexBra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
aleksrov

StrToMember ("[Users].[User].[" + UserName () + "]"),


прошу прощения за глупый вопрос. как из функции UserName () выдернуть имя пользователя без домена?
"domen_name\user_vasya" --> "user_vasya"
...
Рейтинг: 0 / 0
06.12.2019, 15:02
    #39899133
DaniilSeryi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
AlexBra
aleksrov

StrToMember ("[Users].[User].[" + UserName () + "]"),


прошу прощения за глупый вопрос. как из функции UserName () выдернуть имя пользователя без домена?
"domen_name\user_vasya" --> "user_vasya"


Код: c#
1.
2.
3.
4.
5.
            string Login = "domen\\vasya";
            string[] Divided = Login.Split('\\');
            string UserName;
            UserName = Divided[1];
            textBadLogins.Text = UserName;



Упс... На C# написал, а не T-SQL.
...
Рейтинг: 0 / 0
06.12.2019, 17:51
    #39899233
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Раздача прав в SSAS по таблице в БД. Как?
AlexBra
aleksrov

StrToMember ("[Users].[User].[" + UserName () + "]"),


прошу прощения за глупый вопрос. как из функции UserName () выдернуть имя пользователя без домена?
"domen_name\user_vasya" --> "user_vasya"


а зачем ?
это ф-ция SSAS оно овзвращате доменное имя

ps гогл отвечает на вопрос так - я проверил пашет

Код: sql
1.
Mid(USERNAME(), Instr(USERNAME(), "\") + 1)



зы Upd это ж MDX а не T-SQL
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Раздача прав в SSAS по таблице в БД. Как? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]