Managed Service Accounts - Part 1

Der Managed Service Account (MSA) stellt für den SQL Server ein ideales Dienstkonto dar. Die folgenden Merkmale charakterisieren einen MSA:

  • wird im AD verwaltet
  • automatisches Passwort Management
  • automatisches SPN Management
  • ist einem (sMSA) oder mehreren (gMSA) Computern zugeordnet
  • erlaubt keine interaktive Anmeldung
  • unterstützt Delegierung

Wir wollen uns in mehreren Artikeln mit den MSA’s in Verbindung mit dem SQL Server beschäftigen. Im ersten Teil geht es um die Anlage eines MSA’s und die Nutzung als Dienstkonto für den SQL Server Dienst.

In unserem Beispielsszenario soll für die SQL Standardinstanz auf dem Server sqlhost1.fortsql.com ein MSA mit dem Namen SqlSvcHost1 definiert werden.

Alle relevanten Schritte werden mittels PowerShell umgesetzt, da eine GUI nicht verfügbar ist. Die Ausführung erfolgt auf dem Server, auf dem der MSA eingesetzt werden soll.

Für alle, die schnell die Anweisungen nutzen wollen, vorab ein Screenshot mit allen Befehlen zur Einrichtung des MSA auf dem Server sqlhost1.fortsql.com.

 

Zunächst muss das Active Directory Modul geladen werden:

Import-module ActiveDirectory

Sollte das Modul nicht verfügbar sein, so kann dieses Nachträglich eingerichtet werden. Siehe hierzu Problemstellung 1 am Ende des Artikels.

Die Anlage eines MSA erfolgt mit der folgenden Anweisung

New-ADServiceAccount -Name SqlSvcHost1 -RestrictToSingleComputer -Description "SQL Server Dienstkonto auf SqlHost1"

Der Parameter RestrictToSingleComputer erstellt einen MSA, der ausschließlich auf einem Computer genutzt werden kann. Ohne diesen Parameter wird ein MSA angelegt, der auf mehreren Computern genutzt werden kann. Dieser wird auch als Group Managed Service Account (gMSA) bezeichnet. Wir werden uns dem gMSA in einem späteren Artikel widmen.

Der Name des MSA darf maximal 15 Zeichen lang sein!

Sollte bei der Ausführung von New-ADServiceAccount die Fehlermeldung "Key does not exist" angezeigt werden, so muss zunächst ein Schlüssel für das KDS angelegt werden. Siehe hierzu Problemstellung 2 am Ende des Artikels.

Die Anweisung

dir "AD:CN=Managed Service Accounts,DC=fortsql,DC=com"

zeigt alle definierten MSA's an. MSA’s werden standardmäßig im Container Managed Service Accounts angelegt. Der Container kann aber bei der Anlage des MSA individuell bestimmt werden.

Im nächsten Schritt wird der MSA dem Computer zugeordnet:

Add-ADComputerServiceAccount -Identity sqlhost1 -ServiceAccount SqlSvcHost1 –PassThru

Der Parameter Identity bestimmt den Computer, der Parameter ServiceAccount den angelegten MSA. Hiermit kann der MSA aber noch nicht für einen Dienst auf dem Computer sqlhost1 genutzt werden!

Damit der angelegte und dem gewünschten Computer zugeordnete MSA auf diesem auch genutzt werden kann, muss der MSA auf dem Computer eingerichtet / installiert werden:

Install-ADServiceAccount -Identity SqlSvcHost1

Wichtig: diese Anweisung MUSS (!) auf dem Computer ausgeführt werden, auf dem der MSA genutzt werden soll. In unserem Beispiel also auf dem Server sqlhost1.fortsql.com.

Ein kurzer Test bestätigt die korrekte Einrichtung:

Test-AdServiceAccount -Identity SqlSvcHost1

Nun kann der MSA als Dienstkonto für unseren SQL Server genutzt werden. Die Einrichtung erfolgt mit dem SQL Server Konfiguratonsmanager.

Bei der Angabe des MSA ist zu beachten, dass dem Namen ein $ Zeichen angehangen wird, in unserem Fall wäre die korrekte Eingabe also FORTSQL\SqlSvcHost1$.

Der Dienst muss zur Übernahme der Änderungen neu gestartet werden.

Fazit: die Einrichtung eines MSA's ist schnell umzusetzen und erfordert kein umfangreiches Know-How. Der Einsatz eines MSA's mit dem SQL Server erhöht die Instanz-Sicherheit. Idealerweise wird für jeden Service ein eigener MSA verwendet, zumindest aber für jeden Server ein dedizierter MSA (Stichwort: "Segregation of duties"). Wird der SQL Server in einer Cluster-Umgebung eingesetzt, so muss ein gMSA verwendet werden! Dazu kommen wir ja später noch.

Bis dahin: Happy Securing!

Problemstellung 1:
Das Active Directory Modul ist auf dem Server, auf dem der MSA eingesetzt werden soll, nicht vorhanden.

Das Active Directory Modul kann nachträglich eingerichtet werden. Hier die erforderlichen Schritte mittels GUI. Über den Server Manager den Assistenten zum Hinzufügen von Rollen und Features starten. Im Abschnitt Features unter Remoteserver-Verwaltungstools / Rollenverwaltungstools / AD DS- und AD LDS-Tools das Feature Active Directory-Modul für Windows PowerShell wählen. Die Installation erfordert keinen Neustart des Servers.

Problemstellung 2:
Fehlermeldung "Key does not exist" bei der Ausführung der Anweisung New-ADServiceAccount

Diese Fehlermeldung kann durch die folgende PowerShell Anweisung korrigiert werden (Ausführung einmal pro Domain):

Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10));

Alternativ:

Add-KDSRootKey –EffectiveImmediately

Siehe hierzu auch: TechNet Forum: New-ADServiceAccount: Key does not exist