konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Witam.

Do bazy danych na serwerze SQL Server loguję się domenowo. W SQL Serverze jako login mam stworzony login który jest grupą domenową. Login ten ma dostęp do konkretnej bazy z uprawnieniami wybranej database role.

Do Sql Servera loguję się przy pomocy loginu domenowego (niech to będzie MyDomainLogin) a nie grupy (MyDomainGroup) ale w bazie danych mam uprawnienia grupy. I teraz problem, w żaden sposób nie jestem w stanie z bazy danych pobrać ról jakie posiada zalogowany użytkownik. Baza widzi mnie jako użytkownika MyDomainLogin a nie MyDomainGroup którą istnieje jako login i użytkownik bazy przez co widok systemowy twierdzi że nie posiadam żadnych ról (co jest po trosze zgodne z prawdą bo role ma MyDomainGroup a nie MyDomainLogin).

Czy ktoś spotkał się z takim problemem? Czy da się to jakoś obejść?Rafał Malesa edytował(a) ten post dnia 29.10.09 o godzinie 10:29

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

chyba nie rozumiem założeń.. baza dobrze zrozumiała co miałeś na myśli. Pytanie czemu masz login jako grupa domenowa i jak niby baza ma to rozpoznać. Jeśli już tak zrobiłeś to stworz grupe na bazie i przypisz usera do grupy (w sensie user/login na bazie)... no.. chyba tak to zrozumiałem bo przyznam że dość zamotanie/zapętlony opis jak i problem :)

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Login jest jako grupa domenowa gdyż chcę aby po dodaniu nowego użytkownika do domeny i przydzieleniu go do grupy domenowej (która w bazie de facto jest loginem - tak da się coś takiego zrobić :)) użytkownik mógł się logować do serwera bazy danych i mieć uprawnienia takie jak grupa do której należy. Chcę po prostu ustawić uprawnienia w bazie dla loginu (który w praktyce jest grupą domenową). Potem gdy dodawany jest nowy użytkownik do domeny po przydzieleniu jej do odpowiedniej grupy baza automatycznie ściąga sobie uprawnienia użytkownika właśnie z grupy do której należy.

Może trochę z innej strony opiszę problem.
W domenie mam:
grupę: MyDomainGroup.
użytkownika: MyDomainUser (użytkownik należy do grupy MyDomainGroup).

W Sql server 2005 mam:
login: MyDomainGroup - jest on powiązany z grupą w domenie o tej samej zawie. Login ten ma dostęp do bazy danych z uprawnieniami jednej z kilku ról jakie zostały utworzone na potrzeby korzystania tej bazy. Grup takich jak MyDomainGroup będzie kilka i każda będzie miala dostęp do bazy z uprawnieniami innej roli.

I teraz potrzebuje sposobu na sprawdzenie, że logując się przy użyciu Windows Authentication na użytkownika MyDomainUser w bazie danych jestem widziany jako MyDomainGroup (ewentualnie potrzebuję sprawdzić jakie w bazie mam role).

Problem polega na tym, że wszelkie funkcje, które zwracają dane na temat zalogowanego loginu zwracają MyDomainLogin (co logiczne gdyż fizycznie na niego jestem zalogowany) ewentualnie dbo. Natomiast żeby sprawdzić jakie role mam w bazie potrzebuje wiedzieć że zalogowany użytkownik należy do MyDomainGroup (bo to do grupy są przypisane konkrente role w bazie).

Tak wiem, pogmatwane to :).

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Rafał Malesa:
I teraz potrzebuje sposobu na sprawdzenie, że logując się przy użyciu Windows Authentication na użytkownika MyDomainUser w bazie danych jestem widziany jako MyDomainGroup (ewentualnie potrzebuję sprawdzić jakie w bazie mam role).

Jeśli dobrze rozumiem, to nie ma takiej opcji...
Grupa domenowa służy do autentykacji i ew. przydziału uprawnień (grupowo) dla jej użytkowników. Po zalogowaniu do SQL Server'a jesteś widziany Ty jako Ty - w końcu chodzi o "User'a".

Przy tworzeniu loginów można wybrać, że login jest typu "User" albo "Windows Group", ale później jesteś identyfikowany osobiście.
Przy logowaniu do serwera/silnika przez Management Studio przy "Windows Authentication" w polu user name też widać Twoją nazwę user'a.

Gdybyś wszędzie potem w bazie był widziany jako grupa domenowa, to nie wyobrażam sobie np. audytu użyszkodników (jak byś doszedł kto coś nagrzebał?) ;))Michał Kowalczyk edytował(a) ten post dnia 29.10.09 o godzinie 14:38

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Michał Kowalczyk:

Gdybyś wszędzie potem w bazie był widziany jako grupa domenowa, to nie wyobrażam sobie np. audytu użyszkodników (jak byś doszedł kto coś nagrzebał?) ;))


W zasadzie nie potrzebuje tego wszędzie :), wystarczy mi jeden sposób, który powie mi że MyDomainLogin ma uprawnienia konkretnej MyDomainGroup. Nic to, będzie trzeba to jakoś obejść. Na pewno mogę sobie przeszukać domenę i stamtad pobrać informację o tym do jakiej grupy należy użytkownik. Miałem nadzieję, że uda się tego uniknąć.Rafał Malesa edytował(a) ten post dnia 29.10.09 o godzinie 14:58

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Rafał Malesa:
I teraz potrzebuje sposobu na sprawdzenie, że logując się przy użyciu Windows Authentication na użytkownika MyDomainUser w bazie danych jestem widziany jako MyDomainGroup (ewentualnie potrzebuję sprawdzić jakie w bazie mam role).


to chyba coś takiego:

EXEC master..xp_logininfo 'MyDomain\MyUserName'


w polu permission_path zwraca (jeśli istnieje) grupę domenową/lokalną, do której należy user...

o to kaman? ;)Michał Kowalczyk edytował(a) ten post dnia 29.10.09 o godzinie 15:57

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

Michał Kowalczyk:

to chyba coś takiego:

EXEC master..xp_logininfo 'MyDomain\MyUserName'


w polu permission_path zwraca (jeśli istnieje) grupę domenową/lokalną, do której należy user...

o to kaman? ;)

Heh prawie ;).
W permission_path zwraca mi BUILTIN\Administrators czyli wygląda że bierze to z komputera lokalnego a nie z domeny. Dziwna sprawa, bo na komputerze na którym jest zainstalowany SQL Server użytkownik domenowy na którego się loguje nie należy do grupy Administrators.

Jest!!! :)
Trzeba do wywołania dodać jeszcze jeden parametr
EXEC master..xp_logininfo 'MyDomain\MyUserName', 'all' 

Wtedy w polu o którym pisałeś faktycznie zwrócona jest grupa z domeny.
Wielkie dzięki.Rafał Malesa edytował(a) ten post dnia 29.10.09 o godzinie 16:11

konto usunięte

Temat: SQL Server 2005 - pobranie roli użytkownika

to dziwne, bo przetestowałem właśnie na wybranym użytkowniku (który wiem, że jest w danej grupie) i zwróciło wynik poprawny...

spróbuj jeszcze tak:


EXEC master..xp_logininfo 'MyDomain\MyUserName','all'

zwróci wszystkie grupy do których należy login.

Mi na testowej instancji, gdzie dostęp mam po loginie zwróciło dwa wiersze:

MyDomain\MyUserName user admin NULL
MyDomain\MyUserName user admin BUILTIN\Administrators
Michał Kowalczyk edytował(a) ten post dnia 29.10.09 o godzinie 16:12

Następna dyskusja:

Import z Excela do Sql Serv...




Wyślij zaproszenie do