Windows Server 2008 R2 İle Active Directory Domain Servislerinde Gelen Yenilikler – Managed Service Accounts (Yönetilen Servis Hesapları)
Hepimizin heyecanla beklediği ve ilk beta versiyonlarından bu yana çok sayıda testlerle kontrolleri gerçekleştirdiğimiz Windows 7 ailesinin server tarafındaki ürünü olan Windows 7 Server yani Windows Server 2008 R2 ile çok sayıda yeni özellik geliyor. Windows Server 2008 R2 İle Active Directory Domain Servislerinde Gelen Yenilikler makalemizde Windows Server 2008 R2 ile beraber Active Directory Domain Servislerinde gelen yeni özellikleri genel olarak sizlerle paylaşmıştık. Windows Server 2008 R2 – Recycle Bin Active Directory Geri Dönüşüm Kutusu makalemizde de Windows Server 2008 R2 ile Active Directory Domain Servislerinde gelen Recycle Bin özelliğini detaylarıyla sizlerle paylaşmıştık. Bu makalemizde Windows Server 2008 R2 ile Active Directory Domain Servislerinde gelen en ilgi çekici yeniliklerden biri olan Managed Service Account (MSA) yani Yönetilen Servis Hesaplarını detaylarıyla inceleyeceğiz.
SQL Server, IIS (Internet Information Server), SCCM (System Center Configuration Manager), SCOM (System Center Operations Manager) vb. gibi ürünlerin kurulumunu yapmış ya da kurulan uygulamayı kullanıyorsunuzdur. Bu uygulamaların çalışmasını, işlevini yerine getirmesini ve kullanıcıların da bu uygulamalara bağlanıp işlemlerini yapmaları için uygulamalara ait arka tarafta gerekli servislerin sağlıklı bir şekilde çalışıyor olması gerekiyor. Uygulamalara ait bu servislerin sistem açıldığında çalışmasını sağlayan servis hesapları uygulamanın kurulumu esnasından tanımlanır. Örneğin bir SQL Server kurulumunu yaparken (SQL Server 2008 kurulumu ve kurulum aşamasındaki ayarları SQL SERVER 2008 – Kurulum makalesinden inceleyebilirsiniz.) kurulum esnasında SQL Server uygulamasına ait bileşenleri çalıştıracak kullanıcı hesabı tanımlamasını gerçekleştiririz. Burada kullanacağımız kullanıcı hesabını öncelikle active directory domain yapısında ya da yerel bilgisayarımızda oluşturup, güvenli bir parola da tanımı yaparız. SQL Server uygulamasının kurulumu esnasında da bu kullanıcıyı ve parolasını tanımlarız. İlerleyen zamanlarda eğer kullanıcıya ait parolayı değiştirirseniz bu durumda o andan itibaren o kullanıcı hesabını kullanan SQL servisleri çalışmayacaktır. Böyle bir durumda ya gidip kullanıcı heasabına eski şifreyi tanımlamanız gerekecek, ya da yeni şifreyi SQL Server’a ait o hesabı kullanan tüm servislerde yeniden tek tek tanımlamanız gerekecektir. Sisteminizde çok sayıda SQL Server kurulu sunucu varsa ve tamamında aynı kullanıcı hesabını kullandıysanız bütün sunucularda bu güncellemeyi yapmanız gerekecektir. Windows Server 2008 R2 ile beraber gelen ve sadece uygulamalara ait servisler üzerinde kullanmak için tasarlanmış Managed Service Account (MSA) – Yönetilen Servis Hesapları sayesinde artık yukarda söz ettiğimiz zorluklar rafa kalkmış oldu. Yönetilen Servis Hesapları ile Windows Server 2008 R2 domain seviyesinde Service Principal Names (SPNs) yönetimi de daha da iyileştirilmiş oldu. Bu özellik sayesinde kesilmeleri de azaltılarak toplam sahip olma maliyeti düşürülmüş olacak (Örneğin yukarıda da bahsettiğimiz gibi değiştirilen servis hesabı şifrelerinin yeniden tanımlanmasından doğan kesintiler.) .
Yönetilen servis hesabına active directory tarafından bir parola ataması arka tarafta otomatik olarak gerçekleştirilir. Ve bu atanan parola yine parola yenilenme dönemlerinde active directory tarafından otomatik olarak yenilenerek hesabın kullanıldığı bilgisayarlardaki servislere de otomatik olarak güncellenir. Yönetilen Servis Hesaplarının uygulama aşamalarını şu şekilde tanımlayabiliriz:
Active Directory içerisinde yönetilen servis hesabının oluşturulması
Yönetilen Servis Hesabının kullanılacak bilgisayarlara yüklenmesi
Yönetilen Servis Hesabının uygulamalara ait servislere tanımlanması
Yönetilen servis hesapları çoğu servis senaryolarında faydalı olmasına rağmen bazı sınırlılıkları söz konusudur:
Yönetilen Servis Hesapları Çoklu Bilgisayarlar Arası Paylaşılamaz – Yönetilen Servis hesabı spesifik bir bilgisayar hesabına ilişkilendirilir. Ve aynı anda birden fazla bilgisayara yüklenemez. Pratik hayatta yönetilen servis hesabının kullanılamayacağı yapılar için örnek vermek gerekirse
Cluster node’larında
Load-balance uygulanmış bir web server grubunda
Oluşturulan bir yönetilen servis hesabı aynı anda sadece bir client üzerinde kullanılabilir. Yani yönetilen servis hesapları birden fazla bilgisayar arasında paylaşılamaz. Bundan dolayı yönetilen servis hesapları cluster fail-over senaryoları için uygun değildir. Aynı zamanda bir yük dengeleyici (load balancer) üzerindeki kimlik mekanizmasında da yönetilen servis hesabının Kerberos SPN tanımının yapılması gerekeceğinden bu yapı için de uygun değildir. Burada Load balance seneryosundan kastettiğimiz yapının içerisinde Microsoft yazılım-tabanlı ve üçüncü-parti donanım ve yazılım-tabanlı yük dağıtım çözümleri kapsanmaktadır. Kısacası eğer cluster kuruyorsanız ya da NLB kuruyorsanız, hala eski yapıda olduğu gibi servis hesaplarının kullanımını devam ettireceksiniz.
Bir diğer yandan aynı bilgisayar üzerinde birden fazla yönetilen servis hesabı yüklenebilir. Eğer 5 servisi olan bir uygulamanız varsa, burada önerilen bu 5 servis üzerinde de tek bir tane servis hesabının kullanılması ya da 5 farklı yönetilen servis hesabının ayrı ayrı yüklenmesi ve kullanılması.
Yönetilen Servis Hesapları sadece Windows Server 2008 R2 ve Windows 7 bilgisayarlarda çalışan uygulamalarda kullanılabilir ve sadece bu sistemlerde çalışır.
Windows Server 2003 ya da Windows Server 2008 modda çalışan domain yapılarında yönetilen servis hesaplarının kullanılabilmesi için ilave bazı konfigürasyonların da yapılması gerekir. Bunlar:
Forest seviyesinde Windows Server 2008 R2 DVD’si içerisinden adprep.exe /forestprep komutu çalıştırılarak mevcut active directory forest schema yapısı Windows Server 2008 R2 seviyesine yükseltilmelidir.
Yönetilen servis hesabını kullanacağınız domainlerde Windows Server 2008 R2 DVD’si içerisinden adprep.exe /domainprep komutu çalıştırılarak mevcut active directory domain konfigürasyonu Windows Server 2008 R2 seviyesine yükseltilmelidir.
Eğer domain controller bilgisayarının işletim sistemi Windows Server 2008 R2’de çalışıyorsa, otomatik şifre ve SPN yönetimi tam olarak çalışır.
Eğer domain controller bilgisayarının işletim sistemi Windows Server 2003 ya da Windows Server 2008 ise, otomatik şifre yönetimi çalışır, otomatik SPN yönetimi çalışmaz, dolayısıyla SPN’ler administrator’lar tarafından yönetilecektir.
Ayrıca Windows Powershell komutlarını kullanarak domain içerisindeki yönetilen servis hesaplarının yönetimini yapmak için de Windows Server 2008 R2’de çalışan bir member server bilgisayarını yapılandırmanız gerekir.
Yönetilen Servis Hesaplarının kullanılabilmesi için domain ya da forest seviyesinin Windows Server 2008 R2’de olmasına gerek yoktur.Fakat domain ya da forest seviyesinin Windows Server 2008 R2’de olması durumunda servis hesaplarının SPN yönetimi arka planda otomatik olarak gerçekleşecektir. Eğer domain ya da forest seviyesinin Windows Server 2008 ya da Windows Server 2003 seviyesinde olması durumunda servis hesaplarının SPN yönetimi yani register/unregister işlemleri elle yapılandırılmalıdır. Dolayısıyla yönetilen servis hesabını kullanmak için Windows Server 2008 R2 ile gelen çoğu özellikteki domain controller bilgisayarının Windows Server 2008 R2 versiyonuna yükseltilmesi burada zorunlu değildir.
Yönetilen servis hesaplarının oluşturulması, yönetilmesi ve uygulanması tamamen Windows PowerShell komut satırı aracı ile gerçekleştirilir.
ÖNEMLİ : Yönetilen servis hesaplarını oluştururken Active Directory Users and Computers konsolu yerine Windows PowerShell komutlarını kullanın. Çünkü konsoldan oluşturulan hesaplarda bazı gerekli özellikler servis hesabına ilişkilendirilmez.
Yönetilen servis hesabı özelliklerinde normal kullanıcı hesabı özelliklerine ait olan tablar gelmez. Sadece Attribute Editor tabı gelir.
Yönetilen Servis hesabının kullanılacağı bilgisayarlarda AD-PowerShell özellikleri yüklü olmalıdır. Bu yüklemeyi Server Manager, Features, Add Features, Remote Administration Tools, Role Administration Tools, AD DS and AD LDS Tools altından Active Directory Powershell Snap-in seçerek gerçekleştirebilirsiniz.
Bu yüklemeden sonra domain ortamında oluşturulan yönetilen servis hesabının o bilgisayarda kullanılabilmesi için o bilgisayar üzerine yüklenmesi gerekir. Bu işlem için de Start, Administrative tools, Active Directory Powershell komut satırını açıp aşağıdaki komutu kullanıyoruz:
Install-ADServiceAccount -identity <SA name>
Bu komut ile o bilgisayarın yönetilen servis hesabının kullanılması için uygun olup olmadığına bakılır. Ve Netlogon ve LSA servislerinde o bilgisayarın üzerine yüklenen servis hesabına ait parola değişikliklerinin otomatik olarak bilgisayar hesabı tarafından gerçekleştirilmesi için gerekli değişiklikler sağlanır.
Yönetilen Servis Hesapları ile normal kullanıcı hesaplarında olduğu gibi sisteme logon işlemlerini yapamazsınız.
Yönetilen Servis Hesapları için Windows Server 2008 R2 Active Directory Schema yapısı içerisinde msDS-ManagedServiceAccount isimli yeni bir nesne sınıfı oluşturuldu.
Yönetilen servis hesapları konfigürasyonu ve yönetiminde kullanılan araçlar ve bunları edinebileceğiniz konumlar aşağıdaki tabloda listelenmiştir:
Araç |
Bulunduğu Konum |
Windows PowerShell komut satırı arabirimi |
Windows Server 2008 R2 and Windows 7 |
Managed service account komutları |
Windows Server 2008 R2 and Windows 7 |
Dsacls.exe |
Windows Server 2008 R2 and Windows 7 |
Installutil.exe |
Windows Server 2008 R2 and Windows 7 |
Sc.exe komut satırı aracı ve Service Control Manager kullanıcı arayüzü |
Windows Server 2008 R2 and Windows 7 |
Services konsolu |
Windows Server 2008 R2 and Windows 7 |
SetSPN.exe |
http://go.microsoft.com/fwlink/?LinkID=44321 adresinden indirilebilir. |
NTRights.exe |
http://go.microsoft.com/fwlink/?LinkId=130308 adresinden indirilebilir. |
Yönetilen Servis Hesabı işlemleri yapılmadan önce bu işlemlerin yapılacağı client ya da sunucu sistem üzerine .NET Framework 3.5x ve Active Directory module for Windows PowerShell bileşenlerinin yüklenmesi gerekir demiştik.
Windows Server 2008 R2 üzerine .NET Framework ve Active Directory module for Windows PowerShell kurulumu için aşağıdaki adımları yerine getirmeniz yeterlidir.
1. Start, menüden Administrative Tools, altından Server Manager konsolu açılır.
2. Features, altında Add Features tıklanır.
3. Select Features sayfasında NET Framework 3.5.1 Features, altında .NET Framework 3.5.1 seçilir.
4. Next, tıklanır ve Install tıklanır.
5. Remote Server Administration Tools ve AD DS and AD LDS Tools, altından Active Directory PowerShell Snap-in seçilir.
6. Next, tıklanır ve Install butonuna tıklanarak yükleme sürecine geçilir.
7. Kurulum tamamlandıktan sonra Add Features Wizard kapatılır.
Windows 7 üzerine .NET Framework ve Active Directory module for Windows PowerShell kurulumu için aşağıdaki adımları yerine getirmeniz yeterlidir.
1. Web tarayıcısını açıp http://go.microsoft.com/fwlink/?LinkId=153874 adresinden RSAT aracı disk üzerine indirilir.
2. İndirilen dosyaya çift tıklanarak Remote Server Administration Tools kurulumu yapılır.
3. Start menüden Control Panel gelinir.
4. Programs, altından Programs and Features, altında sol tarafta bulunan Turn Windows features on or off tıklanır.
5. Microsoft .NET Framework 3.5.1 seçili olduğu kontrol edilir. Eğer seçili değilse seçilir..
6. Remote Server Administration Tools altından AD DS and AD LDS Tools, altından Active Directory PowerShell Snap-in seçilir.
7. OK tıklanır.
ÖNEMLİ NOT : Eğer .NET Framework, bileşeni aktifleştirilirse bilgisayar yeniden başlatılması için sizi uyaracaktır.
Yönetilen Servis Hesabı (Managed Service Account) Çalışma Mantığı
Windows Server 2008 R2 AD Schema msDS-ManagedServiceAccount isimli yeni bir nesne sınıfı getirdi. Bu sınıf sayesinden Yönetilen servis hesabını uygulayabiliyoruz. Aşağıda oluşturulan bir yönetilen servis hesabının nesne sınıfı kalıtım yapısı görünmektedir:
Computer
msDS-ManagedServiceAccount
organizationalPerson
Top
User
Buradaki nesne aslında domain ortamında çalışan bilgisayar hesapları gibi aynı zamanda hem bir kullanıcı hem de bir bilgisayar nesnesine ait özellikleri sergiler. Fakat bir bilgisayar nesnesi gibi person sınıfına sahip değildir, onun yerine msDS-ManagedServiceAccount sınıfını kullanır. Yönetilen Servis hesapları “Computer” sınıfının altında oluşturulmuş, fakat aynı zamanda da kullanıcı özelliğini gösteren nesnelerdir.
Peki yönetilen servis hesapları şifreleri nasıl tutuyor diyebilirsiniz. Domain ortamında çalışan bilgisayar hesaplarının arka planda gerçekleştirilen şifre ya da parola kullanımları ile benzer şekilde yönetilen servis hesaplarının da parola kullanımları gerçekleşir. Yönetilen servis hesaplarının şifreleri de o bilgisayara ait bilgisayar hesabının şifresi değiştiği anda değişir ya da yenilenir. (Varsayılan olarak her 30 günde ). Bunu registry içerisinden aşağıdaki DWORD değerleri ile kontrol edebilirsiniz :
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetLogonParameters
DisablePasswordChange = [0 veya 1] MaximumPasswordAge = [1-1,000,000 gün arasında değer alır, varsayılan değeri 30 gündür.]
Yönetilen servis hesapları bilgisayar hesaplarında olduğu gibi domain ya da fine-grained password policies’e bakmaz. Yönetilen servis hesapları karmaşık, rasgele ve otomatik olarak üretilen (240 karakter ve kripto uygulanarak) oluşturulur. Yönetilen servis hesaplarında kilitlenme olmaz ve interaktif olarak logon olamazlar. Administrators yetkisine sahip kullanıcılar isterse yönetilen servis hesabına elle bilinen değerlerde şifre atayabilirler ve istedikleri zaman da bunu resetleyebilmelerine rağmen, bu şekilde kullanmanın zaten herhangi bir nedeni ya da avantajı yoktur.
Tüm yönetilen servis hesapları varsayılan olarak CN=Managed Service Accounts, DC=<domain>, DC=<com> kabında oluşur. Bunu DSA.MSC ile açılan Active Directory Users and Computers konsolunda görebilirsiniz.
Yönetilen Servis Hesabı (MSA) Uygulamaları
Yönetilen servis hesapları spesifik bir forest ya da domain fonksiyonel seviyesi gerektirmezler. Fakat bazı davranışlar domain controller bilgisayarının işletim sistemine bağımlı olarak fonksiyon gösterir.
Bir yönetilen servis hesabının uygulanması dört aşamadan oluşur:
1. AD’de yönetilen servis hesabının oluşturulması.
2. AD’de bulunan bir bilgisayar hesabı ile yönetilen servis hesabının ilişkilendirilmesi.
3. İlişkilendirilen bilgisayar üzerine yönetilen servis hesabının yüklenmesi.
4. Servislerin yönetilen servis hesabını kullanacak şekilde yapılandırılması.
Active Directory içerisinde yönetilen servis hesaplarının oluşturulması PowerShell komut satırı aracıyla gerçekleştirilir:
1. PowerShell başlatın.
2. AD PowerShell modülünü import ediyoruz:
Import-Module ActiveDirectory
3. Aşağıdaki şekilde yönetilen servis hesabını oluşturun:
New-ADServiceAccount -Name <some new unique MSA account name> -Enabled $true
Varsayılan olarak oluşturulan MSA’ler active directory içerisinde Managed Service Accounts kabı altında gelir. Eğer farklı bir kap içerisinde oluşturulması istenirse, aşağıdaki gibi kullanılabilir. Bu örnekte, cozumpark.local domaini içerisindeki Managed Service Account kabı içerisinde SQL-DBSRV1 isimli bir yönetilen servis hesabı oluşturulmuş oluyor. Siz farklı bir kap içerisinde oluşsun isterseniz Path parametresi ile bunu tanımlayabilirsiniz.
New-ADServiceAccount -Name SQL-DBSRV1 -Path “CN=Managed Service Accounts,DC=cozumpark,DC=local”
4. Yönetilen servis hesabını Active Directory’de ilgili bilgisayar hesabı ile ilişkilendirin:
Add-ADComputerServiceAccount -Identity <the target computer that needs an MSA> -ServiceAccount <the new MSA you created in step 3>
Aşağıdaki komut ile DBSRV1 bilgisayarı üzerine SQL-DBSRV1 hesabının tanımlanması ya da bir diğer ifade ile yüklenmesi sağlanmış olur.
Add-ADComputerServiceAccount -Identity DBSRV1 -ServiceAccount SQL-DBSRV1
5. Yönetilen servis hesabının çalışacağı ve kullanılacağı bilgisayar logon olun. Aşağıdaki bileşenlerin yüklü ve kullanılabilir olduğundan emin olun:
· Active Directory Module for Windows PowerShell
· .NET Framework 3.5.1
6. PowerShell başlatın.
7. AD modülü aktifleştirin:
Import-Module ActiveDirectory
8. Yönetilen servis hesabını aşağıdaki komutla yükleyin:
Install-ADServiceAccount -Identity <the new MSA you created in step 3>
Aşağıdaki komut ile SQL-DBSRV1 isimli yönetilen servis hesabının kullanılacak bilgisayara yüklenmesi sağlanmış olur.
Install-ADServiceAccount -Identity SQL-DBSRV1
Not: Yukarıdaki komutu çalıştıran kullanıcı hesabının o bilgisayar üzerinde local admin yetkisi olmasının yanında active directory’de bulunan yönetilen servis hesabı üzerinde değişiklik yapma (modify) yetkisinin de olması gerekir. Eğer domain admin hesabı ile bu komutları çalıştırıyorsanız zaten sorun yaşamayacaksınız, aksi halde yönetilen servis hesabı için delegasyonla değişiklik yapma yetkisi verilmesi gerekir.
9. Şimdi de yönetilen servis hesabının ilgili servislere uygulanması kaldı:
Grafiksel Yolla Konfigürasyon:
a. services.msc başlatın.
b. Servisin Properties’ine gelin.
c. Log On tabında “This Account” seçip yönetilen servis hesabını domainname$ şeklinde tanımlayın. Yönetilen Servis hesabı “SQL-DBSRV1” ve domain “cozumpark.local” olduğu durumda:
cozumparkSQL-DBSrv1$
d. Password ve Confirm password kutularındaki tüm şifreleri temizleyin. Buralara herhangi birşey girmeyeceğiz.
e. Apply ile onaylayın ve OK tıklayarak karşınıza “Logon as a Service Right granted” mesajının geldiğini görün:
f. Servisi çalıştırın. Hatasız bir biçimde çalışması gerekir. Bunu gerek Services konsolundan gerekse de Task Manager altından kontrol edin.
PowerShell Yöntemiyle:
a. PowerShell başlatın.
b. Aşağıdaki script’i bir metin dosyasına yapıştırın:
# Sample script for setting the MSA password through PowerShell # Edit this section: $MSA=” cozumparkSQL-DBSrv1$” # Don’t edit this section: $Password=$null |
c. Kırmızı ile boyanmış kısımları kendi domain ve yönetilen servis hesabı bilgilerinize göre değiştirin.
d. Metin dosyasını MSA.ps1 olarak kaydedin.
e. PowerShell konsolunda, script policy’yi aşağıdaki komutla görüntüleyin :
Get-ExecutionPolicy
f. Execution-Policy ayarını remote signing olarak ayarlayın.
Set-ExecutionPolicy remotesigned
g. Script’i çalıştırın:
h. Bu işlemden sonra execution policy değerini tekrar istediğiniz değere çevirebilirsiniz:
Yönetilen Servis Hesabını Kaldırmak
Yönetilen servis hesabının kaldırılması da iki-parçadan oluşan basit bir süreç.
1. Aşağıdaki PowerShell komutunu kullanarak yönetilen servis hesabı kullanıldığı bilgisayardan silinir.
Remove-ADServiceAccount –identity <your MSA name>
Aşağıdaki komut ile DBSRV1 bilgisayarı üzerinden SQL-DBSRV1 yönetilen servis hesabının silinmesi ya da bir diğer ifade ile kaldırılması sağlanmış olur.
Remove-ADComputerServiceAccount -Identity DBSRV1 -ServiceAccount SQL-DBSRV1
2. Yönetilen Servis hesabını Active Directory içerisindne tamamen silmek için de aşağıdaki PowerShell komutunu uygulayabilirsiniz. Eğer mevcut yönetilen servis hesabını başka bir bilgisayarda kullanacaksanız silmeden bu adımı atlayabilirsiniz.
Remove-ADComputerServiceAccount –Identity <the computer the MSA was assigned to previously> -ServiceAccount <the MSA>
Aşağıdaki komut ile domain ortamında açılmış SQL-DBSRV1 isimli yönetilen servis hesabının tamamen silinmesi sağlanmış olur.
Remove-ADServiceAccount -Identity SQL-DBSRV1
Yönetilen Servis Hesabı İle İlgili Diğer Uygulamalar
Aşağıdaki komut ile de DBSRV1 isimli SQL Server sunucusu üzerinde yüklü olan yönetilen servis hesaplarını gösterir:
Get-ADServiceAccount –Filter {HostComputers –eq “DBSRV1” }
Get-ADServiceAccount komutunun kullanımı ile ilgili tüm detaylar için aşağıdaki komutu uygulayabilirsiniz:
Get-Help Get-ADServiceAccount –detailed
Aşağıdaki komut ile cozumpark.local domaini içerisindeki yönetilen servis hesaplarının listesini alabilirsiniz:
Get-ADServiceAccount -Filter ‘Name -like “*”‘ | FT Name,HostComputers -A
Aşağıdaki komut ile SQL-DBSRV1 isimli yönetilen servis hesabının parolasının resetlenmesi sağlanmış olur.
Reset-ADServiceAccountPassword SQL-DBSRV1
SONUÇ
Bu makalemizde sizlere Windows Server 2008 R2 ile beraber gelen Active Directory Managed Service Accounts (Yönetilen Servis Hesapları özelliğinin bizlere neler sağladığı, bu özelliği kullanmaya başlamadan önce yapmamız gereken ön hazırlıkları ve bu özelliğin kullanımını uygulamalı olarak anlattık. Önümüzdeki makalelerde Windows Server 2008 R2 ile beraber Active Directory Domain Servislerinde gelen yeni özellikleri detaylı uygulamalarıyla birlikte anlatmaya devam edeceğiz.