go backsqlschool blogs list

How to get useful info for SQL Logins

by 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


Ημερομηνία: 19 December 2017 15:47
Αξιολόγηση: ( 1 )
Κατηγορίες:
Share it:

Αφήστε το σχόλιο σας - Leave your comment

Τα σχόλια έχουν κλείσει.
Επιτρέπονται μόνο τα σχόλια από τα μέλη του SqlSchool.gr.