Καλημέρα σας,
Θα ήθελα να σας ρωτήσω κάτι. Χρησιμοποιούμε Oracle SQL Developer στη σχολή μου σε αυτό το εξάμηνο προκειμένου να παραδώσουμε εργαστηριακές ασκήσεις. Το θέμα όμως που έχω έχει ως εξής. Από τη στιγμή που εγώ περάσω κάτι στη βάση μου (π.χ. procedure / trigger) αυτομάτως ο καθένας που έχει συνδεθεί στον sql server της σχολής, μπορεί να δει το κώδικα της procedure / trigger.
Για να το εξηγήσω καλύτερα, υπάρχει μία περιοχή στα αριστερά στο δέντρο που ονομάζεται "Other Users". Εκεί μέσα, εμφανίζονται όλοι οι χρήστες που έχουν ενεργό account στον server. Ο καθένας λοιπόν, αν επιλέξει όποιον άλλον χρήστη θέλει, μπαίνει στη βάση του και βλέπει / παίρνει κώδικα. Δοκίμασα και άλλαξα το pass από τα connection properties (by default κάναμε login με username το username μας και password το username μας. Οπότε έβαλα ένα δικό μου pass με μια εντολή που βρήκα αλλά και πάλι, δεν αποτρέπει το παραπάνω που περιέγραψα (το οποίο εύκολα μπορεί να το διαπιστώσει κανείς από τα logs που κρατάει ο server, Tools -> Monitor Sessions).
Γνωρίζει κανείς κάποιον τρόπο να το εμποδίσω?
Άκουσα κάτι για scema αλλά δεν κατάλαβα...
Εμφάνιση 1-8 από 8
-
18-05-11, 01:14 Ασφάλεια Βάσης - SQL Developer #1
Intel Core i7-3930K | Gigabyte GA-X79-UD5 | Corsair Hydro Series H100i | G.Skill Ares 64GB | Asrock Arc A380 6GB OC | Creative SoundBlaster Z | OCZ Vector SSD 128GB | WD CaviarBlack 640GB | WD RED 2TB | Coolermaster Silent Pro M600 | Coolermaster 690 Pure Black Edition Case | Triple Monitor: Dell U2311H - 2 x Dell U2312HM
MacBook Pro (Retina 13-inch / 16GB Ram)
iPhone 15 Pro 128GB Black Titanium
-
18-05-11, 08:58 Απάντηση: Ασφάλεια Βάσης - SQL Developer #2
Η βάση είναι SQL Server ή Oracle?
Σε Oracle και εφόσον φτιάχνεις αντκείμενα στο σχήμα σου, δες στο view USER_TAB_PRIVS για το ποιοί έχουν πρόσβαση στα αντικείμενα σου (πίνακες, procedures,...) και χρησιμοποίησηε την εντολή REVOKE για να αφαιρέσεις τα δικαιώματα.
Σε SQL Server τα πράγματα είναι διφορετικά και δεν τα ξέρω τόσο καλά....
Θυμάμαι ότι η ασφάλεια ορίζεται κεντρικά για κάθε server, αν ποας στο αντίστοιχο μενού θα δεις όλους τους χρήστες και στις ιδιότητες τους θα δεις σε ποιές βάσεις έχουν πρόσβαση.
Αν έχουν πρόσβαση σε αυτήν που δουλεύεις και έχεις δικαιώματα διαχειριστή, μπορείς να αφαιρέσεις την πρόσβαση.
-
18-05-11, 09:26 Απάντηση: Ασφάλεια Βάσης - SQL Developer #3
Eχετε ο καθένας διαφορετικό username/password στην βάση; Εαν ναι, τότε για να μπορούν να δούν οι άλλοι το δικό σου schema (δηλαδή πίνακες, views, procedures, triggers etc) είτε έχουν δικαίωμα DBA (η εύκολη λύση για όσους δεν ξέρουν/μπορούν να ορίσουν finegrained δικαιώματα και ρόλους ή εχει δωθεί σχετικό δικαίωμα σε κάθε user στην βάση - πιθανόν μέσω ενός role).
Στην περίπτωση αυτή το καλύτερο που μπορείς να κάνεις, μιας και δεν μπορείς να αναιρέσεις το δικαίωμα DBA άλλων χρηστών, είναι να κάνεις wrap τον κώδικα.
http://www.oracle-base.com/articles/..._DDL_10gR2.php
Αυτό θα κάνει το κώδικά σου σε μια μορφή κωδικοποιημένη obsfucated και δύσκολο έως αδύνατο σε κάποιον άλλο να τον δεί. Εκτός του function / procedure call header.
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
18-05-11, 09:26 Απάντηση: Ασφάλεια Βάσης - SQL Developer #4
Με τα grant/revoke μπορείς να ορίσεις ποιοι χρήστες έχουν πρόσβαση σε ένα αντικείμενο καθώς και τον τύπο αυτής.
-
18-05-11, 09:30 Απάντηση: Ασφάλεια Βάσης - SQL Developer #5
δεν παίζει εαν ο άλλος user έχει dba δικαιώματα. Γιατί μπορεί να κάνει ότι θέλει, είναι dba. Το πιθανότερο είναι ότι αντι να δώσουν λεπτομερή και ακριβή δικαιώματα σε κάθε χρήστη, τους δώσανε όλους dba δικαιώματα.
QoS: Τι είναι τούτο το πράγμα; Ευρυζωνικά: Μύθοι και πραγματικότητα Οδηγίες Εγκατάστασης Oracle 10G σε Linux (RHEL4)Περι αλόγιστης χρήσης Ιντερνετ
Ikariam.gr anon@AnonCity Guzoos@76:12
-
18-05-11, 10:43 Απάντηση: Ασφάλεια Βάσης - SQL Developer #6
@gitane
Oracle SQL Developer
@anon
Κοίταξα το Link αλλά μπερδεύτηκα περισσότερο. Πολύ κώδικας. Έτρεξα τη function αλλά μετά τι;
By default, λέμε στο διαχειριστή ότι είμαστε οι "τάδε", μας ενεργοποιεί τον χώρο μας στο server με στοιχεία σύνδεσης ως εξής:
username: icsdXXXXX
password: icsdXXXXX
Ουσιαστικά δηλ., για να συνδεθεί κάποιος στη βάση του άλλου, αρκεί να δώσει το username του που είναι φυσικά γνωστό σε όλους. Επιπλέον, υπάρχει ακόμη ευκολότερος τρόπος (αυτός που περιέγραψα παραπάνω με τη περιοχή Other Users του δέντρου) όπου δεν χρειάζεται καν να συνδεθείς στη βάση του άλλου εισάγοντας τα διαπιστευτήρια αλλά απλά κλικάρεις τον ίδιο το χρήστη (icsdXXXXX) στην περιοχή εκείνη.
@pts
Από όσο κοίταξα, μπορώ να κόψω δικαιώματα μόνο σε tables / procedures /... ένα - ένα και όχι σε όλη τη βάση. Αν και αμφιβάλλω αν θα δουλέψει. Θ ατο δοκιμάσω τώρα σε μία procedure και θα δω.
edit: (@pts)
Έτρεξα την εντολή "revoke execute on ADDILIKIES from public;" για μία procedure ADDILIKIES που έχω αλλά μου έβγλε μύνημα:
Error starting at line 1 in command:
revoke execute on ADDILIKIES from public
Error report:
SQL Error: ORA-01927: δεν είναι δυνατή η εκτέλεση REVOKE για προνόμια που δεν έχετε παραχωρήσει
01927. 00000 - "cannot REVOKE privileges you did not grant"
*Cause: You can only revoke privileges you granted.
*Action: Don't revoke these privileges.
........Auto merged post: icsd08063 πρόσθεσε 26 λεπτά και 30 δευτερόλεπτα αργότερα ........
Έτρεξα την function get_date_string και μετά τον κώδικα:
Κώδικας:SET SERVEROUTPUT ON SIZE UNLIMITED DECLARE l_source VARCHAR2(32767); l_wrap VARCHAR2(32767); BEGIN l_source := 'CREATE OR REPLACE FUNCTION get_date_string RETURN VARCHAR2 AS' || 'BEGIN ' || 'RETURN TO_CHAR(SYSDATE, ''DD-MON-YYYY''); ' || 'END get_date_string;'; l_wrap := SYS.DBMS_DDL.WRAP(ddl => l_source); DBMS_OUTPUT.put_line(l_wrap); END;
Τελευταία επεξεργασία από το μέλος icsd08063 : 18-05-11 στις 10:43. Αιτία: auto merged post
Intel Core i7-3930K | Gigabyte GA-X79-UD5 | Corsair Hydro Series H100i | G.Skill Ares 64GB | Asrock Arc A380 6GB OC | Creative SoundBlaster Z | OCZ Vector SSD 128GB | WD CaviarBlack 640GB | WD RED 2TB | Coolermaster Silent Pro M600 | Coolermaster 690 Pure Black Edition Case | Triple Monitor: Dell U2311H - 2 x Dell U2312HM
MacBook Pro (Retina 13-inch / 16GB Ram)
iPhone 15 Pro 128GB Black Titanium
-
18-05-11, 16:06 Απάντηση: Ασφάλεια Βάσης - SQL Developer #7
Μήπως μπορείς να αλλάξεις και τον κώδικα των άλλων?
Μάλλον έχει δοθεί κάποιο συστεμικό δικαίωμα, όπως το "ALTER ANY PROCEDURE", οπότε δεν μπορείς να κάνεις τίποτα, μόνο ο DBA μπορεί.
Το μόνο που μένει είναι ότι είπε ο anon, δηλαδή να κάνεις wrap τον κώδικα.
-
19-05-11, 17:50 Απάντηση: Ασφάλεια Βάσης - SQL Developer #8
Παρόμοια Θέματα
-
Απομακρυσμένο backup Mysql βάσης
Από Kapnos στο φόρουμ Unix - LinuxΜηνύματα: 3Τελευταίο Μήνυμα: 21-01-10, 10:24 -
Μετατροπη βασης Access σε sql εντολές
Από teorid στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 4Τελευταίο Μήνυμα: 30-01-08, 20:34
Bookmarks