go backarticles

Articles of SQLschool.gr Team

How to get useful info for SQL Logins

Antonios Chatzipavlis

Είναι γνωστό ότι στο SQL Server έχουμε την δυνατότητα να κάνουμε authenticate users είτε με windows account είτε με SQL Logins (account).

Για τα windows accounts η διαχείριση γίνεται μέσα από το Active Directory με τα tools που αυτό προσφέρει.

Για τα SQL Logins πάλι έχουμε τα εργαλεία που ο SQL Server προσφέρει μέσα από το SSMS αλλά είναι στη φύση του DBA πάντα να θέλει το κάτι παραπάνω. Όσοι DBA εργάζονται σε οργανισμούς με αυστηρούς ελέγχους σε θέματα ασφαλείας είναι συνήθως αυτοί που ζητούν το κάτι παραπάνω. Για αυτούς αλλά όχι μόνο το παρακάτω query θα το λατρέψουν καθώς με μια ματιά μπορούν να δουν όλες τις πληροφορίες που αφορούν τα SQL Logins τόσο για να παρέχουν τα στοιχεία αυτά στου ελεγκτικούς φορείς αλλά και για να μπορούν εύκολα να κάνουν και troubleshooting σε διάφορες περιπτώσεις όπως ποια είναι τα accounts που έχουν γίνει Locked, πόσες φορές έχουν δώσει λάθος password, πόσες μέρες απομένουν μέχρι να ζητηθεί να αλλάξουν το password και ακόμα περισσότερα.

Το query είναι αρκετά απλό καθώς διαβάζει την βασική λίστα των χρηστών του SQL Server που δεν είναι άλλη από τον sys.server_principals με φίλτρο στο type field την τιμή 'S' που είναι τα SQL Logins και χρησιμοποιώντας την LOGINPROPERTY function.


SELECT  name                                            AS loginname 
    ,   LOGINPROPERTY(name, 'BadPasswordCount')         AS BadPasswordCount
    ,   LOGINPROPERTY(name, 'BadPasswordTime')          AS BadPasswordTime
    ,   LOGINPROPERTY(name, 'DaysUntilExpiration')      AS DaysUntilExpiration
    ,   LOGINPROPERTY(name, 'DefaultDatabase')          AS DefaultDatabase
    ,   LOGINPROPERTY(name, 'DefaultLanguage')          AS DefaultLanguage
    ,   LOGINPROPERTY(name, 'HistoryLength')            AS HistoryLength
    ,   LOGINPROPERTY(name, 'IsExpired')                AS IsExpired
    ,   LOGINPROPERTY(name, 'IsLocked')                 AS IsLocked
    ,   LOGINPROPERTY(name, 'IsMustChange')             AS IsMustChange
    ,   LOGINPROPERTY(name, 'LockoutTime')              AS LockoutTime
    ,   LOGINPROPERTY(name, 'PasswordHash')             AS PasswordHash
    ,   LOGINPROPERTY(name, 'PasswordLastSetTime')      AS PasswordLastSetTime
    ,   LOGINPROPERTY(name, 'PasswordHashAlgorithm')    AS PasswordHashAlgorithm
FROM    sys.server_principals
WHERE   type = 'S'

Το αποτέλεσμα είναι πέρα για πέρα ικανοποιητικό


SQL VA 1

//antonch



Relative Articles

Leave your comment

Login with your SQLschool.gr account if you want to comment on this article.