Uprawnienia do wykonywania procedury [ORACLE 9i]
colin - 25-10-2005 10:58
Uprawnienia do wykonywania procedury [ORACLE 9i]
Witam
Natrafiłem na dość nietypowy problem:
W schemacie "BAZOWY" zakładam tablicę "PARAMS" z 4 kolumnami typu VARCHAR2. W tym samym schemacie tworzę prostą procedurę "test_privs1":
CREATE OR REPLACE PROCEDURE test_privs1 (iii varchar2) IS BEGIN INSERT INTO PARAMS VALUES ('test'||iii,'test','test','test'); END;
Nadaję uprawnienia do wykonywania na powyższą procedurę do roli:
GRANT EXECUTE ON test_privs1 TO BAZOWY_USER_ROLE;
a następnie przydzielam rolę użytkownikowi końcowemu:
GRANT BAZOWY_USER_ROLE TO "TESTOWY";
Użytkownik "TESTOWY" wykonuje procedurę, wykonuje się wstawienie wiersza do tablicy "BAZOWY"."PARAMS". Wszystko wykonuje się bez problemów dzięki domyślnemu parametrowi dla procedury AUTHID DEFINER (czyli uruchamianie procedury z prawami dostępu definiującego schematu - w tym przypadku dostęp do tablicy "BAZOWY"."PARAMS" jest niczym nie ograniczony, nie musi być także definiowane dodatkowe uprawnienie do tablicy przez rolę).
Zaistniał jednak przypadek (przy o wiele bardziej złożonej procedurze w paczce), kiedy operując na BLOB'ach i BFILE'ach uprawnienie AUTHID DEFINER nie zdaje rezultatu i ORACLE zgłasza błąd przy próbie modyfikacji wiersza z kolumną BLOB / BFILE. Być może jednak są jeszcze inne okoliczności i jest to tylko zbieg okoliczności a istnieją inne specjalne warunki, w których AUTHID DEFINER nie działa w ten sam sposób jak przy prezentowanej prostej operacji wstawiania wiersza.
Przeszukując dokumentację nie znalazłem niczego zaskakującego a opcja AUTHID DEFINER powinna właściwie załatwiać sprawę - tymbardziej nie rozumiem problemu. Z góry dziękuję za wszelkie komentarze, nawet dodatkowe pytania mile widziane.
I jeszcze błąd ORACLE, który występuje przy próbie modyfikacji danych w kolumnie BLOB:
ORA-01031: niewystarczające uprawnienia ORA-06512: przy "SYS.DBMS_LOB", linia 660
pozdrawiam colin
Lucyna Witkowska - 25-10-2005 10:58
colin <sscolinss@poczta.onet.pl> napisał: > Zaistniał jednak przypadek (przy o wiele bardziej złożonej procedurze w > paczce), kiedy operując na BLOB'ach i BFILE'ach uprawnienie AUTHID DEFINER > nie zdaje rezultatu i ORACLE zgłasza błąd przy próbie modyfikacji wiersza z > kolumną BLOB / BFILE. Być może jednak są jeszcze inne okoliczności i jest to > tylko zbieg okoliczności a istnieją inne specjalne warunki, w których AUTHID > DEFINER nie działa w ten sam sposób jak przy prezentowanej prostej operacji > wstawiania wiersza.
> Przeszukując dokumentację nie znalazłem niczego zaskakującego a opcja AUTHID > DEFINER powinna właściwie załatwiać sprawę - tymbardziej nie rozumiem > problemu. Z góry dziękuję za wszelkie komentarze, nawet dodatkowe pytania > mile widziane.
> I jeszcze błąd ORACLE, który występuje przy próbie modyfikacji danych w > kolumnie BLOB:
> ORA-01031: niewystarczające uprawnienia > ORA-06512: przy "SYS.DBMS_LOB", linia 660
Pytanie dodatkowe, czy ta procedura dziala poprawnie dla uzytkownika BAZOWY?
Pozdrowienia, LW
colin - 25-10-2005 10:58
Użytkownik "Lucyna Witkowska" <ypwitkow@nospamcyf-kr.edu.pl> napisał w wiadomości news:djkk3c$iqo$1@srv.cyf-kr.edu.pl... > colin <sscolinss@poczta.onet.pl> napisał: > > Zaistniał jednak przypadek (przy o wiele bardziej złożonej procedurze w > > paczce), kiedy operując na BLOB'ach i BFILE'ach uprawnienie AUTHID DEFINER > > nie zdaje rezultatu i ORACLE zgłasza błąd przy próbie modyfikacji wiersza z > > kolumną BLOB / BFILE. Być może jednak są jeszcze inne okoliczności i jest to > > tylko zbieg okoliczności a istnieją inne specjalne warunki, w których AUTHID > > DEFINER nie działa w ten sam sposób jak przy prezentowanej prostej operacji > > wstawiania wiersza. > > > Przeszukując dokumentację nie znalazłem niczego zaskakującego a opcja AUTHID > > DEFINER powinna właściwie załatwiać sprawę - tymbardziej nie rozumiem > > problemu. Z góry dziękuję za wszelkie komentarze, nawet dodatkowe pytania > > mile widziane. > > > I jeszcze błąd ORACLE, który występuje przy próbie modyfikacji danych w > > kolumnie BLOB: > > > ORA-01031: niewystarczające uprawnienia > > ORA-06512: przy "SYS.DBMS_LOB", linia 660 > > Pytanie dodatkowe, czy ta procedura dziala poprawnie dla uzytkownika > BAZOWY? > > Pozdrowienia, > LW >
Oczywiście :-) (i dla przykładu i dla drugiego przypadku z BLOB'ami)
Lucyna Witkowska - 25-10-2005 10:58
colin <sscolinss@poczta.onet.pl> napisał: > > Pytanie dodatkowe, czy ta procedura dziala poprawnie dla uzytkownika > > BAZOWY?
> Oczywiście :-) (i dla przykładu i dla drugiego przypadku z BLOB'ami)
A jesli nadasz uprawnienia do wykonywania tej procedury bezposrednio - nie przez rolę?
Pozdrowienia, LW PS. To jest troche szukanie po omacku - niestety nie mozna podejrzec co znajduje sie w pakiecie dbms_lob ;-)
colin - 25-10-2005 10:58
> > A jesli nadasz uprawnienia do wykonywania tej procedury bezposrednio - nie > przez rolę? > > Pozdrowienia, > LW > PS. To jest troche szukanie po omacku - niestety nie mozna podejrzec co > znajduje sie w pakiecie dbms_lob ;-)
Sprawdziłem także i to już na samym początku... oczywiście, także nie pomaga. Tylko wówczas gdy nadaję uprawnienia także i na tablicę zaczyna działać, jednakże tym samym otwieram użytkownikowi drogę do modyfikacji tablicy a tego chciałbym uniknąć.
PS: Przyznam szczerze, że szukanie po omacku daje czasem wiele frajdy, a najwięcej wówczas, gdy daje satysfakcjonujące efekty ;-).
colin - 27-10-2005 23:56
Witam raz jeszcze.
Widzę, że jednak nie znajdzie się nikt, kto wiedziałby jak rozwiązać tę małą niedogodność w dostępie przez procedury do tablicy z BLOB'ami.
pozdrawiam colin
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
[Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|