[SQL Server 2005] Aanmaken van db-user met beperkte rechten*

Pagina: 1
Acties:
  • 911 views sinds 30-01-2008
  • Reageer

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 31-01 15:04
Ik heb heel wat zitten lezen over logins en databases aanmaken op een SQL Server 2005, op zoek naar de meest veilige manier om dit te doen voor een SQL Server die gebruikt gaat worden in een Web Hosting omgeving.

Zo kwam ik o.a. uit op de volgende pagina van Microsoft :
http://www.microsoft.com/...ractice/sql2005dgwhe.mspx

Hier geven ze onderaan ook een leuk script mee waarmee je een login en database kan aanmaken, en terwijl ook goed beveiligen.


Als je op deze manier een login aanmaakt, dan wordt op de login de rechten ontnomen om alle databases te zien (via sys.databases), en op de user die aan de login wordt gehangen wordt het recht gegeven.

Samengevat :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
set @sql = 'CREATE LOGIN ' + QUOTENAME(@login_name) + 
    ' WITH PASSWORD = ''' + REPLACE(@password, '''', '''''') + ''''
execute( @sql )

set @sql = 'DENY VIEW ANY DATABASE TO ' + QUOTENAME(@login_name)
execute( @sql )

set @sql = 'USE ' + QUOTENAME(@db_name) + char(10) + 
    'CREATE USER ' + QUOTENAME(@login_name) + 
    ' FOR LOGIN ' + QUOTENAME(@login_name)
execute( @sql )

set @sql = 'USE ' + QUOTENAME(@db_name) + char(10) + 
    'GRANT VIEW DEFINITION TO ' + QUOTENAME(@login_name)
execute( @sql )


Maar als ik dan later met SQL Server Management Studio een verbinding maak met mijn nieuwe login, dan zie ik de database van de gebruiker niet staan.

Maak ik echter mijn login volledig eigenaar van zijn database, dan verschijnt deze database wel in mijn Management Studio.
Betekent dit dan dat ik een login altijd volledig eigenaar ga moeten maken? En heeft dit nadelen/risico's voor de beveiliging? Waarom zou in het voorbeeld dit niet gedaan zijn?

Graag even wat tweede meningen want ik loop hier even verloren...

[ Voor 36% gewijzigd door codemann op 10-12-2007 11:54 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

#define login.

is dat een DB user?
is dat een DB Admin/owner?

Wat moet een DB user kunnen > wat is z'n rol?
Wat moet een DB admin kunnen?

Met die gegevens en de BOL moet je toch wel iets meer kunnen vinden over de manier van werken lijkt me :)

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

codemann schreef op vrijdag 07 december 2007 @ 14:40:
PS : Kan een mod even mijn titel aanpassen? Ik wou dit invullen nadat ik mijn bericht had getypt en ben dit helemaal vergeten...
Stel zelf eens (via een topic report) een goede titel voor ? :)

  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 31-01 15:04
Het zijn DB users, het is voor in een hosting omgeving. De gebruiker moet dus genoeg kunnen binnen zijn eigen database, maar globaal mag hij niet te veel kunnen. Vandaar ook mijn bezorgdheid dat hij zeker niet te veel gaat mogen kunnen.

En ik vind er ook wel info over, zoals het voorbeeld dat ik aanhaal. Maar ik vind het raar dat in het voorbeeld dat Microsoft opgeeft ze de gebruiker niet eigenaar van hun eigen database maken, terwijl dit wel nodig blijkt te zijn om de eigen database te zien in SQL Server Management Studio.

Ik kan niet onmiddellijk een nadeel bedenken hiervoor, maar ik wou toch graag een tweede mening. En aangezien ik er op het werk alleen mee bezig ben, wou ik hier even komen piepen voor die mening 8) _/-\o_

[ Voor 54% gewijzigd door codemann op 10-12-2007 11:58 ]


  • codemann
  • Registratie: Oktober 2002
  • Laatst online: 31-01 15:04
Ik zit nu al een hele dag te piekeren :
1. Ofwel doe ik niet het "DENY VIEW ANY DATABASE" commando en kan de gebruiker alle databases zien zonder er toegang tot te hebben
2. Ofwel doe ik dat wel, maar dan kan ik geen user op de database maken en moet ik de login owner maken van de database. Ik kan dan alle specifieke GRANTs en DENYs die onderaan het script gebeuren niet uitvoeren en ik kan het dus niet zo mooi dichttimmeren. Maar de gebruiker ziet dan wel alleen zijn eigen database...

Ik heb namelijk o.a. hier (http://www.webservertalk.com/archive137-2006-1-1374972.html) nog gelezen dat de combinatie DENY VIEW ANY DATABASE en alleen de eigen database zien niet samen gaan, zonder de login ook eigenaar te maken van de database.

Wat zouden jullie doen?

  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Topictitel gewijzigd :)

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters

Pagina: 1