Kunden har et behov, en tabell med mer enn 150 felt, kunden trenger bare noen felt for å bli sett av folkene i skannerfirmaet, dette kravet kan enkelt oppfylles med en visning, kunden ber også om disse feltene, skanneselskapet kan bare endre individuelle felt, jeg har egentlig aldri opplevd et slikt behov for tillatelseskontroll på kolonnenivå før, jeg gjorde et eksperiment, jeg synes det er veldig interessant, registrer det
Kunden har enEtterspørsel, en tabell med mer enn 150 felt, ba kunden om kun å vise noen av feltene til de som skannet selskapet, detteEtterspørselDet kan enkelt implementeres med en visning, og kunden ber om disse feltene, skannerfirmaet kan bare endre individuelle felt, jeg har egentlig ikke opplevd et slikt behov for tillatelseskontroll på kolonnenivå før, jeg gjorde et eksperiment, jeg synes det er veldig interessant, ta det oppPrøveprosess. 1. Lag en testtabell og sett inn punkttestdata: SQL> opprette tabelltest(id-nummer, table_name varchar2(50), eier Varchar2(50),TABLESPACE_NAME Varchar2(50)); Tabell opprettet. SQL> sett inn i testen velg rownum,table_name,owner, TABLESPACE_NAME fra dba_tables; 5490 rader opprettet. SQL> commit; Forpliktelse fullført. 2. Opprett en testbruker og gi grunnleggende tillatelser: SQL> CONN / AS SYSDBA Koblet. SQL> oppretter brukerstrøm identifisert ved strømmens standard tabellplassbrukere; Brukeropprettet. SQL> tilknytte, ressurs til strøm; Grant lyktes. 3. Gi testbrukere kolonnenivå-tillatelser: SQL> conn auth/auth Koblet. SQL> gi oppdatering (id) på test for å streame; Grant lyktes. SQL> gi innsetting (table_name) på test to stream; Grant lyktes. SQL> SQL> tildelte valg av test for strømming; Grant lyktes. 4. Søk i informasjon om tillatelsesinnstillinger på kolonnenivå: SQL> velg GRANTEE,OWNER,TABLE_NAME,COLUMN_NAME,GRANTOR,PRIVILEGE, TILDELES FRA user_col_privs; MOTTAKER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA ------- ----- ---------- ----------- ------- --------- --- STREAM AUTH-TEST TABLE_NAME AUTH, SETT INN NEI AUT AUTH TEST ID AUTH AUTH INSERT NEI AUTENTISERING TEST-ID AUTENTISERING OPPDATERING NEI STRØMAUTENTISERING TEST-ID AUTENTISERING OPPDATERING NEI 5. Innloggingstestbruker verifiserer SELECT-tillatelse: SQL> conn stream/stream Koblet. SQL> velg * fra (velg * fra auth.test-orden med 1) hvor rownum< = 10; ID TABLE_NAME EIER-TABELLSPACE ---------- -------------------- ---------- ---------- 1 ICOL$ SYS-SYSTEM 2 IND$ SYS-SYSTEM 3 COL$ SYS-SYSTEM 4 CLU$ SYS-SYSTEM 5 TAB$ SYS-SYSTEM 6 LOB$ SYS-SYSTEM 7 COLTYPE$ SYS-SYSTEM 8 SUBCOLTYPE$ SYS-SYSTEM 9 NTAB$ SYS-SYSTEM 10 REFCON$ SYS-SYSTEM 10 rader valgt. 6. Verifiser kolonnenivå UPDATE-tillatelseskontroll: SQL> update auth.test set owner='STREAM' hvor id =1; update auth.test set owner='STREAM' hvor id =1 * FEIL på linje 1: ORA-01031: insufficient privileges Det kan sees at verdien av OWNER-feltet i testtabellen ikke er tillatt å endres, rapport ORA-01031: Utilstrekkelig tillatelse, siden ovenstående gir testbrukeren tillatelse til å endre ID-feltet i testtabellen, er det mulig å endre ID-feltet. SQL> update auth.test set id=10 hvor id=1; 1 rad oppdatert. SQL> tilbakerulling; Tilbakerulling fullført. 7. Verifiser kolonnenivå INSERT tillatelseskontroll: SQL> sett inn i auth.test-verdier (1,'stream','stream','users'); sett inn i auth.test values(1,'stream','stream','users') * FEIL på linje 1: ORA-01031: insufficient privileges Siden ovenstående gir testbrukeren innsettingstillatelse til å endre TABLE_NAME felt i testtabellen, er det mulig å sette inn TABLE_NAME felt, men bare hvis de andre feltene ikke har IKKE NOEN begrensninger. SQL> sett inn i auth.test(table_name)-verdier ('stream'); 1 rad opprettet. SQL> tilbakerulling; Tilbakerulling fullført.
|