Technischer Blog
Neuer Eintrag: 31.03.2025 von Thomas Hauser / IT at Service
Automatisierte Überwachung von AD Account Login Mappings
Eine interessanter Auftrag für eine Implementation, was die Notwendigkeit, zumindest Ansatzweise die Logins einer SQL Server Instanz zu pflegen und aktuell zu halten. Grundsätzlich empfehle ich dem Kunden einen Best Practice-Orientierten Ansatz anhand von AD-Gruppen zur Verwaltung der Zugäe für einen SQL Datenbankserver. Dies verlagert die Verwaltung ins Active Directory und bietet gleichzeitig einen Überblick, wer wo was auf der Datenbankserver Instanz machen darf. Im Gegensatz zur Bad Practice, die die Administration erschwert und in der Regel das darstellt, was mit "Chaos" am besten umschrieben ist. Eine Umstellung dessen erfordert einen erheblichen Arbeitsaufwand, als wenn man am besten direkt von Anfang an der Best Practice folgt. Im Hinblick auf die Server Lifetime ist es dann eine Abwägung, ob man die Maßnahme umsetzt. So war es ein Blick auf das Chaos bei einem Kunden, hunderte AD-Accounts waren direkt auf die Datenbank-Instanz berechtigt. Man hat so, wie bereits geschrieben, keinen Überblick wer wo was darf, sondern es sind auch Accounts auf dem Datenbank Server berechtigt, die überhaupt nciht mehr existieren.
Der Auftrag war, eine automatisierte Routine von einem zentralen SQL Server zu implementieren, der Zugriff auf das Active Directory der Domäne hat. Die Zielserver habe ich über einen Linked Server eingebunden, mithilfe eines Remote-Logins. Über einen SQL Server Agent Job führe ich folgende Zeile(n) aus:
sqlcmd -S localhost -d master -Q "SET NOCOUNT ON; SELECT name AS LoginName, CONVERT(VARCHAR(MAX), sid, 1) AS LoginSID FROM [Server108].master.sys.server_principals WHERE type IN ('G', 'U') AND name LIKE 'DOMAINNAME\%' ORDER BY name;" -h-1 -W -s "," -o "C:\tmp\outputServer108.csv"
um die AD-Accounts auszulesen und in einer Datei zu speichern. Der SQL Server Agent Account muss auf das tmp-Verzeichnis berechtigt sein! Anschliessend wird in einem weiteren Step ein Powershell aufgerufen, das die Datei verarbeitet:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\tmp\processLoginCheckup.ps1" -ServerName "Server108"
Im dritten Step wird der Output per Email versendet: (Externer Link). Dort habe ich auch das Powershell hinterlegt, das den Output aus dem zweiten Step verarbeitet und die Accounts gegen das Active Directory prüft!
Sprechen Sie mit uns!
Gerne stehen wir Ihnen bei allen Fragen rund um Ihre IT-Infrastruktur zur Seite.
Teten Sie mit uns in Kontakt und vereinbaren ein unverbindliches Beratungsgespräch.
Wir sind für Sie da!