Managed Service Accounts
Service accounts voor SQL Server services heb je in drie smaken. Gewone domeinaccounts werken, maar ze vragen handmatig wachtwoordbeheer en je hebt altijd het risico dat iemand ermee inlogt als gebruiker.
Overzicht
| Type | Wachtwoordbeheer | Meerdere servers | Vereist |
|---|---|---|---|
| Gewoon domeinaccount | Handmatig | Ja | Altijd beschikbaar |
| sMSA (Managed Service Account) | Automatisch (AD) | Nee — 1 computer | Server 2008 R2+ |
| gMSA (Group Managed Service Account) | Automatisch (AD) | Ja | Server 2012+ DC + KDS |
Voor SQL Server in een labomgeving of productie: gMSA is de voorkeur. Geen wachtwoord om bij te houden, geen risico op verloop, automatische SPN-registratie.
sMSA — Managed Service Account
Automatisch wachtwoordbeheer door Active Directory, maar gebonden aan één computer.
# Aanmaken op de Domain Controller
New-ADServiceAccount -Name "svc-sqlengine" `
-DNSHostName "sql01.lab.local" `
-Enabled $true
# Installeren op de doelserver (uitvoeren op sql01)
Install-ADServiceAccount -Identity "svc-sqlengine"
# Controleren
Test-ADServiceAccount -Identity "svc-sqlengine"
In SQL Server Configuration Manager: selecteer de service → Properties → Log On → kies NT SERVICE\... of het sMSA account (naam eindigt op $, geen wachtwoord invullen).
gMSA — Group Managed Service Account
Zelfde voordelen als sMSA maar bruikbaar op meerdere servers — ideaal voor clusters, AlwaysOn AG, replicatie.
Vereisten
- Domain Functional Level: Windows Server 2012 of hoger
- KDS Root Key aangemaakt op de DC
Stap 1 — KDS Root Key aanmaken (eenmalig per domein)
# In productie: vertraging van 10 uur (replicatiebuffer)
Add-KdsRootKey -EffectiveImmediately
# In een lab: onmiddellijk actief (niet voor productie)
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Stap 2 — gMSA aanmaken
New-ADServiceAccount -Name "svc-sqlengine" `
-DNSHostName "sql01.lab.local" `
-PrincipalsAllowedToRetrieveManagedPassword "sql01$", "sql02$" `
-Enabled $true
PrincipalsAllowedToRetrieveManagedPassword — lijst van computeraccounts (met $) die het wachtwoord mogen ophalen.
Stap 3 — Installeren op de doelserver
# Uitvoeren op sql01 (en op elke server in de lijst)
Install-ADServiceAccount -Identity "svc-sqlengine"
Test-ADServiceAccount -Identity "svc-sqlengine"
Stap 4 — SQL Server services configureren
Via SQL Server Configuration Manager:
- Rechtermuisklik op de service → Properties → tabblad Log On
- Account:
lab\svc-sqlengine$(met$op het einde) - Wachtwoord: leeg laten
- Service herstarten
Welke services een eigen account geven?
- SQL Server (MSSQLSERVER) — eigen gMSA
- SQL Server Agent — eigen gMSA (of zelfde als engine, maar aparte voorkeur)
- SQL Server Browser —
NT AUTHORITY\LOCAL SERVICEis hier voldoende - SSRS — eigen gMSA als SSRS geïnstalleerd is
Rechten die SQL Server zelf regelt
Bij het configureren via SQL Server Configuration Manager voegt SQL Server automatisch de nodige lokale rechten toe aan het service account:
Log on as a service- Toegang tot de SQL Server directories
- Lid van de lokale groep
SQLServerMSSQLUser$...$MSSQLSERVER
Je hoeft dit niet handmatig te doen — SQL Server Configuration Manager doet dit, net als de SQL Server installer. Gebruik dan ook altijd de Configuration Manager en nooit Services.msc om service accounts te wijzigen.
Services.msc vermijden
Als je het account via Services.msc wijzigt, worden de ACL's en lokale rechten niet bijgewerkt. Gebruik altijd SQL Server Configuration Manager.