Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Περιορισμός χρήστη να βλέπει μια μόνο βάση

Îåêßíçóå áðü ôï ìÝëïò Karist. Τελευταία δημοσίευση από το μέλος Karist στις 20-09-2011, 15:28. Υπάρχουν 19 απαντήσεις.
Σελίδα 1 από 2 (20 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-09-2011, 15:06 67348

    Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Γεια σας,

    σε έναν SQL Server 2005  υπάρχουν 7 βασεις δεδομένων. Για ένα SQL χρηστη, οταν θα κανει login, θέλω να βλέπει μόνο μια βάση στην οποια θα έχει μονο read δικαιώματα.

    Ευχαριστώ εκ των προτέρων

  •  16-09-2011, 19:02 67356 σε απάντηση της 67348

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Ρϊξε μια ματιά σ' αυτό το video. Νομίζω ότι θα σου απαντηθούν πολλές απορίες για να υλοποιήσεις ύστερα κάτι πιο συγκεκριμένο. Εκείνο που σ' ενδιαφέρει είναι το δεύτερο μέρος του.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  16-09-2011, 19:47 67357 σε απάντηση της 67348

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Θα μπορούσες να κάνεις τα εξής.

    1) Kάνεις Login σαν admin στο Instance του SQL Server που σε ενδιαφέρει να μπει κάποια στιγμή ο χρήστης και να βλέπει μόνο μια βάση.
    2) Να φτιάξεις ένα SQL Server login (line 1)
    3) Να φτιάξεις την βάση που θέλεις να έχει ο χρήστης μόνο read δικαιώματα (αν το έχεις κάνει ήδη , οκ)
    4) Να φτιάξεις ένα Database user πάνω στο login αυτό (line 7)
    5) Στην γραμμή 7 δημιουργώ τον database user πάνω στο login
    6) Στην γραμμή 10 απλά βλέπω (και για να σου δείξω) ποιοι είναι οι database fixed roles.
    7) Στην γραμμή 12 απλά βλέπω ποια δικαιώματα/permissions του συγκεκριμένου fixed database role
    8) Στην γραμμή 14 προσθέτω τον user "thereaderuser" στον fixed database ρόλο "db_datareader"
    9) Στην γραμμή 16 δημιουργώ ένα πίνακα στην βάση και στις 24,25 εισάγω κάποια δεδομένα  (αυτά τα έχω κάνει για να τεστάρω ότι δουλεύει σωστά)
    10) Αποσυνδέσου από το Instance σαν admin και κάνε Login σαν "thereaderuser".
    11) θα μπορείς να εκτελέσεις την εντολή Select στην 27 γραμμή αλλά τίποτα στις γραμμές 29,30

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    CREATE LOGIN thereaderuser WITH PASSWORD ='P@$$w0rd'
    
    CREATE DATABASE thereaderuserDB
    
    USE thereaderuserDB
    
    CREATE USER thereaderuser FOR LOGIN thereaderuser;
    GO 
    
    exec sp_helpdbfixedrole

    sp_dbfixedrolepermission 'db_datareader'

    sp_addrolemember 'db_datareader','thereaderuser' CREATE TABLE customer (ID INT PRIMARY KEY, First_Name varchar(50) , Last_Name varchar(50), Address varchar(50), City varchar(50), Country varchar(25)) INSERT INTO customer VALUES (1, 'nik', 'kkk','abc street','london','uk') INSERT INTO customer VALUES (2, 'bb', 'rrr','ardf street','london','uk') SELECT * FROM customer DROP TABLE customer DELETE customer


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  17-09-2011, 06:09 67368 σε απάντηση της 67348

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Δεν έχω καταλάβει ακριβώς αυτό που ζητάς γιατί στο μυαλό μου παίζει και ένα άλλο σενάριο που δεν έχει καληφθεί από τις απαντήσεις που σου έχουν δωθεί. Η ερώτησή σου είναι γενική που δεν δίνεις πληροφορίες αν οι χρήστες θα μπαίνουν από κάποια εφαρμογή ή από το Management Console.

    Το σενάριο που αναφέρομαι είναι οι χρήστες σου κάνουν login στο Μanagement Console του SQL Server και εκεί ενώ έχεις δώσει Logins και Users οι χρήστες σου βλέπουν όλες τις εγκατεστημένες βάσεις που υπάρχουν. Φυσικά ανάλογα με τα δικαιώματα σε κάποιες από αυτές δεν θα μπορούν να μπουν αλλά τις βλέπουν όλες. Συνήθως κάτι τέτοιο συμβαίνει σε Shared Hosting SQL Server όπουν ο Host σου έχει φτιάξει μία βάση που δικαιούσαι ανάλογα με το Subscription αλλά όταν μπαίνεις στον Server με τα Credentials που σου δίνει βλέπεις και όλες τις άλλες βάσεις που υπάρχουν άλλων χρηστών. Φυσικά δεν έχεις δικαίωμα να τις ανοίξεις αλλά τις βλέπεις εκεί. Οπότε αν είναι αυτό το σενάριο, δηλαδή να μην βλέπεις τις άλλες βάσεις, νομίζω πως οι απαντήσεις που έχουν δωθεί καλύπτουν μόνο κομμάτι των απαιτήσεων. Εκτός και αν σε καλύπτει το User Instance που αναφέρεται στο Video.

    Το τι δικαιώματα θα δώσεις σε κάθε βάση έχει καλυφθεί από τις απαντήσεις που σου έχουν δωθεί.

    Αν πάλι ο χρήστης σου μπαίνει από εφαρμογή δεν θα μπορούσες από εκεί να του περιορίσεις τις διαθέσιμες βάσεις και να μην τις βλέπει;

    Οπότε δεν ξέρω αν εσύ έχεις ήδη καλυφθεί με τις απαντήσεις που σου έχουν δωθεί. Εγώ πάντως έχω μείνει με την απορία...

  •  17-09-2011, 09:30 67370 σε απάντηση της 67368

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Γιώργο,

    ελπίζω να σαι καλά και να πίνεις πολύ Guinness. Βοηθάει πολύ στο development. Μόνο ο φίλος που έκανε την ερώτηση μπορεί να μας απαντήσει σε αυτό...

    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  17-09-2011, 13:27 67374 σε απάντηση της 67370

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Σε ευχαριστώ αλλά μετά από 15 χρόνια προγραμματισμού έχω αναπτύξει τις δικές μου μεθόδους αντικαταθλιπτικών και τονωτικών.

    Το έχω μείνει με την απορία πήγαινε σε αυτόν που έκανε την ερώτηση γιατί δεν ξέρω τι εννοούσε εφόσων η ερώτηση του είναι γενική κατά το 50% οπότε δεν μπορεί να δωθεί μία σωστή απάντηση.

    Αλλά ακόμα και αν για μερικούς δεν είναι και μου φάνηκε εμένα τότε η ερώτησή του είχε δύο σκέλη. Να μην φαίνονται οι 7 βάσεις και οι χρήστες να έχουν μόνο Read δικαιώματα σε αυτήν που θα βλέπουν. Η απάντησή σου τον κάλυψε στο ένα σκέλος γιατί ακόμα και με τον τρόπο που έχεις πει όταν ο χρήστης μπει στο Management Studio του SQL θα δει και τις 7 βάσεις. Το να μπει σε κάποια από αυτές δεν θα μπορεί αλλά να τις δει ότι είναι εκεί μπορεί, αυτό άλλωστε το έχω ήδη πει στο post μου. Άρα τι εννοούσε με την φράση  'Για ένα SQL χρηστη, οταν θα κανει login, θέλω να βλέπει μόνο μια βάση'. Όταν μπαίνεις στο Management Studio τις βλέπεις όλες. Σημείο ασάφειας λοιπόν και ο λόγος της απορίας μου.

    Αν έγραφε 'σε έναν SQL Server 2005 υπάρχουν 7 βασεις δεδομένων. Για ένα SQL χρηστη, οταν θα κανει login, θέλω να έχει μόνο read δικαιώματα σε μία βάση' και έβγαζε έξω την λέξει να βλέπει δεν θα αναρωτιόμουν τι θέλει να πει.

     

     

  •  19-09-2011, 10:57 67392 σε απάντηση της 67374

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Καλημέρα, καλή εβδομάδα σε όλους.

    Ευχαριστώ πολύ για το ενδιαφέρον και τις απαντήσεις σας. Η επαφή μου με τον SQL βρίσκεται στα αρχικά στάδια και για τον λόγο αυτό δεν  ήμουν περισσότερο διευκρινιστικός από την αρχή.

    Θα σας περιγράψω το σεναριο:

    1. Ο SQL Server με τις 7 βάσεις δεδομένων θα "βγαίνει" στο Internet ( μέσα από firewall )
    2. Σε μια μονο βάση, θα υπαρχουν δεδομένα που θα ενημερώνονται καθημερινά και θα αφορούν διαφορετικούς πελάτες
    3. Οι πελάτες αυτοί, θα έχουν πρόσβαση στη βάση  και θα αντλούν τα δεδομένα τους μέσα από ένα view με where το SYSTEM_USER = το login που θα τους έχω δωσει. Τα δεδομένα θα τα αντλούν από δικές τους εφαρμογές. Εγώ θα τους παρέχω μόνο τα δεδομένα στη βάση. ΠΡΟΣΟΧΗ, όμως το table θα είναι το ίδιο για όλους! 
    4. Εδω πρόκύπτει ο εξής προβληματισμός: Ναι μεν το View θα τους περιορίσει να δουν τα data των άλλων, αλλά αν "χτυπήσουν" το table, μάλλον  θα τα δούν όλα! Sad
    5. Αν καποιος χρήστης κανει login από το Management Studio του SQL, να μη μπορεί να δει τι υπόλοιπες βασεις, παρά μόνο τη δική του βάση και φυσικά ο περιορισμός αυτός να υπάρχει και για τις εφαρμογές που θυμίζω θα είναι των πελατών.

    Τα ερωτήματα που προκείπτουν συνοπτικά από το παραπάνω σενάριο είναι:

    • Από το Management Studio ή από κάποια δική τους εφαρμογή, να μην εμφανίζονται οι άλλες βάσεις στον χρήστη, παρά μόνο αυτή που θα έχει δικαιώματα read για τον συγκεκριμένο χρήστη.
    • Στη βάση που θα εμφανίζεται, μπορώ να περιορίσω την πρόσβαση όλων των χρηστών στο table που θα υπάρχουν εγγραφές όλων των πελάτών και η πρόσβασή τους στα δεδομένα να γινεται αποκλειστικά μέσα από το view που θα περιέχει το  where SYSTEM_USER = το login που θα του έχω δωσει;

     

    Ευχαριστώ για το ενδιαφέρον σας.

  •  19-09-2011, 11:24 67393 σε απάντηση της 67392

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Δεν έχω καταλάβει ακριβώς την περιγραφή... Υπάρχει κοινό table που ενημερώνουν όλοι;

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  19-09-2011, 12:10 67400 σε απάντηση της 67393

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Μαρκο, υπάρχει ένα table που το ενημερώνω μόνο εγώ και οι πελατες έχουν μόνο select.

     

    Εχω όμως και νεότερα!

    Τεσταροντας  αυτά που ειδα στο video, εφτιαξα ένα χρήστη "TestUser" και έκανα login στο management studio, κατάφερα τα εξης:

    1. Στο πρωτο login,  έβλεπα όλες τις  βασεις, χωρίς όμως να έχω access σε αυτές, εκτός από την βάση που ειχα δωσει δικαώματα στον χρήστη  "TestUser". Ομως δεν έβλεπα  το table και το view.
    2. Πρόσθεσα πάνω στο view,  δεξι κλικ properties => Permissions τον χρήστη και του έδωσα Explicit Permissions  να έχει select = Grant

    Μετά από αυτό έκανα login και εμφανίζεται μόνο το view με μια κλειδαριά χωρίς να δίνει την δυνατότητα για Edit ή Design

    Μάλλον, το ένα σκελος της ερώτησης για το πως θα εμφανιζεται μονο το view και όχι το table έχει καλυφθεί, αν συμφωνείτε και εσεις.

    Μενει μονο το ερώτημα, αν μπορώ να "κρυψω" τις άλλες βασεις από τον χρήστη  "TestUser". 

     

  •  19-09-2011, 16:46 67406 σε απάντηση της 67400

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Οπότε δεν θέλεις να εμφανίζονται καθόλου οι άλλες βάσεις που υπάρχουν στον Server εκτός από αυτήν που μόνο ο χρήστης θα έχει read persmissions. Ακόμα και αν ο χρήστης δεν έχει δικαίωμα να μπορεί να 'μπει' στις άλλες βάσεις εσύ δεν θέλεις καν να εμφανίζονται. Σωστά;

  •  20-09-2011, 10:07 67416 σε απάντηση της 67406

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Πολύ σωστά George!

     

  •  20-09-2011, 12:29 67419 σε απάντηση της 67416

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Ναι μπορεί να γίνει.

    Θα δημιουργήσεις ένα Login κάτω από το Security Logins. (Όχι στην βάση αλλά στον Server)

    Στην συνέχεια θα τρέξεις το παρακάτω.

    USE <To όνομα της βάσης>
    ALTER AUTHORIZATION ON DATABASE:: <Το όνομα της βάσης> TO <Το όνομα του Login που δημιούργησες>

    με την παραπάνω εντολή κάνουμε το Login Owner της βάσης.

    Στην συνέχεια θα τρέξεις

    USE MASTER
    DENY VIEW ANY DATABASE TO <Το όνομα του Login που έδωσες>

    Η εντολή αυτή δεν εμφανίζει της βάσης στο Management Studio αλλά και από όπου συνδεθείς στο συγκεκριμένο Login. Εκτός από την Master, Tempdb και σε αυτές που είναι Owner. (Για αυτό τρέξαμε και την πρώτη εντολή.)

    Και τέλος εφόσων θέλεις μόνο να διαβάζουν τρέχεις την παρακάτω

    EXEC sp_dboption <Όνομα βάσης>, "READ ONLY", "TRUE"

    Και έτσι κάνεις την βάση Read Only. Αν θέλεις να μην είναι βάζεις το τελευταίο σε FALSE. Έπειτα κάνεις Login με το Login που έφτιαξες και θα δεις μόνο την βάση που θέλεις με την ένδειξη Read Only.

    Δεν μπορείς να αποφύγεις την Master και την TempDb. Νομίζω όμως ότι έφτασες εκεί που ήθελες.

  •  20-09-2011, 13:42 67420 σε απάντηση της 67419

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    George, όχι μόνο "έπαιξε" αλλά "παραέπαιξε" Big Smile,  δηλαδή οι μόνες βάσεις που "βλεπω" ειναι οι συστεμικές ( Master & TempDb ).

    Ψάχνω μήπως έκανα καποιο λαθος ή χρειάζεται να κανω κατι ακόμη.

  •  20-09-2011, 14:06 67421 σε απάντηση της 67420

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Δεν έβαλες το Login να είναι Owner της βάσης. Και αυτό θα το κάνεις μόνο με το statement που σου έδωσα.
  •  20-09-2011, 14:12 67422 σε απάντηση της 67421

    Απ: Περιορισμός χρήστη να βλέπει μια μόνο βάση

    Το έβαλα και μου έβγαλε το μηνυμα:

    Msg 15110, Level 16, State 1, Line 3
    The proposed new database owner is already a user or aliased in the database.

Σελίδα 1 από 2 (20 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems