Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 13251|Răspunde: 0

[Sursă] Controlul permisiunilor la nivel de coloană al bazei de date Oracle

[Copiază linkul]
Postat pe 11.12.2015 23:47:14 | | |
Clientul are o nevoie, un tabel cu peste 150 de câmpuri, clientul are nevoie doar de câteva câmpuri să fie văzute de oamenii companiei de scanare, această cerință poate fi realizată ușor cu o vizualizare, clientul solicită și aceste câmpuri, compania de scanare poate modifica doar câmpuri individuale, chiar nu am întâlnit o nevoie atât de mare de control al permisiunilor la nivel de coloană până acum, am făcut un experiment, mi se pare foarte interesant, înregistrează

Clientul are unulCerere, un tabel cu peste 150 de câmpuri, clientul a cerut să arate doar câteva câmpuri persoanelor care au scanat compania, aceastaCerereSe poate implementa ușor cu o vizualizare, iar clientul solicită aceste câmpuri, compania de scanare poate modifica doar câmpuri individuale, nu am întâlnit niciodată o nevoie atât de mare de control al permisiunilor la nivel de coloană, am făcut un experiment, mi se pare foarte interesant, înregistrează-lTestaprocesează.

1. Creează un tabel de testare și inserează date de testare punctuală:

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

proprietarul Varchar2(50),TABLESPACE_NAME Varchar2(50));

Masă creată.

SQL> inserează în test selectează rownum, table_name, proprietar,

TABLESPACE_NAME din dba_tables;

5490 de rânduri create.

SQL> commit;

Commit complet.

2. Creează un utilizator de test și oferă permisiuni de bază:

SQL> CONN / AS SYSDBA

Conectat.

SQL> crearea unui flux de utilizator identificat de utilizatorii impliciti ai spațiului de masă al fluxului;

Utilizator creat.

SQL> Grant Connect, Resursă la Stream;

Grant a reușit.

3. Acordați permisiuni utilizatorilor de test la nivel de coloană:

SQL> conn auth/autentificare

Conectat.

SQL> acordă update (id) la test către flux;

Grant a reușit.

SQL> acordă insert (table_name) de la test la stream;

Grant a reușit.

SQL>

SQL> acordă selectare la test către stream;

Grant a reușit.

4. Interogarea informațiilor despre setarea permisiunilor la nivel de coloană:

SQL> selectează GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE,

ACORDABIL din user_col_privs;

PROPRIETARUL DE DREPTUL TABLE_NAME COLUMN_NAME PRIVILEGIUL GRANTOR GRA

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

TESTUL DE AUTENTIFICARE ÎN FLUX TABLE_NAME INSERAREA NU

AUT AUTH TEST ID AUTH INSERT NO

AUTENTICARE AUT, ID AUTENTIFICARE ACTUALIZARE NU.

STREAM AUTH TEST ID ACTUALIZARE AUTENTIFICARE NU

5. Utilizatorul de test de autentificare verifică permisiunea SELECT:

SQL> flux/flux conn

Conectat.

SQL> selectează * de la (select * din ordinea testului de autenticare cu 1) unde rownum< =10;

ID TABLE_NAME SPAȚIUL DE MASĂ AL PROPRIETARULUI

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

1 SISTEM SYS ICOL$

SISTEM SYS 2 IND$

3 SISTEM COL$ SYS

4 CLU$ SISTEM SYS

5 TAB$ SISTEM SYS

6 SISTEMUL SYS LOB$

7 SISTEMUL SYS COLTYPE$

8 SUBCOLTIP$ SISTEM SYS

9 NTAB$ SISTEM SYS

10 SISTEM SYS REFCON$

10 rânduri selectate.

6. Verifică controlul permisiunilor UPDATE la nivel de coloană:

SQL> actualizează auth.test set owner='STREAM' unde id = 1;

update auth.test set owner='STREAM' unde id = 1

  *

EROARE la linia 1:

  ORA-01031: insufficient privileges

Se poate observa că valoarea câmpului OWNER din tabelul de testare nu poate fi modificată, raportarea ORA-01031: Permisiunea insuficientă, deoarece cele de mai sus oferă utilizatorului de test permisiunea de a modifica câmpul ID al tabelului de test, este posibilă modificarea câmpului ID.

SQL> update auth.test set id=10 unde id=1;

1 rând actualizat.

SQL> rollback;

Întoarcerea completă.

7. Verifică controlul permisiunilor INSERT la nivel de coloană:

SQL> inserați în valorile testului auth(1, 'stream', 'stream', 'users');

inserează în valorile testului auth(1,'stream', 'stream', 'users')

  *

EROARE la linia 1:

  ORA-01031: insufficient privileges

Deoarece cele de mai sus oferă utilizatorului de test permisiunea de inserție de a modifica câmpul TABLE_NAME al tabelului de testare, este posibil să se insereze TABLE_NAME câmp, dar numai dacă celelalte câmpuri NU au UNELE constrângeri.

SQL> inserați în valorile auth.test(table_name) ("stream");

1 rând creat.

SQL> rollback;

Întoarcerea completă.






Precedent:Tutorial detaliat de instalare, pas cu pas, pentru Oracle 10G
Următor:După ce Tencent Analytics este activat, sistemul este ocupat, vă rugăm să încercați din nou mai târziu
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com