004 10 Posted December 16, 2009 Report Share Posted December 16, 2009 Hallo zusammen, bei einem SQL 2005 stehe ich vor folgendem Problem: Nachdem ein Benutzer sein Kennwort dreimal falsch eingegeben hat wird sein SQL-Account gesperrt. Beim Entsperren wird aber scheinbar ein neues Kennwort generiert, anstatt das ursprüngliche zu verwenden. Darauf deutet jedenfalls der veränderte Hashwert des Kennworts hin. Der DB-Admin muss also das Konto entsperren, ein Standardkennwort vergeben, welches dann durch den Benutzer wieder geändert wird. Wenn dann noch eine Policy aktiv ist, dass z.B. das minimale Kennwortalter auf 0 Tage gesetzt ist, dann muss der User in die Administration und über das Managementstudio sein Kennwort eingeben. Das kann es doch nicht sein. Vom AD her kenne ich das anders. Das Kennwort bleibt erhalten, nachdem das Konto entsperrt wurde. Eine simple Sperre eben. SQL schlägt da wohl weiter aus und ändert gleich auch noch das Kennwort. Handelt es sich dabei um ein Sicherheitsfeature welches sich deaktivieren lässt? LG 004 Quote Link to comment
004 10 Posted December 16, 2009 Author Report Share Posted December 16, 2009 Nach etwas Knobeln habe ich es selbst hinbekommen. Die Lösung ist nicht das Konto zu entsperren, sondern den Haken bei "Kennwortrichtlinien erzwingen" herauszunehmen, mit OK zu bestätigen und wieder hineinzusetzen. Dies bewirkt, dass die Werte für IsLocked und BadPasswordCount auf Null gesetzt werden, während sich PasswordHash nicht ändert. Das Kennwort bleibt also erhalten. Nimmt man hingegen den Haken bei "Anmeldung ist gesperrt" heraus verhält es sich genau umgekehrt. Das Kennwort wird geändert und die Counter bleiben bestehen. Mit diesem Script kann man sich die Counter ansehen: USE [master] DECLARE @name nchar(100) SET @name ='account' SELECT LOGINPROPERTY( @name, 'IsLocked' ) AS IsLocked, LOGINPROPERTY( @name, 'BadPasswordCount' ) AS BadPasswordCount, LOGINPROPERTY( @name, 'PasswordHash' ) AS PasswordHash GO Mit diesem Script lässt sich das Konto bequem entsperren, ohne dass das Passwort geändert wird: USE [master] ALTER LOGIN account WITH CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF ALTER LOGIN account WITH CHECK_EXPIRATION=OFF, CHECK_POLICY=ON GO Der Vollständigkeit halber noch: Ein gesperrter SQL-Account verursacht "Fehler 18456, Status 8" in den Protokollen des SQL-Servers. Viel Spaß beim Nachkochen, LG 004 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.