<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23315.aspx</link><pubDate>Wed, 10 Jan 2007 22:07:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23315</guid><dc:creator>moruin</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23315.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23315</wfw:commentRss><description>Καλημέρα, συμφωνώ απόλυτα με τον cap.&lt;br /&gt;
&lt;br /&gt;
Σε γενικές γραμμές όταν χρειάζεται να υπάρχει ελεγχόμενη πρόσβαση, στις εφαρμογές που αναπτύσω, επιλέγω να φτιάξω ένα login με τα βασικά δικαιώματα. Ο έλεγχος ανήκει στον κώδικα, τι θα βλέπει/κάνει ο κάθε χρήστης της εφαρμογής. Όταν χρειάζεται ποιο σοβαρή δουλειά απλά κάνω relogin με administrative rights και την κάνω.</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23299.aspx</link><pubDate>Wed, 10 Jan 2007 18:05:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23299</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23299.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23299</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;cap wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Οντως δεν είναι χρήστες, είναι ρόλοι. Φαντάσου ένα "ζωντανό" "ανοιχτό" web σύστημα οπου π.χ. οι χρήστες εγγράφονται κατά βούληση. Τι κάνεις; Για κάθε νέο account φτιάχνεις ένα χρήστη στον SQL Server;&lt;BR&gt;&lt;BR&gt;Η απάντηση είναι οχι. Ακόμα και αν δεν θέλεις να παίξεις με ρόλους, μια λύση είναι να δημιουργήσεις ΕΝΑ χρήστη στον SQL Server με ακριβώς τα προνόμια που θέλεις να έχουν ΟΛΟΙ οι web χρήστες σου και να τους κάνεις map όλους εκει πάνω.&lt;BR&gt;&lt;BR&gt;Αν θέλεις να έχεις "ιδιαίτερους" χρήστες με περισσότερα προνόμια σε επίπεδο SQL Server (γιατι, ας μην ξεχνάμε, τα προνόμια μπορεί να εκχωρούνται και από την πλευρά της εφαρμογής και όχι αναγκαστικά της database), τότε χρησιμοποιείς έναν άλλο SQL χρήστη για αυτό το λόγο. &lt;BR&gt;&lt;BR&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Αυτό ακριβώς εννοούσα, ίσως να μη το διατύπωσα σωστά&lt;/P&gt;</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23290.aspx</link><pubDate>Wed, 10 Jan 2007 07:27:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23290</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23290.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23290</wfw:commentRss><description>Οντως δεν είναι χρήστες, είναι ρόλοι. Φαντάσου ένα "ζωντανό" "ανοιχτό" web σύστημα οπου π.χ. οι χρήστες εγγράφονται κατά βούληση. Τι κάνεις; Για κάθε νέο account φτιάχνεις ένα χρήστη στον SQL Server;&lt;br /&gt;
&lt;br /&gt;
Η απάντηση είναι οχι. Ακόμα και αν δεν θέλεις να παίξεις με ρόλους, μια λύση είναι να δημιουργήσεις ΕΝΑ χρήστη στον SQL Server με ακριβώς τα προνόμια που θέλεις να έχουν ΟΛΟΙ οι web χρήστες σου και να τους κάνεις map όλους εκει πάνω.&lt;br /&gt;
&lt;br /&gt;
Αν θέλεις να έχεις "ιδιαίτερους" χρήστες με περισσότερα προνόμια σε επίπεδο SQL Server (γιατι, ας μην ξεχνάμε, τα προνόμια μπορεί να εκχωρούνται και από την πλευρά της εφαρμογής και όχι αναγκαστικά της database), τότε χρησιμοποιείς έναν άλλο SQL χρήστη για αυτό το λόγο. &lt;br /&gt;
&lt;br /&gt;
Σε παλαιότερη υλοποίηση ενός Web Portal σε ASP 3.0 (η φιλοσοφία όμως δεν αλλάζει), ειχα 2 χρήστες. Εναν με read-only access σε ορισμένους πίνακες (τυπικά, γίνονταν εκεί map όλοι οι χρήστες που έμπαιναν για να δουν το site) και έναν με read-write access (τυπικά, ο administrator η / και περιπτώσεις οπου ο χρήστης συμπλήρωνε μια φόρμα και γραφόταν κάτι στην database). Δυο SQL χρήστες, δυο connection strings, χρήση αναλόγως περίπτωσης. Αρχαία υλοποίηση, αλλά έτσι δουλεύει μέχρι σήμερα.&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23285.aspx</link><pubDate>Wed, 10 Jan 2007 04:42:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23285</guid><dc:creator>dimkasta</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23285.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23285</wfw:commentRss><description>OK κατάλαβα τι λές. &lt;br /&gt;
&lt;br /&gt;
Και πάλι θα είναι πιο χρήσιμο να φτιάξεις ρόλους και όχι χρήστες 1-1, μιας και συνήθως αντιμετωπίζεις τους χρήστες σαν σύνολα στην εφαρμογή. Πχ THE_MIGHTY_USER, KATI_XERW, EGW_XERW_PIO_POLLA,TI_EINAI_DVD και να φτιάξεις έναν χρήστη στη βάση για κάθε ρόλο. &lt;br /&gt;
&lt;br /&gt;
Από κει και πέρα θα πρέπει να προσέξεις και πως το υλοποιείς αυτό γιατί ίσως έχεις προβλήματα σε επίπεδο session.&lt;br /&gt;
&lt;br /&gt;
Αντιμετώπισα και γω κάτι παρόμοιο πρόσφατα σε .ΝΕΤ 2.0, όπου ανάλογα το χρήστη έπρεπε να αλλάζω connection string. Ρίξε μια ματιά εδώ&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetzone.gr/cs/forums/22864/ShowPost.aspx#22864&lt;br /&gt;
&lt;br /&gt;
Aν χρησιμοποιείς παλιό καλό κώδικα, μπορείς να κάνεις την αλλαγή του connection string στην κλάση που φτιάχνεις το connection.&lt;br /&gt;
&lt;br /&gt;
Τέλος, καλό θα είναι όπως είπε πιο πάνω και ο agmarios, καλό θα είναι να αντιμετωπίζεις κάθε χρήστη σαν επικίνδυνο, οπότε minimum access όπου μπορείς.</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23271.aspx</link><pubDate>Tue, 09 Jan 2007 22:43:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23271</guid><dc:creator>DeClen</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23271.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23271</wfw:commentRss><description>Παιδιά ξέρω ότι άλλο ο χρήστης της εφαρμογής και άλλος ο χρήστης της βάσης. Απλά θέλω να ξέρω το μέγιστο βαθμό που μπορούν να συσχετιστούν αυτοί οι δύο (sorry αν τα λέω λίγο μπερδεμένα, αλλά έχω μπερδευτεί...). &lt;br&gt;
&lt;br&gt;
Να δώσω ένα παράδειγμα.&lt;br&gt;
&lt;br&gt;
Έχουμε την βάση και την εφαρμογή. Φτιάχνουμε στην βάση ένα login με δικαιώματα "κάνε τα πάντα εκτός από DROP"&lt;br&gt;
&lt;br&gt;
Η εφαρμογή ζητάει username και password για τον καθέ application user. Έχουμε το connection string βασιζόμενο στον database user που φτιάξαμε παραπάνω. Τα username και passwords των application users - ώστε να αποφανθεί η εφαρμογή για το αν ο Χ χρήστης πρέπει να προχωρήσει ή να φάει άκυρο - που είναι? Σε κάποιον πίνακα που φτιάξαμε στη βάση?&lt;br&gt;
&lt;br&gt;
Ωραία έστω ότι είναι έτσι. &lt;br&gt;
&lt;br&gt;
Εγώ θέλω ο application user THE_MIGHTY_USER να μπορεί να κάνει τα πάντα στη βάση (εννοείτε εκτός απο το drop αφού ούτως ή άλλως αυτό του το απαγορεύει το connection string). Θέλω όμως ο χρήστης TI_EINAI_DVD να μπορεί να βλέπει μόνο ένα view ενώ οι χρήστες KATI_XERW και EGW_XERW_PIO_POLLA να μπορεί να κάνει και update 2 πίνακες.&lt;br&gt;
&lt;br&gt;
Πως ενεργούμε στην παραπάνω περίπτωση;</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23269.aspx</link><pubDate>Tue, 09 Jan 2007 22:11:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23269</guid><dc:creator>dimkasta</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23269.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23269</wfw:commentRss><description>Μου φαίνεται ότι συγχαίεις λίγο το χρήστη που συνδέεται από το Inet στην εφαρμογή με το χρήστη της βάσης μέσω του οποίου γίνονται τα queries.&lt;br /&gt;
&lt;br /&gt;
Η εφαρμογή σου βλέπει τη βάση μέσω του χρήστη που έχεις στο connection string (1 συνήθως), ασχέτως ποιος είναι ο χρήστης της εφαρμογής.&lt;br /&gt;
&lt;br /&gt;
Aπό κει και πέρα, όποιος και να συνδεθεί θα εκτελέσει queries σαν να ήτανε ο χρήστης του connection string. Δεν χρειάζεται να βάλεις 100 λογαριασμούς στη βάση και να τοςυ δώσεις ρόλο. Το κάνεις μόνο για έναν.</description></item><item><title>Απ: Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23267.aspx</link><pubDate>Tue, 09 Jan 2007 21:59:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23267</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23267.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23267</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;DeClen wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Μελέτησα λίγο το ζήτημα και "ανακάλυψα" την έννοια του Role (...χμμ). Από ότι καταλαβαίνω (διορθώστε αν κάνω λάθος) ο administrator δημιουργεί ένα κανούργιο login στη βάση (με SQL Authentication - username και password) και εντάσσει το λογαριασμό αυτό σε κάποιο Role, αναλόγως τα δικαιώματα που θέλει να δώσει στον εκάστοτε χρήστη.&lt;/P&gt;
&lt;P&gt;Ωραία, καλά ως εδώ (?). Έστω οτι εγώ θέλω η εφαρμογή μου να είναι προσβάσιμη μέσω του διαδικτύου. Ας πούμε ότι σε κάποια φάση θα έχω 100 χρήστες με Usernames και Passwords που θα τους επιτρέπεται μόνο ένα SELECT σε ένα πίνακα. Εγώ τώρα τι κάνω. Φτιάχνω ένα Role που να δίνει δικαιώματα για το συγκεκριμένο SELECT και 100 login λογαρισμούς τους οποίους τους εντάσσω σε αυτό το Role. Και αν οι χρήστες γίνουν 1000. Θα έχω 1000 login λογαριασμούς?!&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;εγώ το βλέπω ως εξής: ο επισκέπτης μέσω web είναι έτσι κι αλλιώς αναξιόπιστος. Πρέπει λοιπόν να φτιάξω ένα χρήστη στη βάση που να έχει τα δικαιώματα που χρειάζονται όλοι οι επισκέπτες μαζί και μόνο αυτά. Στο connection string βάζεις αυτόν το username της βάσης. Αν θες ένα φάκελο με σελίδες διαχείρισης βάζεις password και εκεί δηλώνεις άλλο connection string&amp;nbsp; με επιπλέον δικαιώματα. &lt;/P&gt;
&lt;P&gt;Οι χρήστες μετά φτιάχνουν χρήστες της εφαρμογής (membership ή κάτι άλλο)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Σχεδιασμός βάσης πολλαπλών χρηστών (SQL Server Express) - Λίγη θεωρία</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23265.aspx</link><pubDate>Tue, 09 Jan 2007 21:42:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23265</guid><dc:creator>DeClen</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23265.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=23265</wfw:commentRss><description>Καλημέρα,&lt;br&gt;&lt;br&gt;Τις τελευταίες 2-3 μέρες απασχολεί το μυαλό μου (...σιγά μην καείς!) ο σχεδιασμός μιας βάσης δεδομένων πολλαπλών χρηστών. Η βάση θα στηθεί σε SQL Server Express, αλλά δεν είναι και πολύ σημαντικό αυτό γιατί με ενδιαφέρει περισσότερο η θεωρία γύρω από το όλο concept.&lt;br&gt;&lt;br&gt;Ως νέος προγραμματιστής εχω ασχοληθεί (δεν είμαι και κανένας guru...) με το θέμα της ασφαλείας των βάσεων. Αυτό που έχω παρατηρήσει κατα κόρον είναι το εξής "σχεδιαστικό φαινόμενο". Ο χρήστης (μέσω της εκάστοτε εφαρμογής) κάνει login στη βάση ως administrator (τα στοιχεία του connection string) και η εφαρμογή ελέγχει έναν πίνακας που έχει δημιουργήσει ο προγραμματιστής και περιέχει usernames και passwords. Αν βρει τα στοιχεία του χρήστη εκεί προχωράει, αλλιώς δεν του επιτρέπει να συνεχίσει. Ούτε roles ούτε τίποτα. Δεν ξέρω, αλλά μου φαίνεται ότι αυτό το μοντέλο ασφαλείας είναι λίγο "προχειροδουλειά".&lt;br&gt;&lt;br&gt;Μελέτησα λίγο το ζήτημα και "ανακάλυψα" την έννοια του Role (...χμμ). Από ότι καταλαβαίνω (διορθώστε αν κάνω λάθος) ο administrator δημιουργεί ένα κανούργιο login στη βάση (με SQL Authentication - username και password) και εντάσσει το λογαριασμό αυτό σε κάποιο Role, αναλόγως τα δικαιώματα που θέλει να δώσει στον εκάστοτε χρήστη.&lt;br&gt;&lt;br&gt;Ωραία, καλά ως εδώ (?). Έστω οτι εγώ θέλω η εφαρμογή μου να είναι προσβάσιμη μέσω του διαδικτύου. Ας πούμε ότι σε κάποια φάση θα έχω 100 χρήστες με Usernames και Passwords που θα τους επιτρέπεται μόνο ένα SELECT σε ένα πίνακα. Εγώ τώρα τι κάνω. Φτιάχνω ένα Role που να δίνει δικαιώματα για το συγκεκριμένο SELECT και 100 login λογαρισμούς τους οποίους τους εντάσσω σε αυτό το Role. Και αν οι χρήστες γίνουν 1000. Θα έχω 1000 login λογαριασμούς?!&lt;br&gt;&lt;br&gt;Δεν ξέρω αλλά αυτό μου ακούγεται κάπως περίεργο και είμαι σίγουρος πως κάτι δεν έχω καταλάβει καλά, ή κάτι μου ξεφεύγει.&lt;br&gt;&lt;br&gt;Παρακαλώ, οποιοδήποτε σχόλια θα ήταν χρήσιμο.&lt;br&gt;&lt;br&gt;</description></item></channel></rss>