🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
8 messages
8 total messages Started by Ciekawy Tue, 02 Sep 2014 17:07
Oracle i uprawnienia dla aplikacji??
#82317
Author: Ciekawy
Date: Tue, 02 Sep 2014 17:07
15 lines
1670 bytes
Witam

Mam taką starą apkę, pracującą pod oraclem ale teraz chodzi na wersji 
11. I Loguję się w niej jako użytkownik powiedzmy Tomasz, sprawdzam na 
serwerze, jestem zalogowany jako Tomasz i w aplikacji mam pełne 
uprawnienia. Jeżeli loguję się z boku aplikacji jako ten sam Tomasz, to 
nie mam wymaganych uprawnień. Generalnie widzę jakie zapytania wysyła 
aplikacja, nie znalazłem żadnego triggera on loggon.
Słabo znam Oracla, wiem że można (albo mi się zdaje) nadawać role  na 
konkretną nazwę aplikacji i jeżeli się loguje w tej aplikacji to się ma 
uprawnienia, a spoza się nie ma. Kurcze ale szukałem dzisiaj jakichś 
konkretów i niczego nie mogłem znaleźć. Mógłby mi ktoś łopatologicznie 
wytłumaczyć o co chodzi?

Pozdrawiam Ciekawy
Re: Oracle i uprawnienia dla aplikacji??
#82318
Author: Adam Siwoń
Date: Tue, 02 Sep 2014 20:00
27 lines
2600 bytes
W dniu 2014-09-02 19:07, Ciekawy pisze:
> Witam
>
> Mam taką starą apkę, pracującą pod oraclem ale teraz chodzi na wersji
> 11. I Loguję się w niej jako użytkownik powiedzmy Tomasz, sprawdzam na
> serwerze, jestem zalogowany jako Tomasz i w aplikacji mam pełne
> uprawnienia. Jeżeli loguję się z boku aplikacji jako ten sam Tomasz, to
> nie mam wymaganych uprawnień. Generalnie widzę jakie zapytania wysyła
> aplikacja, nie znalazłem żadnego triggera on loggon.
> Słabo znam Oracla, wiem że można (albo mi się zdaje) nadawać role  na
> konkretną nazwę aplikacji i jeżeli się loguje w tej aplikacji to się ma
> uprawnienia, a spoza się nie ma. Kurcze ale szukałem dzisiaj jakichś
> konkretów i niczego nie mogłem znaleźć. Mógłby mi ktoś łopatologicznie
> wytłumaczyć o co chodzi?

Wszystko zależy od tego jak zorganizował to producent aplikacji. 
Prawdopodobnie uprawnienia są przypisane do roli aplikacyjnej. Aplikacja 
po zalogowaniu podaje hasło do roli i ma uprawnienia do określonych 
obiektów. Z hasłem może być różnie - może być zaszyte w aplikacji, może 
być generowane - tu nie ma jakiegoś standardu. Nie spodziewałbym się 
jednak, że uda Ci się podejrzeć hasło narzędziem do śledzenia zapytań SQL.
Jak masz uprawnienia administracyjne do bazy danych to zobacz jakie role 
masz w bazie danych. Może to Cię na coś naprowadzi.

-- 
z pozdrowieniami
Adam Siwoń
Re: Oracle i uprawnienia dla aplikacji??
#82319
Author: Ciekawy
Date: Tue, 02 Sep 2014 20:13
25 lines
2341 bytes
WW dniu 2014-09-02 22:00, Adam Siwoń pisze:
 > Wszystko zależy od tego jak zorganizował to producent aplikacji.
 > Prawdopodobnie uprawnienia są przypisane do roli aplikacyjnej. Aplikacja
 > po zalogowaniu podaje hasło do roli i ma uprawnienia do określonych
 > obiektów. Z hasłem może być różnie - może być zaszyte w aplikacji, może
 > być generowane - tu nie ma jakiegoś standardu. Nie spodziewałbym się
 > jednak, że uda Ci się podejrzeć hasło narzędziem do śledzenia zapytań 
SQL.
 > Jak masz uprawnienia administracyjne do bazy danych to zobacz jakie role
 > masz w bazie danych. Może to Cię na coś naprowadzi.
 >
Cześć

Aplikacja u mnie śmiga, ale ja dodałem sobie od razu użytkowników do 
roli odczyt zapis i testowałem sobie w swoich warunkach.
Z producentem nie pogadam bo go nie ma.
Natomiast tam gdzie to chodzi nie wiem za co się złapać, bo aplikacja 
nie wysyła żadnego "set role", ani też nie ma żadnego triggera on login.
Jedyne co mi przychodzi do głowy to to czego nie rozumiem czyli 
nadawanie roli aplikacyjnej, jak to działa? Czy wystarczy tylko 
odpowiednia nazwa aplikacji. Sory za trywialne pytania, ale zanim sam 
się dogrzebię...
I gdzie i jak to sprawdzić mając kopię bazy z dumpa.

Pozdrawiam Ciekawy
Re: Oracle i uprawnienia dla aplikacji??
#82320
Author: Adam Siwoń
Date: Tue, 02 Sep 2014 21:10
52 lines
3633 bytes
W dniu 2014-09-02 22:13, Ciekawy pisze:
> WW dniu 2014-09-02 22:00, Adam Siwoń pisze:
>  > Wszystko zależy od tego jak zorganizował to producent aplikacji.
>  > Prawdopodobnie uprawnienia są przypisane do roli aplikacyjnej. Aplikacja
>  > po zalogowaniu podaje hasło do roli i ma uprawnienia do określonych
>  > obiektów. Z hasłem może być różnie - może być zaszyte w aplikacji, może
>  > być generowane - tu nie ma jakiegoś standardu. Nie spodziewałbym się
>  > jednak, że uda Ci się podejrzeć hasło narzędziem do śledzenia zapytań
> SQL.
>  > Jak masz uprawnienia administracyjne do bazy danych to zobacz jakie role
>  > masz w bazie danych. Może to Cię na coś naprowadzi.
>  >
> Cześć
>
> Aplikacja u mnie śmiga, ale ja dodałem sobie od razu użytkowników do
> roli odczyt zapis i testowałem sobie w swoich warunkach.
> Z producentem nie pogadam bo go nie ma.
> Natomiast tam gdzie to chodzi nie wiem za co się złapać, bo aplikacja
> nie wysyła żadnego "set role", ani też nie ma żadnego triggera on login.
> Jedyne co mi przychodzi do głowy to to czego nie rozumiem czyli
> nadawanie roli aplikacyjnej, jak to działa? Czy wystarczy tylko
> odpowiednia nazwa aplikacji. Sory za trywialne pytania, ale zanim sam
> się dogrzebię...

Może być odpowiednia nazwa aplikacji, ale wtedy raczej musi być trigger 
typu after login. Nie znam w Oracle'u mechanizmu, który przypisywałby 
automatycznie rolę na podstawie nazwy aplikacji (co nie znaczy, że go 
nie ma) Rola aplikacyjna to rola z hasłem. Użytkownik bazy danych ma 
przypisaną rolę z użyciem polecenia grant, ale jeśli w danej sesji chce 
korzystać z przypisanych do niej uprawnień to musi podać hasło tej roli. 
Robi się to właśnie z użyciem polecenia set role:

set role rola_aplikacyjna identified by "haslo"

Nie dziw się, że nie widzisz, że aplikacja nie wysyła polecenia set 
role. Co to by było za zabezpieczenie, gdyby to było widoczne? 
Przeszukaj kod obiektów PL/SQL może przypisanie roli jest ustawiane z 
poziomu procedury przechowywanej z użyciem polecenie execute immediate.

> I gdzie i jak to sprawdzić mając kopię bazy z dumpa.

select * from dba_roles

zapytanie zwróci Ci trzy kolumny:
1. nazwę roli
2. informację czy rola wymaga hasła czy nie
3. rodzaj autentykacji (w moich bazach jest tam jedna z wartości: 
NONE/GLOBAL/PASSWORD)

-- 
z pozdrowieniami
Adam Siwoń
Re: Oracle i uprawnienia dla aplikacji??
#82321
Author: J-23
Date: Tue, 02 Sep 2014 21:12
36 lines
2830 bytes
W dniu 02.09.2014 22:13, Ciekawy pisze:
> WW dniu 2014-09-02 22:00, Adam Siwoń pisze:
>  > Wszystko zależy od tego jak zorganizował to producent aplikacji.
>  > Prawdopodobnie uprawnienia są przypisane do roli aplikacyjnej. Aplikacja
>  > po zalogowaniu podaje hasło do roli i ma uprawnienia do określonych
>  > obiektów. Z hasłem może być różnie - może być zaszyte w aplikacji, może
>  > być generowane - tu nie ma jakiegoś standardu. Nie spodziewałbym się
>  > jednak, że uda Ci się podejrzeć hasło narzędziem do śledzenia zapytań
> SQL.
>  > Jak masz uprawnienia administracyjne do bazy danych to zobacz jakie role
>  > masz w bazie danych. Może to Cię na coś naprowadzi.
>  >
> Cześć
>
> Aplikacja u mnie śmiga, ale ja dodałem sobie od razu użytkowników do
> roli odczyt zapis i testowałem sobie w swoich warunkach.
> Z producentem nie pogadam bo go nie ma.
> Natomiast tam gdzie to chodzi nie wiem za co się złapać, bo aplikacja
> nie wysyła żadnego "set role", ani też nie ma żadnego triggera on login.
> Jedyne co mi przychodzi do głowy to to czego nie rozumiem czyli
> nadawanie roli aplikacyjnej, jak to działa? Czy wystarczy tylko
> odpowiednia nazwa aplikacji. Sory za trywialne pytania, ale zanim sam
> się dogrzebię...
> I gdzie i jak to sprawdzić mając kopię bazy z dumpa.

Oracle nie znam, ale na chlopski rozum. Jeżeli faktycznie aplikacja 
używa roli to muszą być zdefiniowane one na serwerze. Sprawdz czy takie 
role są. Jeżeli piszesz ze bazę masz z dumpa to muszą być ci użytkownicy 
zaimportowani wraz z bazą, czy użytkownicy Ci na serwerze pokrywają się 
z tym co faktycznie wpisujesz?

Tak jak mowiłem nie znam oracla ale coś takiego jak set role lub coś 
podobnego to bym szukał nie w momencie logowania a w momencie importu 
dumpa.

Pozdrawiam
Re: Oracle i uprawnienia dla aplikacji??
#82322
Author: Ciekawy
Date: Wed, 03 Sep 2014 04:24
23 lines
1990 bytes
> Tak jak mowiłem nie znam oracla ale coś takiego jak set role lub coś
> podobnego to bym szukał nie w momencie logowania a w momencie importu
> dumpa.
>
> Pozdrawiam
>



Jest tak, użytkownik ma  przypisaną dodatkową rolę (faktycznie może to 
być rola aplikacyjna bo nie jest na początku aktywna, aktywna jest tylko 
rola odpowiedzialna za logowanie) ta rola (dająca wystarczajace 
uprawnienia) nie wymaga hasła, ponieważ robiąc ręcznie set role ustawiam 
mu ją ( bez komunikatu błędu), a pomimo tego nadal nie ma dostępu do 
wymaganych zasobów.
Może jest coś bardziej magicznego w tej roli aplikacyjnej, o czym nie 
wiem? Bo teoretycznie jak dla mnie to już w tej chwili powinno działać.

Może być tak, że pomimo tego że się ręcznie włączy rolę? Baza i tak 
sprawdza w jakiś cudowny sposób nazwę aplikacji?

Pozdrawiam Ciekawy
Re: Oracle i uprawnienia dla aplikacji??
#82323
Author: Adam Siwoń
Date: Wed, 03 Sep 2014 06:55
48 lines
3573 bytes
W dniu 2014-09-03 06:24, Ciekawy pisze:
>
>> Tak jak mowiłem nie znam oracla ale coś takiego jak set role lub coś
>> podobnego to bym szukał nie w momencie logowania a w momencie importu
>> dumpa.
>
> Jest tak, użytkownik ma  przypisaną dodatkową rolę (faktycznie może to
> być rola aplikacyjna bo nie jest na początku aktywna, aktywna jest tylko
> rola odpowiedzialna za logowanie) ta rola (dająca wystarczajace
> uprawnienia) nie wymaga hasła, ponieważ robiąc ręcznie set role ustawiam
> mu ją ( bez komunikatu błędu), a pomimo tego nadal nie ma dostępu do
> wymaganych zasobów.
> Może jest coś bardziej magicznego w tej roli aplikacyjnej, o czym nie
> wiem? Bo teoretycznie jak dla mnie to już w tej chwili powinno działać.

Wydaje mi się, że nie do końca rozumiesz jak działają role w Oracle'u. 
Rola to nie grupa uprawnień, którą przypisujesz i masz. To grupa 
uprawnień, którą użytkownik ma prawo użyć w danej sesji. Nawet jeśli 
role nie mają haseł, to konieczne jest przypisanie roli do bieżącej 
sesji. Role przypisane do sesji możesz sprawdzić zapytaniem:

SELECT * FROM SESSION_ROLES;

Jeśli nie chcesz przypisywać roli po każdym połączeniu z bazą danych, to 
możesz przypisać rolę do użytkownika jako domyślną. Jako domyślna jest 
pewnie ustawiona ta rola z uprawnieniami do logowania, o której piszesz. 
Robi się to poleceniem:

ALTER USER user_name
DEFAULT ROLE
( role_name | ALL [EXCEPT role1, role2, ... ] | NONE );

Tyle tylko, że z tym stosowaniem roli domyślnych nie można przesadzać. 
Oracle ma limity domyślnych ról na użytkownika - w 10g to było chyba 128 
ról domyślnych na użytkownika. Jak jest w 11 nie sprawdzałem.

 > Może być tak, że pomimo tego że się ręcznie włączy rolę? Baza i tak
 > sprawdza w jakiś cudowny sposób nazwę aplikacji?

Nie przesadzaj z cudami. ;-) Jak masz Oracle'a postawionego na systemie 
Unixowym, to role mogą być nadawane automatycznie dla grup użytkowników, 
do których w systemie operacyjnym jest przypisany użytkownik. Jak Cię 
temat interesuje to więcej informacji znajdziesz tutaj:
http://docs.oracle.com/cd/B10501_01/server.920/a96521/privs.htm#15637

-- 
z pozdrowieniami
Adam Siwoń
Re: Oracle i uprawnienia dla aplikacji??
#82324
Author: Ciekawy
Date: Wed, 03 Sep 2014 18:19
26 lines
2435 bytes
> Wydaje mi się, że nie do końca rozumiesz jak działają role w Oracle'u.
> Rola to nie grupa uprawnień, którą przypisujesz i masz. To grupa
> uprawnień, którą użytkownik ma prawo użyć w danej sesji. Nawet jeśli
> role nie mają haseł, to konieczne jest przypisanie roli do bieżącej
> sesji. Role przypisane do sesji możesz sprawdzić zapytaniem:
>
> SELECT * FROM SESSION_ROLES;
>
> Jeśli nie chcesz przypisywać roli po każdym połączeniu z bazą danych, to
> możesz przypisać rolę do użytkownika jako domyślną. Jako domyślna jest
> pewnie ustawiona ta rola z uprawnieniami do logowania, o której piszesz.
> Robi się to poleceniem:
>

Dziękuję Adam serdecznie

Przepraszam ale nie dopatrzyłem się tego, że po prostu rola nadawana 
jest bez haseł, a program do analizy nie wizualizował nadanej roli.
Z uwagi, na słabą znajomość Oracla, zacząłem wierzyć w jakieś "cuda" 
które magicznie nadają uprawnienia, aplikacji bez triggera itd..
Jak coś się słabo zna, to zamiast poruszać się utartymi ścieżkami i brać 
na logikę, wziąłem to na magię (jakiejś nieznanej mi warstwy serwera) 
wynikającą z niewiedzy.

Sprawa rozwiązana pozdrawiam Ciekawy i przepraszam za kłopot
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads