4 Minuten Lesezeit (845 Worte)

Welches Konto ist das richtige? Instant File Initialization beim Microsoft SQL Server korrekt einrichten und prüfen

Seit der Version 2016 kann schon während der Installation des SQL-Servers das Recht „Perform Volume Maintenance Tasks“ vergeben werden, um die Funktionalität „Instant File Initialization“ zu aktivieren. Doch welches Konto erhält das Recht?

In einem Kundenprojekt haben wir das Thema etwas genauer unter die Lupe genommen und zeigen hier die Ergebnisse. Starten wir also von vorne …

In den meisten Fällen ist die Nutzung des lokalen virtuellen Dienstkontos „NT SERVICE\<Dienstname>“ (im Folgenden: Dienstkonto) die beste Option. Sollen jedoch Hochverfügbarkeitsfunktionen wie Always On eingesetzt werden, ist die Nutzung eines Active Directory Kontos (im Folgenden: AD-Konto) notwendig. Unsere Empfehlung: Nutzen Sie in diesen Fällen gruppenverwaltete Dienstkonten (englisch: Group-managed service accounts). Weitere Informationen finden Sie in der Dokumentation von Microsoft und unserem Blog-Artikel „Ich will das Kennwort gar nicht wissen – Nutzung von gruppenverwalteten Dienstkonten für Microsoft SQL Server“.

Bei der Nutzung des Dienstkontos stellt sich die Eingangsfrage nicht, in allen Fällen wird dieses Konto korrekt berechtigt.

Die Installation mit einem AD-Konto

Die Ausgangssituation beim Kunden sieht jedoch wie folgt aus. Der SQL-Server wurde in der Version 2022 mit einem gruppenverwalteten Dienstkonto installiert. Während der Installation wurde direkt die Erteilung des Rechts „Perform Volume Maintenance Tasks“ beauftragt.

[Abb. 1]: Wir haben die Situation beim Kunden in unserem Labor nachgestellt. Hier die Einstellungen während der Installation.

Nach der erfolgreichen Installation meldete das SQL-Server-Protokoll, dass die Funktionalität „Instant File Initialization“ aktiviert ist. Somit sind wir davon ausgegangen, dass das verwendete AD-Konto das Recht „Perform Volume Maintenance Tasks“ erhalten hat. Eine Überprüfung ergab jedoch, dass das Recht stattdessen an das Dienstkonto vergeben wurde.

[Abb. 2]: Eine Überprüfung mit „secpol.msc” zeigt: Das Recht wird an das Dienstkonto vergeben.

Das Konzept ist gut

Hieran wird das Konzept von Microsoft deutlich. Jeder Dienst hat immer ein zugehöriges Dienstkonto im System. Dieses Dienstkonto kann mit Rechten ausgestattet werden, die das durch den Dienst gestartete Programm erhalten soll. In unserem Fall hat der SQL-Server somit immer das Recht „Perform Volume Maintenance Tasks“. Damit kann das zum Start verwendete Konto geändert werden, ohne dass Änderungen an den Berechtigungen notwendig werden. 

Die Ansicht im Configuration Manager

Aber was sehen wir jetzt in der von Microsoft bereitgestellten Oberfläche zur Verwaltung des Dienstes? Der Configuration Manager zeigt in unserem Fall ein deutliches „No“, angeblich hat der SQL-Server dieses Recht also gar nicht. 

[Abb. 3]: Der Configuration Manager zeigt an, dass die Funktionalität „Instant File Initialization” angeblich nicht aktiv sei, das Recht „Perform Volume Maintenance Tasks” also gar nicht vergeben wurde.

Warum? Weil der Configuration Manager wohl den Namen des zum Start verwendeten Kontos, also in unserem Fall des AD-Kontos, zur Überprüfung verwendet. Wenn wir hier nun durch Auswahl von „Yes“ eine „Korrektur“ vornehmen, dann wird das zum Start verwendete AD-Konto noch zusätzlich berechtigt. Das ist zwar nicht notwendig, aber zumindest sagt der Configuration Manager jetzt die Wahrheit.

Um der Sache weiter auf den Grund zu gehen, haben wir einen Blick in die Dokumentation geworfen und weitere Tools betrachtet, die wir ebenfalls beim Kunden einsetzen.

Was sagt die Dokumentation?

Die Dokumentation spricht vom „Startkonto des SQL Server-Dienstes“ bzw. „Konto […], über das der SQL Server-Dienst ausgeführt wird“. Wir lesen das so, dass hiermit das AD-Konto gemeint ist. Das entspricht zwar dem Verhalten des Configuration Managers, aber nicht dem Verhalten des Installationsprogramms „setup.exe“. Wir gehen aktuell davon aus, dass das Installationsprogramm das von Microsoft gewünschte Verhalten umsetzt. Damit müsste neben dem Configuration Manager auch die Dokumentation angepasst werden.  

dbatools

Auch die aktuelle Version des PowerShell-Moduls dbatools arbeitet leider wie der Configuration Manager. Bei der Installation wird das Recht „Perform Volume Maintenance Tasks“ an das zum Start des Dienstes verwendete Konto vergeben. In unserem Fall würde also das AD-Konto statt des Dienstkontos berechtigt. Das hat zwar keine negativen Auswirkungen, aber bei einer Änderung des zum Start verwendeten Kontos müsste auch das neue Konto wieder berechtigt werden.

Wir werden in Kürze eine entsprechende Änderung des Codes vorschlagen, um hier das Verhalten an das Installationsprogramm anzupassen.

First Responder Kit

Die Prozedur „sp_Blitz“ aus dem First Responder Kit von Brent Ozar nutzt zur Überprüfung die Abfrage „select instant_file_initialization_enabled from sys.dm_server_services“. Damit wird der SQL-Server direkt befragt und liefert somit immer das korrekte Ergebnis.

Fazit

Prinzipiell hat jeder Dienst ein Dienstkonto, unabhängig davon, welches Konto zum Start des Dienstes verwendet wird. Auch wenn in vielen Fällen das Dienstkonto zum Start genutzt wird, gibt es gerade beim SQL Server ab und zu Gründe dafür, ein AD-Konto zu verwenden. Wird ein alternatives Konto genutzt, so funktioniert die „Instant File Initialization“ dennoch, da das Dienstkonto berechtigt wird. Bei der Nutzung von dbatools funktioniert zunächst auch erst einmal alles wie gewünscht, dennoch ist eine Anpassung des Codes aus unserer Sicht zu empfehlen. Eine generelle Erkenntnis sollte sein, dass man nicht jeder grafischen Oberfläche, in diesem Fall dem Configuration Manager, direkt vertrauen sollte. Ist Ihnen auch schon einmal eine Anzeige nicht ganz richtig vorgekommen? 

Seminarempfehlung

Senior Consultant bei ORDIX.

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Montag, 27. Mai 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie