Witam ponowie,
koledzy proszę podpowiedzcie jak podejść do tematu by z jednej strony nie reorganizować wszystkiego od nowa, a z drugiej jednak dojść do zamierzonego efektu.
Problem polega na tym, że jest baza z masą tabel (powiedzmy, że coś w rodzaju bardzo prymitywnego MagazynuDanych) z których korzysta masa użytkowników na zasadzie łączenia się z tabelami i budowy swoich raportów czy jakichś tam aplikacji pomocniczych w Accessie czy Excelu. Problem polega, że ten kto to tworzył na początku w ogóle nie zajął się sprawą autoryzacji i tak w bazie jest tylko domyślny schema = dbo do którego należą wszystkie tabele, a do bazy łączenie jest za pomocą jednego wspólnego loginu w SQL.
Oczywiście jest to jakaś masakra która w końcu muszę ruszyć i wyprostować. Pytanie brzmi jak to zrobić żeby nie przebudowywać wszystkiego od nowa.
Generalnie zakładam, że chciałbym zrobić grupy użytkowników w AD i te używać w SQL Server z dostępem do wyznaczonych tabel czyli coś w rodzaju:
grupa SQLReaderSales --> dostęp do tablic dbo.SalesOrders ; dbo.SalesOrderLines; dbo.Customers ..... etc.
Niestety nie jestem jakoś mega znawcą tego aspektu w SQL server jakim są autoryzacje i teraz próbując tu coś naprostować nie chce za bardzo namieszać i przekombinować. No a z drugiej strony chciałbym to zrobić jakoś w miarę możliwości "zgodnie ze sztuką".
Wydaje mi się,że najbardziej logicznie by było zrobić schematy dla każdej z grup i każdą grupę podpiąć pod nią ... ale to nie wchodzi w grę (a raczej jest ostatecznością) bo wszystko co korzysta z tej bazy musiało by być poprawione (nazwy tabel się zmienią). W sytuacji jakiej się znajduje to jest raczej nie do zaakceptowania.
Dla tego myślałem sobie, żeby po stworzeniu grupy użytkowników np ten SQLReaderSales z jednej strony zablokować jej od górnie dostęp do schema ="dbo", a później tylko nadać dostępy do konkretnych obiektów z "dbo". Problem w tym, że nie wychodzi mi to ... jak zablokuje "select" dla całego dbo, to pomimo, że później nadam uprawnienia dla konkretnej tablicy np. dbo.SalesOrders - to nic z tego nie widzi tej tablicy w ODBC.
Oczywiście mogę iść od drugiej strony i blokować tylko tablice do których grupa nie powinna mieć dostęp ... ale wiecie rozumiecie ...zawsze jest więcej tablic wtedy do zablokowania niz do nadania dostępu, a przy prawie 200 tablicach i kilku grupach uzytkowników zaczyna się lekka masakra w zarządzaniu i klikaniu ;) Chyba... że jest jakiś myk o którym nie wiem.
Jakbyście mogli mi coś poradzić jak podejść do tematu jak najlepiej uzyskać wynik, a nie ingerować za bardzo w aktuyalna strukturę bazy - byłbym wielce zobowiązany.
Baza na SQL Server 2014.
Z góry dzięki,
pozdrawiam BB