SQL Server Logins: DEFAULT_DATABASE & MUST_CHANGE
Einleitung: Zwei oft übersehene, aber kritische Login-Eigenschaften
Bei der Erstellung von SQL Server Logins konzentrieren sich viele Administratoren primär auf den Benutzernamen, das Passwort und die zugewiesenen Rollen. Zwei Optionen werden dabei oft vernachlässigt: DEFAULT_DATABASE und MUST_CHANGE. Dabei haben beide erhebliche Auswirkungen auf Sicherheit, Benutzerfreundlichkeit und den täglichen Betrieb. In diesem Blog beleuchten wir, wozu sie dienen, welche Fallstricke lauern und wie man sie optimal einsetzt.
🗄️ DEFAULT_DATABASE – Die Startdatenbank eines Logins
Jedes SQL Server Login besitzt eine Standarddatenbank (DEFAULT_DATABASE). Das ist die Datenbank, in der der Benutzer nach dem Herstellen einer Verbindung landet, wenn er keine andere Datenbank explizit angibt (z. B. in der Verbindungszeichenkette). Standardmäßig ist dies die master-Datenbank – und genau das ist oft ein Problem.
-- Login mit Standarddatenbank 'master' erstellen (Default)
CREATE LOGIN AppUser WITH PASSWORD = 'komplexesPasswort!',
DEFAULT_DATABASE = master;
-- Besser: Eine Anwendungsdatenbank als Standard setzen
CREATE LOGIN AppUser WITH PASSWORD = 'komplexesPasswort!',
DEFAULT_DATABASE = MyAppDatabase;
Ändern der Standarddatenbank nachträglich:
ALTER LOGIN AppUser WITH DEFAULT_DATABASE = SalesDB;
🔐 MUST_CHANGE – Passwortänderung beim ersten Anmelden erzwingen
Die Option MUST_CHANGE zwingt den Benutzer, das Passwort beim ersten Login zu ändern. Sie ist ein wichtiger Baustein für Sicherheitsrichtlinien, besonders bei temporären Logins oder initialer Passwortvergabe durch Admins. Allerdings gibt es einige wichtige Voraussetzungen und Einschränkungen.
-- Login mit MUST_CHANGE (nur bei SQL Server Authentifizierung möglich)
CREATE LOGIN NewEmployee WITH PASSWORD = 'Start123!' MUST_CHANGE,
DEFAULT_DATABASE = HRDB;
-- Das Login kann sich erst anmelden und wird dann sofort zum Ändern des Passworts aufgefordert.
- MUST_CHANGE funktioniert nur bei SQL Server-Authentifizierung (nicht für Windows-Logins).
- Die Option ist nur verfügbar, wenn die Windows-Passwortrichtlinie aktiviert ist (CHECK_POLICY = ON und CHECK_EXPIRATION = ON). Diese sind standardmäßig aktiv.
- Nach der ersten Passwortänderung verhält sich das Login wie ein normales Login mit eigenem Passwort. Der Administrator kann das Kennwort zurücksetzen und erneut MUST_CHANGE aktivieren.
-- Explizit CHECK_POLICY und CHECK_EXPIRATION aktivieren (Standard ist ON)
CREATE LOGIN SecureUser WITH PASSWORD = 'TempPw123!' MUST_CHANGE,
CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
⚙️ Kombination und praktische Anwendungsfälle
Die wirkliche Stärke ergibt sich aus der Kombination beider Eigenschaften. Ein häufiges Szenario: Neue Mitarbeiter erhalten ein temporäres Login mit Startdatenbank und müssen ihr Passwort sofort ändern.
-- Beispiel: Neuer HR-Mitarbeiter
CREATE LOGIN jdoe WITH PASSWORD = 'TempPass2025!' MUST_CHANGE,
DEFAULT_DATABASE = HRDB;
-- In HRDB den Benutzer anlegen und Rechte geben
USE HRDB;
CREATE USER jdoe FOR LOGIN jdoe;
ALTER ROLE datareader ADD MEMBER jdoe;
🔍 Überprüfung bestehender Logins
Mit diesen Abfragen können Sie herausfinden, welche Logins welche Standarddatenbanken haben und ob MUST_CHANGE aktiv ist.
-- Alle SQL Server Logins mit DEFAULT_DATABASE und MUST_CHANGE Status
SELECT
name AS LoginName,
default_database_name AS DefaultDB,
CASE WHEN is_policy_checked = 1 THEN 'Ja' ELSE 'Nein' END AS PolicyEnabled,
CASE WHEN is_expiration_checked = 1 THEN 'Ja' ELSE 'Nein' END AS ExpirationEnabled,
CASE WHEN must_change_password = 1 THEN 'Ja' ELSE 'Nein' END AS MustChange
FROM sys.sql_logins
ORDER BY name;
🛡️ Sicherheitsempfehlungen & typische Fehler vermeiden
1. Standarddatenbank master für normale Benutzer vermeiden
Ein Login, das standardmäßig in der Master-Datenbank landet, hat potentiell Zugriff auf viele Systemtabellen (je nach Berechtigung). Für Anwendungslogins sollte die Standarddatenbank die entsprechende App-Datenbank sein. Für Administratoren kann master sinnvoll sein – für normale Benutzer nicht.
2. MUST_CHANGE für temporäre oder initiale Logins aktivieren
Wenn Sie einem neuen Benutzer ein Passwort mitteilen (per E-Mail, Ticket), sollte es sofort nach dem ersten Login geändert werden. Das verhindert, dass das anfängliche Passwort längere Zeit gültig bleibt.
3. Kombination mit CHECK_POLICY nutzen
CHECK_POLICY = ON (Standard) erzwingt Komplexität und nutzt die Windows-Passwortrichtlinie. Das sollte nur in besonderen Umgebungen abgeschaltet werden.
📋 Best Practices: Zusammenfassung
- Standarddatenbank immer explizit setzen – nie auf master belassen, wenn es nicht nötig ist.
- MUST_CHANGE bei Erstvergabe – vor allem bei temporären oder initialen Passwörtern.
- Passwortrichtlinien aktiv lassen – das erhöht die Sicherheit erheblich.
- Vor der Login-Erstellung prüfen, ob die Zieldatenbank existiert und der Benutzer zumindest CONNECT darauf hat.
- Regelmäßig überwachen, welche Logins noch MUST_CHANGE aktiv haben – könnten auf vergessene, nicht abgeschlossene Einrichtung hindeuten.
- Verwenden Sie DEFAULT_DATABASE für Anwendungsverbindungen – dann muss die Verbindungszeichenkette keine Initial Catalog enthalten, was die Konfiguration vereinfacht.
-- Beispiel für eine sichere, vollständige Login-Erstellung
CREATE LOGIN ApplicationUser
WITH PASSWORD = 'SecureInit123!' MUST_CHANGE,
DEFAULT_DATABASE = AppDB,
CHECK_POLICY = ON,
CHECK_EXPIRATION = ON;
USE AppDB;
CREATE USER ApplicationUser FOR LOGIN ApplicationUser;
ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
-- Jetzt kann sich der Benutzer anmelden, muss das Passwort ändern und landet direkt in AppDB.
🎯 Fazit
DEFAULT_DATABASE und MUST_CHANGE sind kleine, aber wirkungsvolle Stellschrauben für die Sicherheit und Benutzerfreundlichkeit Ihrer SQL Server Umgebung. Richtig eingesetzt, vermeiden sie ungewollte Zugriffe, erhöhen die Passwortsicherheit und erleichtern das Onboarding neuer Benutzer. Vernachlässigt führen sie hingegen zu Supportfällen, Sicherheitslücken und Verwirrung. Nehmen Sie sich die Zeit, diese Eigenschaften bei jedem Login zu überdenken – Ihre Kollegen und Auditoren werden es Ihnen danken.
powered by dtcSoftware