Skip to content

Logins, Users & Rechten

1. Login vs User

Login User
Niveau SQL Server engine (server-niveau) Database (database-niveau)
Opgeslagen in master database User database
Geeft toegang tot De SQL Server instantie Één specifieke database
Rechten Server roles Database rechten (lezen, schrijven, uitvoeren, …)
  • Een login kan ge-associeerd worden met meerdere users (één per database)
  • Een login wordt gekoppeld aan één of meerdere server roles

2. Types Login

Type Beschrijving
Windows login (user account) Windows-gebruiker authenticeert via Active Directory
Windows login (group account) Volledige Windows AD-groep krijgt toegang
SQL Server login Wachtwoord beheerd door SQL Server zelf
Certificate login (nvt)
Asymmetric key login (nvt)

3. Types User

Type Beschrijving
Windows user Kan Windows user of groep zijn — connectie enkel naar deze database
SQL user with password Wachtwoord gevalideerd door de database — enkel naar deze database
SQL user with login Gekoppeld aan een login — kan naar meerdere databases
SQL user without login Heeft geen wachtwoord — kan niet verbinden, maar kan objecten bezitten
User mapped to a certificate Speciaal doel
User mapped to an asymmetric key Speciaal doel

4. Login aanmaken

Object Explorer → Security → rechtermuisklik op LoginsNew Login...

Kies tussen: - Windows authentication (zoek AD-gebruiker of groep op) - SQL Server authentication (vul wachtwoord in, stel policy in)

Stel in: Default database, Server Roles, User Mapping.

USE [master];
GO

-- Windows-authenticated login — user account
CREATE LOGIN [DataJBE\bbibber]
FROM WINDOWS WITH DEFAULT_DATABASE = [master];
GO

-- Windows-authenticated login — local group
CREATE LOGIN [DataJBE\Developers]
FROM WINDOWS WITH DEFAULT_DATABASE = [AdventureWorks2019];
GO

-- SQL Server-authenticated login
CREATE LOGIN [JuniorDBA]
WITH PASSWORD = '-p@ssw0rd-' MUST_CHANGE,
     CHECK_EXPIRATION = ON,
     CHECK_POLICY = ON,
     DEFAULT_DATABASE = [ClassicModels];
GO

Naamgevingsrichtlijnen voor logins

  • Windows login (user): gebruik altijd de volledig gekwalificeerde naam DOMEIN\gebruikersnaam
    bv. DataJBE\jbeysen — nooit alleen de gebruikersnaam
  • Windows login (groep): idem, DOMEIN\Groepsnaam
    bv. DataJBE\SQL_Admins
  • SQL Server login: kies een naam die de functie of persoon duidelijk omschrijft
    bv. AppServiceAccount, ReportingUser — vermijd generieke namen zoals sa of admin
  • Gebruik nooit spaties in SQL Server loginnamen
  • Voor serviceaccounts: gebruik een dedicated account per applicatie, niet één gedeeld account
  • Schakel het ingebouwde sa-account altijd uit in productie en hernoem het indien mogelijk

5. Login wijzigen

Object Explorer → SecurityLogins → rechtermuisklik → Properties

USE [master];
GO

-- Login uitschakelen
ALTER LOGIN [training\SeniorDeveloper] DISABLE;
GO

6. User aanmaken

Object Explorer → database → Security → rechtermuisklik op UsersNew User...

Koppel aan een bestaande login en wijs database roles toe.

USE [ClassicModels];
GO

-- User aanmaken gekoppeld aan een login
CREATE USER [Marcel] FOR LOGIN [MarcelKiekeboe];
GO

-- User aanmaken met read-only rechten
ALTER ROLE db_datareader ADD MEMBER [Marcel];
GO

7. Rechten toewijzen

Database Roles

Role Rechten
db_owner Volledige controle over de database
db_datareader Alle tabellen lezen
db_datawriter Alle tabellen lezen en schrijven
db_ddladmin DDL-statements uitvoeren (CREATE, ALTER, DROP)
dbcreator (server role) Databases aanmaken, wijzigen, verwijderen

Granulaire rechten

-- Leesrecht op één specifieke tabel
GRANT SELECT ON Customers TO [Fanny];
GO

-- Recht intrekken
REVOKE SELECT ON Customers FROM [Fanny];
GO

-- Recht expliciet weigeren
DENY SELECT ON Customers TO [Fanny];
GO

GRANT vs DENY

DENY heeft voorrang op GRANT. Als een gebruiker via een rol GRANT heeft maar via een expliciete DENY, geldt de weigering.