1. Χρησιμοποιώντας τις προβολές: DBA_SYS_PRIVS` και `DBA_TAB_PRIVS`
Αυτές οι προβολές λεξικού δεδομένων παρέχουν ολοκληρωμένες πληροφορίες σχετικά με τα δικαιώματα συστήματος και αντικειμένων που χορηγούνται στους χρήστες. Το `dba_sys_privs` παρουσιάζει προνόμια συστήματος (π.χ.,` create table ', `create session'), ενώ το` dba_tab_privs` παρουσιάζει προνόμια αντικειμένων (π.χ., `select`,` insert`, `update` σε συγκεκριμένους πίνακες).
* για τα προνόμια του συστήματος:
`` sql
Επιλέξτε * από το DBA_SYS_PRIVS όπου ο Grantee ='USERNAME';
`` `
Αντικαταστήστε το `username` με το πραγματικό όνομα χρήστη.
* για τα προνόμια αντικειμένων:
`` sql
Επιλέξτε * από το DBA_TAB_PRIVS όπου ο Grantee ='USERNAME';
`` `
Αντικαταστήστε το `username` με το πραγματικό όνομα χρήστη. Αυτό θα δείξει όλα τα προνόμια σε όλα τα τραπέζια. Μπορείτε να βελτιώσετε αυτό το ερώτημα για να δείτε συγκεκριμένους πίνακες:
`` sql
Επιλέξτε * από το DBA_TAB_PRIVS όπου ο Grantee ='USERNAME' και το table_name ='table_name';
`` `
Αντικαταστήστε το `table_name` με το όνομα του πίνακα.
2. Χρησιμοποιώντας τις προβολές `all_sys_privs` και` all_tab_privs`:
Αυτές οι προβολές παρέχουν πληροφορίες σχετικά με τα προνόμια Ένας χρήστης * έχει * άμεσα ή έμμεσα μέσω ρόλων. Αυτό είναι χρήσιμο για έναν χρήστη που ελέγχει τα δικά του προνόμια. Εάν συνδεθείτε ως χρήστης, μπορείτε να χρησιμοποιήσετε αυτές τις προβολές:
* για τα προνόμια του συστήματος:
`` sql
Επιλέξτε * από all_sys_privs;
`` `
* για τα προνόμια αντικειμένων:
`` sql
Επιλέξτε * από all_tab_privs;
`` `
Μπορείτε επίσης να φιλτράρετε με όνομα χρήστη όπως οι προβολές `dba_`.
3. Χρησιμοποιώντας τις προβολές `user_sys_privs` και` user_tab_privs`:
Αυτές οι προβολές δείχνουν μόνο τα προνόμια που χορηγούνται απευθείας στον συνδεδεμένο χρήστη. Δεν δείχνουν προνόμια που χορηγούνται μέσω ρόλων. Χρήσιμο για έναν χρήστη να βλέπει μόνο τα δικά του άμεσα προνόμια.
* για τα προνόμια του συστήματος:
`` sql
Επιλέξτε * από το user_sys_privs;
`` `
* για τα προνόμια αντικειμένων:
`` sql
Επιλέξτε * από το user_tab_privs;
`` `
4. Χρήση της στήλης `ρόλου 'στις προηγούμενες προβολές:
Η στήλη `role` στο` dba_sys_privs`, `dba_tab_privs`,` all_sys_privs`, `all_tab_privs` υποδεικνύει εάν το προνόμιο χορηγείται απευθείας ή μέσω ενός ρόλου. Εάν χορηγηθεί μέσω ενός ρόλου, θα πρέπει να διερευνήσετε τα προνόμια που χορηγούνται σε αυτόν τον ρόλο. Μπορείτε να βρείτε πληροφορίες σχετικά με τους ρόλους χρησιμοποιώντας τις προβολές `dba_roles`,` all_roles 'ή `user_roles`, ανάλογα με το επίπεδο πρόσβασης.
5. Χρησιμοποιώντας το `show user`:
Αυτή η εντολή (σε SQL*Plus ή SQL Developer) θα εμφανίσει τον τρέχοντα συνδεδεμένο χρήστη. Αυτό δεν δείχνει άμεσα προνόμια, αλλά είναι ένα σημείο εκκίνησης για να χρησιμοποιήσετε τις παραπάνω προβολές.
Σημαντικές εκτιμήσεις:
* Ρόλοι βάσεων δεδομένων: Οι χρήστες συχνά λαμβάνουν προνόμια έμμεσα μέσω ρόλων. Πρέπει να εξετάσετε τους ρόλους που ανήκει ένας χρήστης και τα προνόμια που έχουν αυτοί οι ρόλοι. Αυτό απαιτεί την ερώτηση των προβολών `dba_roles`,` all_roles` ή `user_roles`.
* Τα προνόμια που καταρρέουν μέσω ρόλων: Οι ρόλοι μπορούν να δώσουν προνόμια σε άλλους ρόλους. Αυτό μπορεί να δημιουργήσει σύνθετες δομές προνομίων.
* Επίπεδα πρόσβασης: Χρειάζεστε τα κατάλληλα προνόμια (π.χ., "Επιλέξτε οποιοδήποτε λεξικό") για να ζητήσετε τις απόψεις λεξικών δεδομένων. Οι προβολές `dba_` απαιτούν γενικά τον ρόλο` dba '.
Θυμηθείτε να αντικαταστήσετε το `username` και το` table_name` με το πραγματικό όνομα χρήστη και το όνομα του πίνακα που σας ενδιαφέρει. Πάντα να τρέχετε αυτά τα ερωτήματα με προσοχή, ειδικά εκείνες που χρησιμοποιούν τις προβολές `dba_`, καθώς παρέχουν πρόσβαση σε ευαίσθητες πληροφορίες.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα