Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 13251|Odpowiedź: 0

[Źródło] Kontrola uprawnień na poziomie kolumnowej bazy danych Oracle

[Skopiuj link]
Opublikowano 11.12.2015 23:47:14 | | |
Klient ma potrzebę tabeli z ponad 150 pól, klient potrzebuje, aby tylko niektóre pola były widoczne przez osoby firmy skanującej, co można łatwo zrealizować za pomocą widoku, klient również prosi, te pola firma może modyfikować tylko poszczególne pola, naprawdę nigdy wcześniej nie spotkałem się z taką potrzebą kontroli uprawnień na poziomie kolumn, przeprowadziłem eksperyment, czuję się bardzo interesująco, nagrałem to

Klient ma takiPopyt, tabeli z ponad 150 polami, klient poprosił, by pokazać tylko część pól osobom skanującym firmę, coPopytMożna to łatwo zaimplementować za pomocą widoku, a klient prosi, aby te pola – firma skanująca może modyfikować tylko poszczególne pola, naprawdę nigdy wcześniej nie spotkałem się z taką potrzebą kontroli uprawnień na poziomie kolumn, przeprowadziłem eksperyment, czuję się bardzo interesująco, nagraj toTestProces.

1. Stwórz tabelę testową i wstaw dane testowe punktowe:

  SQL> Create table test (id number,table_name varchar2(50),

właściciel varchar2(50),TABLESPACE_NAME varchar2(50));

Tabela utworzona.

SQL> wstaw do testu wybierz rownum,table_name,owner,

TABLESPACE_NAME z dba_tables;

Utworzono 5490 wierszy.

SQL> commit;

Zobowiązanie zakończone.

2. Utworzenie użytkownika testowego i nadanie podstawowych uprawnień:

SQL> CONN / AS SYSDBA

Połączony.

SQL> tworzenie strumienia użytkownika identyfikowanego przez domyślnych użytkowników przestrzeni tabelowej strumienia;

Stworzony przez użytkownika.

SQL> grant connect, resource to stream;

Grant odniósł sukces.

3. Przyznaj użytkownikom testowym uprawnienia na poziomie kolumny:

SQL> conn auth/auth

Połączony.

SQL> aktualizacja (id) na test to stream;

Grant odniósł sukces.

SQL> przyznaj insert (table_name) na test to stream;

Grant odniósł sukces.

SQL>

SQL> wybiór podczas testu do streamowania;

Grant odniósł sukces.

4. Pytaj o informacje o ustawieniach uprawnień na poziomie kolumn:

SQL> wybierz BENEFICJENTA, WŁAŚCICIELA, TABLE_NAME, COLUMN_NAME, GRANTOR, PRZYWILEJ,

PRZYZNAWANA od user_col_privs;

WŁAŚCICIEL GRANTORA TABLE_NAME COLUMN_NAME PRZYWILEJ GRANTORA GRA

------- ----- ---------- ----------- ------- --------- ---

TEST UWIERZYTELNIANIA STRUMIENIOWEGO TABLE_NAME WSTAW NUMER UWIERZYTELNIANIA

AUT AUT TEST TEST ID AUTH WSTAW NR

AUT TEST AUTH TEST ID AKTUALIZACJA AUTORYZACJI NR

STREAM AUTH TEST ID AKTUALIZACJA AUTYZACJI

5. Użytkownik testu logowania weryfikuje uprawnienia SELECT:

SQL> conn stream/stream

Połączony.

SQL> wybierz * from(wybierz * z auth.test order przez 1) gdzie rownum< =10;

ID TABLE_NAME WŁAŚCICIEL STOŁU

---------- -------------------- ---------- ----------

1 ICOL$ SYS SYSTEM

2 IND$ SYSTEM SYS

3 COL$ SYSTEM SYS

SYSTEM 4 CLU$ SYS

SYSTEM 5 TAB$ SYS

6 LOB$ SYSTEM SYS

7 COLTYPE$ SYSTEM SYS

8 SYSTEM SYS SUBCOLTYPE$

9 NTAB$ SYSTEM SYS

10 REFCON$ SYSTEM SYS

Wybrano 10 wierszy.

6. Weryfikacja kontroli uprawnień UPDATE na poziomie kolumnowym:

SQL> aktualizacja auth.test set owner='STREAM', gdzie id =1;

aktualizacja auth.test set owner='STREAM', gdzie id =1

  *

BŁĄD na linii 1:

  ORA-01031: insufficient privileges

Widać, że wartość pola OWNER tabeli testowej nie może być modyfikowana, raport ORA-01031: Niewystarczające uprawnienia, ponieważ powyższe daje użytkownikowi testowemu uprawnienia do modyfikacji pola ID tabeli testowej, możliwe jest zmodyfikowanie pola ID.

SQL> aktualizacja auth.test set id=10 gdzie id=1;

Zaktualizowano 1 wiersz.

SQL> rollback;

Cofanie zakończone.

7. Weryfikacja kontroli uprawnień INSERT na poziomie kolumny:

SQL> wstaw do auth.test values (1,'stream','stream', 'stream', 'users');

Wprowadź do auth.test wartości (1,'stream', 'stream', 'users')

  *

BŁĄD na linii 1:

  ORA-01031: insufficient privileges

Ponieważ powyższe daje użytkownikowi testowemu uprawnienia do modyfikacji pola TABLE_NAME w tabeli testowej, możliwe jest wstawienie TABLE_NAME pola, ale tylko wtedy, gdy pozostałe pola nie mają ŻADNYCH ograniczeń.

SQL> wstaw do auth.test(table_name) wartości ("stream"),

Utworzono 1 wiersz.

SQL> rollback;

Cofanie zakończone.






Poprzedni:Szczegółowy krok po kroku samouczek instalacji Oracle 10G
Następny:Po włączeniu Tencent Analytics system jest zajęty, spróbuj ponownie później
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com