Ο πελάτης έχει μια ανάγκη, έναν πίνακα με περισσότερα από 150 πεδία, ο πελάτης απαιτεί μόνο ορισμένα πεδία για να τα δουν οι άνθρωποι της εταιρείας σάρωσης, αυτή η απαίτηση μπορεί εύκολα να πραγματοποιηθεί με μια προβολή, ο πελάτης ζητά επίσης, αυτά τα πεδία, η εταιρεία σάρωσης μπορεί να τροποποιήσει μόνο μεμονωμένα πεδία, πραγματικά δεν έχω συναντήσει τέτοια ανάγκη για έλεγχο αδειών σε επίπεδο στήλης πριν, έκανα ένα πείραμα, νιώθω πολύ ενδιαφέρον, καταγράψτε το
Ο πελάτης έχει έναΖήτηση, έναν πίνακα με περισσότερα από 150 πεδία, ο πελάτης ζήτησε να δείξει μόνο μερικά από τα πεδία στα άτομα που σάρωσαν την εταιρεία, αυτόΖήτησηΜπορεί να εφαρμοστεί εύκολα με μια προβολή και ο πελάτης ζητά αυτά τα πεδία, η εταιρεία σάρωσης μπορεί να τροποποιήσει μόνο μεμονωμένα πεδία, πραγματικά δεν έχω συναντήσει τέτοια ανάγκη για έλεγχο αδειών σε επίπεδο στήλης πριν, έκανα ένα πείραμα, νιώθω πολύ ενδιαφέρον, καταγράψτε τοΔοκιμήδιαδικασία. 1. Δημιουργήστε έναν πίνακα δοκιμής και εισαγάγετε δεδομένα δοκιμής σημείου: SQL> δημιουργία δοκιμής πίνακα (αριθμός αναγνωριστικού table_name varchar2(50), ιδιοκτήτης varchar2(50),TABLESPACE_NAME varchar2(50)); Δημιουργήθηκε πίνακας. SQL> εισαγωγή στη δοκιμαστική επιλογή σειράς, table_name, ιδιοκτήτης, TABLESPACE_NAME από dba_tables. Δημιουργήθηκαν 5490 σειρές. SQL> υποβολή; Η δέσμευση ολοκληρώθηκε. 2. Δημιουργήστε έναν δοκιμαστικό χρήστη και δώστε βασικά δικαιώματα: SQL> CONN / ΩΣ SYSDBA Συνδεδεμένος. SQL> δημιουργία ροής χρήστη που προσδιορίζεται από χρήστες προεπιλεγμένου χώρου πινάκων ροής. Ο χρήστης δημιουργήθηκε. SQL> επιχορήγηση σύνδεση, πόρος σε ροή. Ο Γκραντ πέτυχε. 3. Εκχωρήστε στους χρήστες δοκιμής δικαιώματα σε επίπεδο στήλης: SQL> conn auth/auth Συνδεδεμένος. Ενημέρωση επιχορήγησης SQL> (id) κατά τη δοκιμή σε ροή. Ο Γκραντ πέτυχε. SQL> ένθετο επιχορήγησης (table_name) σε δοκιμή σε ροή. Ο Γκραντ πέτυχε. SQL> SQL> επιχορήγηση επιλογής κατά τη δοκιμή για ροή. Ο Γκραντ πέτυχε. 4. Πληροφορίες ρύθμισης δικαιωμάτων σε επίπεδο στήλης ερωτήματος: SQL> επιλέξτε ΔΙΚΑΙΟΥΧΟΣ,ΙΔΙΟΚΤΗΤΗΣ,TABLE_NAME,COLUMN_NAME,ΠΑΡΑΧΩΡΗΤΗΣ,ΠΡΟΝΟΜΙΟ, ΧΟΡΗΓΟΥΜΕΝΟ από user_col_privs. ΔΩΡΕΟΔΌΧΟΣ ΙΔΙΟΚΤΉΤΗΣ TABLE_NAME COLUMN_NAME ΠΡΟΝΌΜΙΟ ΔΩΡΗΤΉ GRA ------- ----- ---------- ----------- ------- --------- --- ΔΟΚΙΜΉ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΡΟΉΣ TABLE_NAME ΕΙΣΑΓΩΓΉ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΌΧΙ ΑΝΑΓΝΩΡΙΣΤΙΚΌ ΔΟΚΙΜΉΣ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ AUT ΕΙΣΑΓΩΓΉ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΑΡΙΘ. ΑΝΑΓΝΩΡΙΣΤΙΚΌ ΔΟΚΙΜΉΣ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ AUT ΕΝΗΜΈΡΩΣΗ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΌΧΙ ΑΝΑΓΝΩΡΙΣΤΙΚΌ ΔΟΚΙΜΉΣ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΡΟΉΣ ΕΝΗΜΈΡΩΣΗ ΕΛΈΓΧΟΥ ΤΑΥΤΌΤΗΤΑΣ ΌΧΙ 5. Ο χρήστης δοκιμής σύνδεσης επαληθεύει την άδεια SELECT: SQL> conn ροή/ροή Συνδεδεμένος. SQL> επιλέξτε * από(επιλέξτε * από auth.test σειρά κατά 1) όπου rownum< =10; ID TABLE_NAME OWNER TABLESPACE ---------- -------------------- ---------- ---------- 1 ΣΥΣΤΗΜΑ ICOL$ SYS 2 ΣΥΣΤΗΜΑ SYS IND$ ΣΥΣΤΗΜΑ SYS 3 COL$ 4 ΣΥΣΤΗΜΑ CLU$ SYS ΣΥΣΤΗΜΑ SYS 5 TAB$ ΣΥΣΤΗΜΑ SYS 6 LOB$ 7 ΣΥΣΤΗΜΑ COLTYPE$ SYS 8 ΣΥΣΤΗΜΑ SYS SUBCOLTYPE$ 9 ΣΥΣΤΗΜΑ NTAB$ SYS 10 ΣΥΣΤΗΜΑ SYS REFCON$ Επιλέχθηκαν 10 γραμμές. 6. Επαληθεύστε το στοιχείο ελέγχου δικαιωμάτων UPDATE σε επίπεδο στήλης: SQL> ενημέρωση auth.test set owner='STREAM' όπου id =1; ενημέρωση auth.test set owner='STREAM' όπου id =1 * ΣΦΑΛΜΑ στη γραμμή 1: ORA-01031: insufficient privileges Μπορεί να φανεί ότι η τιμή του πεδίου OWNER του πίνακα δοκιμής δεν επιτρέπεται να τροποποιηθεί, αναφορά ORA-01031: Ανεπαρκής άδεια, καθώς τα παραπάνω δίνουν στον χρήστη δοκιμής την άδεια να τροποποιήσει το πεδίο ID του πίνακα δοκιμής, είναι δυνατή η τροποποίηση του πεδίου ID. SQL> ενημέρωση auth.test set id=10 όπου id=1; Ενημερώθηκε 1 σειρά. SQL> επαναφορά; Η επαναφορά ολοκληρώθηκε. 7. Επαληθεύστε το στοιχείο ελέγχου δικαιωμάτων INSERT σε επίπεδο στήλης: SQL> εισαγωγή στο auth.test values(1,'stream','stream','users'); εισαγωγή στις τιμές auth.test(1,'ροή','ροή','χρήστες') * ΣΦΑΛΜΑ στη γραμμή 1: ORA-01031: insufficient privileges Δεδομένου ότι τα παραπάνω δίνουν στον δοκιμαστικό χρήστη το δικαίωμα εισαγωγής να τροποποιήσει το πεδίο TABLE_NAME του δοκιμαστικού πίνακα, είναι δυνατή η εισαγωγή TABLE_NAME πεδίου, αλλά μόνο εάν τα άλλα πεδία δεν έχουν ΟΧΙ ΚΑΠΟΙΟΥΣ περιορισμούς. SQL> εισαγωγή στις τιμές auth.test(table_name) («ροή»)· Δημιουργήθηκε 1 σειρά. SQL> επαναφορά; Η επαναφορά ολοκληρώθηκε.
|