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 :
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...
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 ]