Managed Service Accounts & Virtual Accounts on Windows Server 2008 R2

July 2, 2010 Chris Spanougakis

Αφορμή για αυτό το post ήταν κάποιες ερωτήσεις μέσα στο forum, οπότε θα ήταν καλό να κάνουμε μια ανασκόπηση αυτού του νέου χαρακτηριστικού στον Windows Server 2008 R2.

Το πρόβλημα είναι γνωστό εδώ και αρκετά χρόνια. Services τα οποία πρέπει να ξεκινούν με κάποιο service account, αλλά δυστυχώς δεν αλλάζουμε ποτέ αυτό το password, με ότι αυτό μπορεί να σημαίνει για την ασφάλεια. Τα Managed Service Accounts έρχονται να λύσουν ακριβώς αύτό το πρόβλημα, προσφέροντας την δυνατότητα της αυτόματης αλλαγής ενός πολύ ισχυρού password, 240 χαρακτήρων παρακαλώ.

Τα Managed Service Accounts φέρνουν ένα καινούριο object class μέσα στο Active Directory Schema με την ονομασία msDS-ManagedServiceAccount.

Ξεκινώντας, θα πρέπει να εισάγουμε το Active Directory module μέσα στο Powershell, ώστε να μπορέσουμε να δημιουργήσουμε τον πρώτο μας Service Account:

powers1

Μπορούμε να δούμε τον νέο λογαριασμό που δημουργήσαμε μέσα από το Active Directory στον φάκελο Managed Service Accounts:

adsa1

Δεν μπορείτε να δημιουργήσετε έναν Managed Service Account μέσα από το Active Directory Users and Computers, είναι κάτι που πρέπει να γίνει μέσα από Powershell. Θα μπορούσατε να δείτε περισσότερες πληροφορίες για αυτό τον λογαριασμό και πάλι χρησιμοποιώντας Powershell:

powers2

Θα πρέπει να αντιστοιχίσουμε αυτό τον νέο λογαριασμό στον server στον οποίο υπάρχει το service το οποίο θέλουμε να τον χρησιμοποιήσει, άρα πάλι με Powershell (μην ξεχάσετε να πληκτρολογήσετε σε εκείνον τον server, αν δεν το έχετε κάνει ήδη το cmdlet “Import-module ActiveDirectory”). Να θυμάστε ότι μπορείτε να τον αντιστοιχίσετε σε έναν υπολογιστή την φορά:

powers3

Θα παρατηρήσατε ότι δεν έχουμε βάλει πουθενά password στον λογαριασμό. Αυτοί οι λογαριασμοί αποκτούν αυτόματα ένα μεγάλο password, το οποίο αλλάζει επίσης αυτόματα. Συνεπώς, ένας τέτοιος λογαριασμός μπορεί να χρησιμοποιηθεί μόνο από services, δεν μπορείτε να κάνετε login με κάποιο τρόπο ως χρήστης. Αυτοί οι λογαριασμοί επίσης δεν φαίνονται αν κάνετε μια αναζήτηση μέσα στο Active Directory.

Πηγαίνουμε στο service το οποίο θέλουμε να ξεκινάει με τον λογαριασμό που δημιουργήσαμε και στα Properties του Service πηγαίνουμε στο Log On tab:

adsa2

Επιλέγουμε τον λογαριασμό, αλλάζοντας τον τύπο του αντικειμένου που αναζητούμε στο Active Directory, προσέχοντας να είναι τσεκαρισμένο το κουτάκι των Service Accounts. Πολύ σημαντικό είναι στο τέλος του ονόματος του account που θα εισάγετε, να προσθέσετε και τον χαρακτήρα $. Σαν password δεν χρειάζεται να βάλετε κάτι, θα φροντίσει το Active Directory για αυτό.

adsa3

Έχουμε ήδη τελειώσει, το service ξεκινά χρησιμοποιώντας αυτόν τον λογαριασμό. Να σημειώσουμε ότι για να μπορούμε να διαχειριστούμε Managed Service Accounts πρέπει να έχουμε το Create/Delete msDS-ManagedServiceAccount permission. Τα Managed Service Accounts είναι ιδανικά για services τα οποία χρειάζονται network access και μάλιστα αρκεί μόνο το Service Account για αυτή την δουλειά και δεν εμπλέκεται καθόλου το computer account.

Μπορείτε να αφαιρέσετε έναν MSA αλλά και να τον απεγκαταστήσετε από κάποιον υπολογιστή:

Remove-ADServiceAccount –Identity “ServiceTest”

Uninstall-ADServiceAccount –Identity “ServiceTest”

Μπορείτε να κάνετε reset manually το password ενός Managed Service Account:

Reset-ADServiceAccountPassword –Identity “ServiceTest”

Μπορείτε να τροποποιήσετε το default interval της αλλαγής του password, αν μπείτε μέσα στο Local Policy –> Security Options και στην επιλογή Domain Member: Maximum machine account password age. Δεν μπορείτε να το κάνετε μέσα από Group Policy, αν μπείτε στο αντίστοιχο Account Policies\Password Policy.

Για τα services τα οποία χρειάζονται μόνο τοπική πρόσβαση, υπάρχει ακόμα πιο εύκολος τρόπος, τα Virtual Accounts. Υπάρχουν ήδη και χρησιμοποιούνται από τον IIS 7, ενώ μπορούμε να τα χρησιμοποιήσουμε και για οποιοδήποτε άλλο service. Δεν χρειάζετε να κάνετε τίποτα άλλο από το να μπείτε στα properties ενός service και να δηλώσετε σαν λογαριασμό το εξής: “NT SERVICE\Servicename” :

adsa4

Πως όμως μπορώ να ξέρω ποιο είναι το όνομα του service? Αν δεν βάλετε σωστό όνομα, θα πάρετε κάποιο τέτοιο μήνυμα λάθους:

adsa6

Το σωστό όνομα του service μπορείτε να το βρείτε από το General Tab:

adsa5

Αυτό που τελικά συμβαίνει στην πραγματικότητα, είναι ότι τα Virtual Accounts είναι πολλαπλά instances του Network Service account, έτσι ώστε το κάθε service να τρέχει με το δικό του network service instance, που έχει το ίδιο όνομα με το service. Αν συγκρίνουμε τα MSA με τα virtual accounts, διαπιστώνουμε ότι τα MSA είναι domain accounts, ενώ τα δεύτερα είναι local accounts.

Πολύ σημαντικό είναι ότι τα MSA δεν μπορούν να χρησιμοποιηθούν σε εφαρμογές που τρέχουν σε cluster, λόγω της ιδιαιτερότητας τους να εγκαθιστούνται τοπικά σε κάθε server. Για την πλήρη λειτουργικότητα των MSA χρειάζεστε το Domain Functional Level να είναι Windows Server 2008 R2, αλλά φαντάζομαι ότι αυτό το περιμένατε ήδη, έτσι?