Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13251|Risposta: 0

[Fonte] Controllo dei permessi a livello di colonna nel database Oracle

[Copiato link]
Pubblicato su 11/12/2015 23:47:14 | | |
Il cliente ha un bisogno, una tabella con più di 150 campi, il cliente richiede solo alcuni campi che siano visti dalle persone dell'azienda di scansione, questo requisito può essere facilmente realizzato con una visualizzazione, anche il cliente richiede questi campi, l'azienda di scansione può modificare solo singoli campi, non ho mai incontrato una tale necessità di controllo dei permessi a livello di colonna prima, ho fatto un esperimento, mi sento molto interessante, registralo

Il cliente ne ha unoDomanda, una tabella con più di 150 campi, il cliente ha chiesto di mostrare solo alcuni campi alle persone che hanno scansionato l'azienda, questoDomandaPuò essere facilmente implementato con una visualizzazione, e il cliente richiede che questi campi, l'azienda di scansione possa modificare solo singoli campi, non avevo mai incontrato una tale necessità di controllo dei permessi a livello di colonna prima, ho fatto un esperimento, mi sento molto interessante, registraloTestprocesso.

1. Creare una tabella di test e inserire dati di test puntuale:

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

proprietario Varchar2(50), TABLESPACE_NAME Varchar2(50));

Tavolo creato.

SQL> inserisci in test seleziona rownum, table_name, proprietario,

TABLESPACE_NAME da dba_tables;

5490 righe create.

SQL> commit;

Commit completato.

2. Crea un utente di prova e fornisci permessi di base:

SQL> CONN / AS SYSDBA

Connesso.

SQL> creare flussi utente identificati dagli utenti predefiniti dello spazio tabellario del flusso;

Creato dall'utente.

SQL> concedere connettersi, risorsa a stream;

Grant ci riuscì.

3. Concedere permessi a livello di colonna agli utenti di test:

SQL> autenticazione/autenticazione conn

Connesso.

SQL> concede aggiornamento (id) dal test allo stream;

Grant ci riuscì.

SQL> concedere insert (table_name) dal test allo stream;

Grant ci riuscì.

SQL>

SQL> concedere la selezione al test per lo streaming;

Grant ci riuscì.

4. Informazioni di impostazione dei permessi a livello di colonna per interrogazione:

SQL> seleziona GRANTEE, PROPRIETARIO,TABLE_NAME,COLUMN_NAME,CONCEDENTE,PRIVILEGIO,

CONCESSO da user_col_privs;

PROPRIETARIO GENEROSO TABLE_NAME COLUMN_NAME PRIVILEGIO DEL CONCEDENTE GRA

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

TEST DI AUTENTICAZIONE IN FLUSSO TABLE_NAME INSERIMENTO AUTENTICAZIONE NO

AUT AUTH TEST ID AUTH INSERT NO

AUTENTICAZIONE AUT, ID AUTENTICAZIONE, AGGIORNAMENTO AUTENTICAZIONE: NO

STREAM AUTENTICAZIONE ID AUTENTICAZIONE AGGIORNAMENTO AUTENTICAZIONE NO

5. L'utente del test di accesso verifica il permesso SELECT:

SQL> stream/flusso conn

Connesso.

SQL> selezionare * da(seleziona * dall'ordine auth.test di 1) dove rownum< =10;

ID TABLE_NAME PROPRIETARIO DELLO SPAZIO DELLA TABELLA

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

1 SISTEMA SYS ICOL$

SISTEMA SYS 2 IND$

3 SISTEMA SYS COL$

4 CLU$ SISTEMA SYS

SISTEMA SYS 5 TAB$

6 SISTEMA SYS LOB$

7 SISTEMA SYS COLTYPE$

8 SISTEMA SYS: SUBCOLTYPE$

9 NTAB$ SISTEMA SYS

10 SISTEMA SYS REFCON$

10 righe selezionate.

6. Verifica controllo dei permessi UPDATE a livello di colonna:

SQL> update auth.test set owner='STREAM' dove id =1;

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

  *

ERRORE alla riga 1:

  ORA-01031: insufficient privileges

Si può vedere che il valore del campo OWNER della tabella di test non può essere modificato, report ORA-01031: Permesso insufficiente, poiché quanto sopra dà all'utente di test il permesso di modificare il campo ID della tabella di test, è possibile modificare il campo ID.

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

1 riga aggiornata.

Rollback SQL>;

Rollback completato.

7. Verifica controllo dei permessi INSERT a livello di colonna:

SQL> inserire nei valori del test auth(1, 'stream', 'stream', 'users');

inserire in auth.test valori (1,'stream', 'stream', 'users')

  *

ERRORE alla riga 1:

  ORA-01031: insufficient privileges

Poiché quanto sopra dà all'utente di test il permesso di inserimento per modificare il campo TABLE_NAME della tabella di test, è possibile inserire TABLE_NAME campo, ma solo se gli altri campi non hanno NON ALCUNI vincoli.

SQL> inserire valori in auth.test(table_name) ('stream');

1 riga creata.

Rollback SQL>;

Rollback completato.






Precedente:Tutorial dettagliato passo dopo passo per l'installazione di Oracle 10G
Prossimo:Dopo che Tencent Analytics è attivato, il sistema è occupato, per favore riprova più tardi
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com