Windows Server

Windows Server 2012 R2 ile Group Managed Service Accounts (gMSA) – Bölüm 2

İki bölümden oluşan makale serimizin ikinci bölümüne devam ediyoruz. İlk bölümde Windows Server 2012 R2 bakış açısı ile Active Directory Domain Servislerinde “Grup Seviyesinde Yönetilen Servis Hesapları (Group Managed Service Accounts (gMSA) ) konusunu mimarisi, uygulama alanları, altyapı gereksinimleri gibi detaylarını inceledik.Makale serimizin bu bölümünde de Windows Server 2012 R2 ile Group Managed Service Account (gMSA) oluşturma aşamalarını detaylarıyla, uygulamalı olarak inceliyoruz.

Makalemin ilk bölümüne aşağıdaki link üzerinden ulaşabilirsiniz

 

Group Managed Service Accounts – gMSA Oluşturma Adımları:

gMSA Yönetilen Servis Hesaplarının uygulama aşamalarını makalemizin birinci bölümünde şu şekilde tanımlamıştık:

         Active Directory domain içerisinde KDS Root Key oluşturulması

o   Bu işlem her domain için sadece bir defa yapılır.

         gMSA hesabı Oluşturulması ve Yapılandırılması

         gMSA hesabının Kullanıcılak  Sunucular Üzerinde Yapılandırılması

Şimdi bu adımları detaylı olarak sırayla uygulayalım.

1.      Active Directory Domain İçerisinde KDS Root Key Oluşturulması

Windows Server 2012 R2 işletim sisteminde çalışan domain controller sunucumuzda PowerShell komut satırı aracını çalıştırdıktan sonra Add-KDSRootKey –EffectiveImmediately komutunu aşağıdaki şekilde uyguluyoruz.

 

clip_image001

 

Komut çalıştırılmasından sonra oluşan root key’in domain içerisindeki diğer domain controller sunuculara replikasyon yapılması için 10 saate kadar beklemeniz gerekecektir. 10 saatlik süre özellikle çoklu site yapılarında çalışan active directory topolojilerinde replikasyonun tamamlanmasını garantileyen bir süre tanımıdır. Bu süreci hızlandırmak ve 10 saatlik beklemeyi ortadan kaldırmak için özellikle test ortamları için Add-KDSRootKey komutunu aşağıdaki şekilde bir ince ayarla kullanabiliriz.

Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))

 

2.      Active Directory İçerisinde Security Group Oluşturulması

Bu adım bir best-practice önerisidir. gMSA hesabınının kullanılacağı sistemleri ya da bilgisayarları bu gruba üye yaparak dinamik bir yönetim mekanizması oluşturulabilir. Bu adım zorunlu olmamakla beraber özellikle öneriyorum. Bu adım gerçekleştirilmezse servis hesabı oluşturma aşamasında servis hesabının kullanılacağı sistemlerin tanımlanması gerekecektir.

Not : Servis hesabının kullanıldığı sunucular üzerinde grup üyeliğinin etkinleşmesi için sunucuların yeniden başlatılması gerekecektir. Gruptan çıkarıldıklarında da yine etkinleştirme için sunucuların yeniden başlatılması gerekecektir.

 

 

clip_image002

 

 

Biz uygulamamızda servis hesapları için yukarıdaki şekilde görüldüğü gibi ServisHesaplari adında Global-Security grup oluşturup ilgili sunucuları da bu gruba üye yapıyoruz.

 

 

clip_image003

 

 

3.      gMSA Hesabın Oluşturulması

gMSA hesabınının oluşturulması için Windows Server 2012 R2 domain controller sunucu üzerinde PowerShell komut satırına geçiyoruz. Ve aşağıda görüldüğü gibi New-ADServiceAccount komutunu ilgili parametreleri ile çalıştırıyoruz.

Öncelikle active directory powershell modülünü yüklüyoruz:

 

Import-Module ActiveDirectory

 

clip_image004

 

Not: PowerShell 3.0 ve üzeri versiyonlarda Active Directory modülünü Import-Module ile yüklemeye gerek kalmadan doğrudan New-ADServiceAccount komutu kullanılabilir. Bu işlemle active directory modülü otomatik olarak memory’ye yüklenecektir.

Daha sonra New-ADServiceAccount komutu ve parametrelerini tanımlıyoruz:

New-ADServiceAccount –name <ServiceAccountName> –DNSHostName <fqdn> –PrincipalsAllowedToRetrieveManagedPassword <group> –ServicePrincipalNames <SPN1,SPN2,…>

Name :  gMSA servis hesap adı, bir başka ifade ile samAccountName tanımı.

DNSHostName : gMSA servis hesabının  tam DNS host tanımı.

PrincipalsAllowedToRetrieveManagedPassword :  gMSA servis hesabını kullanacak bilgisayar hesaplarının üye yapıldığı active directory grup tanımı.

ServicePrincipalNames :  gMSA servis hesabının SPN tanımı/tanımları.

Biz buradaki uygulamada Windows Task Schedular uygulamasında zamanlanmış görevlerde kullanmak amaçlı TaskRunMSA adında bir adet servis hesabı oluşturacağız:

         TaskRunMSA

New-ADServiceAccount -Name TaskRunMSA -DNSHostName MSTDC01.mesutaladag.local -PrincipalsAllowedToRetrieveManagedPassword “ServisHesaplari”

 

clip_image005

 

NOT : Bu aşamada “Key Does Not Exist” hatası alırsanız bunun nedeni birinci adımın atlanması yani Root Key oluşturulmamasındandır.

 

Bu adımdan sonrasında active directory içerisinde Managed Service Accounts kabı içerisinde ilgili servis hesaplarına ait nesneler oluşmuş olacaktır:

 

 

clip_image006

 

 

4.      gMSA Hesabının Sunucular Üzerinde Yapılandırılması:

Öncelikle MSTDC01 isimli sunucu üzerine active directory içerisinde oluşturmuş olduğum Gmsa servis hesabının yüklenmesi ve testini aşağıdaki adımlarla gerçekleştireceğiz.

 

Install-ADServiceAccount komutunu kullanabilmek için sunucular üzerinde Active Directory PowerShell modülünün yüklü olması gerekir. Benim domain controller sunucumda bu modül yüklü olduğu için herhangi bir işlem yapmıyorum. Fakat domain içerisindeki üye olan sunucular üzerinde böyle bir modül yüklü olmadığı durumlar için öncelikle aşağıdaki şekilde görüldüğü gibi Install-WindowsFeaturekomutu ile bunun yüklenmesini gerçekleştirmeniz gerekiyor. Bu yüklemeyi Server Manager konsolundan Add Roles and Features sihirbazı ile grafiksel arayüzden de gerçekleştirebilirsiniz:

 

 

clip_image007

 

 

Şimdi de Install-ADServiceAccount TestRunMSA komutu ile kullanacağımız servis hesabını ilgisi sunucu üzerine yüklüyoruz.

 

 

clip_image008

 

 

Not: Install-ADServiceAccount komutu ile yüklemede başarısız olursanız ilgili sunucunun yeniden başlatılarak gruba üye özelliğinin etkin hale gelmesi noktasını burada tekrar hatırlatmış olalım.

Yukarıdaki şekilde görüldüğü gibi artık servis hesabını da yüklemiş olduk. Yükleme işlemi sonrasında Test-ADServiceAccount komutu ile de servis hesabının yüklenmesini doğrulayabilirsiniz.

 

 

clip_image009

 

 

Bu komut sonrası çıktıda True sonucu ile servis hesabının başarıyla yüklendiğini doğrulamış olduk. Sıra geldi servis hesabını ilgili servis ya da görev üzerinde kullanmaya.

Bu işlem için de öncelikle Windows Services konsolunu açıyoruz. Örnek olarak Windows Internal Database servisinin Properties’ine giriyoruz ve Logon tabına geçiyoruz. Browse butonuna tıklayarak oluşturmuş olduğumuz TaskRunMSA servis hesabını gösteriyoruz.

 

 

clip_image010

 

 

Password ve Confirm Password kutularını boş bırakarak, Apply ile onaylıyoruz. Böylece servis hesabına ilgili servis üzerinde gerekli yetkiler tanımlanmış oluyor.

 

 

clip_image011

 

 

General tabına geçerek servisi Start ya da Restart ile yeni servis hesabı üzerinden çalışmasını tetikliyoruz. Bu aşamada bu bilgisayar Windows 2012 R2 ya da Windows 2012 domain controller ile iletişime geçerek servis hesabına ait şifreyi temin ediyor ve servis üzerinde bunu set ederek çalıştırıyor. Artık Windows Internal Database servisi oluşturmuş olduğumuz Gmsa servis hesabı ile çalışmaya başladı. Bundan böyle bu servis hesabının şifre yönetimini Windows işletim sistemi üzerinde ilgili bilgisayarın hesabı ile domain controller sunucu bilgisayarının hesabı karşılıklı haberleşerek gerçekleştirmiş olacaklar.

 

 

clip_image012

 

 

 

Windows Task Schedule İle Yönetilen Servis Hesaplarının Kullanımı:

Yukarıda bir Windows servisi üzerinde yönetilen servis hesabının yapılandırmasını adım adım nasıl yapıldığını inceledik. Şimdi de bir zamanlanmış görev üzerinde “Run As Account” olarak yönetilen servis hesabının kullanımını görelim.

Öncelikle yukarıdaki adımların benzerini gerçekleştirerek “RunAsAccount” isimli bir servis hesabı oluşturuyoruz:

 

 

clip_image013

 

 

Bu hesabı ilgili sunucu üzerine Install ediyoruz.

 

 

clip_image014

 

 

Şimdi de bu hesabın bir task üzerinde kullanımını görelim. Zamanlanmış görevlerde yönetilen servis hesaplarının yapılandırması grafiksel Task Scheduler uygulama arayüzünden desteklenmemektedir. PowerShell komut satırı aracı ile hazırlanan zamanlanmış görevlerde yönetilen servis hesabı yapılandırılabilir. Örneğin C: sürücüsü içerisinde düzenli çalışan “RunScript.cmd” isimli bir çalıştırılabilir komut dosyasını yönetilen servis hesabına ilişkilendirerek nasıl programladığımızı adım adım gerçekleştirelim:

 

 

clip_image015

 

 

Yukarıdaki $kullanici değişkenine atanan kullanıcı hesabı oluşturmuş olduğumuz RunAsAccount isimli yönetilen servis hesabıdır. Burada LogonType parametresinden sonraki Password ifadesi gerçek şifre değildir, servis hesabına ait şifrenin domain controller sunucusundan talep edileceğini belirtmektedir.

Şimdi bu parametreleri kullanarak bir zamanlanmış görev tanımlayalım. Bu işlem için de Register-ScheduledTask isimli powershell komutunu kullanıyoruz.

 

 

clip_image016

 

 

Bu işlem sonrasında Task Scheduler konsolu içerisine oluşturduğumuz zamanlanmış görevin geldiğini göreceksiniz:

 

 

clip_image017

 

 

Bundan böyle bu zamanlanmış görev yönetilen servis hesabı ile çalışacak ve bu hesabın şifre yönetimi de sunucuya ait bilgisayar hesabı ile domain controller arasındaki iletişimle otomatik olarak yönetilmiş olacaktır. Task scheduler konsolunda listelenen bu zamanlanmış görevle ilgili değişikliklerin yine PowerShell komut satırı ile gerçekleştirilmesi gerekir.

 

ÖNEMLİ : Zamanlanmış toplu işlem komutları ya da script dosyalarını yukarıdaki olduğu gibi yönetilen servis hesabı ile çalıştırılması senaryolarında, yönetilen servis hesabının ilgili sunucu ya da sunucular üzerinde “Logon as a batch” yetkisine sahip olması gerekir.

 

 

clip_image018

 

 

Logon as a batch yetkisini sunucunun Local Security Policy ayarlarından ya da active directory içerisinde sunucuya uygulanan Group Policy ayarları içerisinde Computer Configuration altında User Rights Assignment altından verebilirsiniz. Varsayılan olarak Administrators ve Backup Operators grupları bu yetkiye sahiptir. Yönetilen servis hesabını bu gruplara üye yaparak da yetki tanımını gerçekleştirebilirsiniz.

 

Üçüncü Parti GUI gMSA Yönetim Aracı

Şu ana kadar gMSA yönetimini hep PowerShell komut satırı uygulamaları ile gerçekleştirmiştik. Şimdi de free olarak yazılmış olan ve http://www.cjwdev.co.uk/Software/MSAGUI/Info.html adresinden indirebileceğiniz grafiksel yönetim aracını da kullanabilirsiniz:

 

 

clip_image019

 

 

Bu aracı indirdikten sonra Windows Server 2012 R2 sunucumuza yüklüyoruz.

 

 

clip_image020

 

 

clip_image021

 

 

Uygulama kurulduktan sonra çalıştırdığınızda aşağıdaki şekilde ekran karşımıza gelecektir.

 

 

clip_image022

 

 

Bu ekranda hali hazırda mesutaladag.local domaininde oluşturulan yönetilen servis hesaplarının listelendiğini göreceksiniz. Şimdi adım adım bu aracı kullanarak Group-Managed yönetilen servis hesabının yönetimini nasıl yaptığımız inceleyelim:

Öncelikle New butonuna tıklıyoruz.

Karşımıza gelen New Managed Service Account ekranında aşağıdaki şekilde bir ClustergMSA01 isimli servis hesabı tanımını giriyoruz. Hesabin oluşturulacağı kap olarak Managed Service Account varsayılan konumu yerine farklı bir organizational unit de gösterebilirsiniz. Hesap tipi olarak da Group MSA seçiyoruz.

 

 

clip_image023

 

 

Additional Options butonu genişletilerek hesap için son kullanma tarihi ve SPN tanımlarını da yine burdan girebilirsiniz.

 

 

clip_image024

 

 

OK ile onaylayarak servis hesabı oluşturma işlemini tamamlamış olacaksınız. Karşımıza gelen Associate With Computer ekranında oluşturulan servis hesabını active directory domain içerisinde bir bilgisayara atama yapıp yapmayacağımızı soracaktır.

 

 

clip_image025

 

 

Yes ile onaylıyoruz. Karşımıza gelen Edit Group MSA Hosts ekranında Add butonu kullanarak servis hesabının atanacağı bilgisayar hesabı gösterilir. Ben cluster yapıda çalışan SQL01 ve SQL02 hesaplarını sırayla ADD butonunu kullanarak ekliyorum.

 

 

clip_image026

 

 

OK ile tüm pencereler onaylanır. Ve başarıyla atamanın gerçekleştiği bilgisi gelecektir.

 

 

clip_image027

 

 

OK ile bu ekranı kapattıktan sonra listeye oluşturduğumuz gMSA hesabı gelmiş olacaktır.

 

 

clip_image028

 

 

Bu aşamadan sonra kalan tek adım ilgili sunucuya gidip bu servis hesabını ilgili uygulamaya tanımlamak olacaktır. SQL Cluster yapısının kurulu olduğu sunucularımdan ilkine bağlanıyorum. Windows Services konsolunu kullanarak aşağıdaki şekilde görüldüğü gibi oluşturduğumuz ClusterMSA01$ hesabını gösteriyorum.

 

 

clip_image029

 

 

Password ve Confirm Password kutucuklarını boşaltıyoruz. Şifre atamasını arka planda active directory domain controller sunucu ile iletişime geçerek sunucu kendisi yapacaktır. OK ile onayladıktan sonra yapmanız gereken servisi yeniden başlatmaktır. Servisi yeniden başlattığınız herhangi bir hata almadan sorunsuz başlattı ise cluster’ın ilk node’u üzerindeki işimiz bitti. İkinci node’a bağlanarak aynı işlemleri sırayla onun üzerinde de gerçekleştiriyoruz.

 

Eğer servisi yeniden başlattığınızda aşağıdaki gibi bir hata mesajı alırsanız bunun çözümü için sunucunun Local Security Policy konsolunda User Rights Management altından “Logon as a Service” yetkisini vermeniz gerekir.

 

 

clip_image030

 

 

Managed Service Accounts GUI aracı ile aşağıdaki araç çubuğu kısayolları kullanılarak farklı görevleri de yerine getirebilirsiniz:

Edit Hosts : Yönetilen servis hesabının ilişkili olduğu sunucu listesine eklemeye ya da listeden çıkarma yapılabilir.

 

 

clip_image031

 

 

View/Edit : Yönetilen servis hesabının özelliklerini görüntüleme ve düzenleme işlemleri.

 

 

clip_image032

 

 

Delete : Yönetilen servis hesabının active directory içerisinden tamamen silinmesi.

 

clip_image033

 

SONUÇ

Toplamda iki bölümden oluşacak makale serimizin ikinci bölümünün de sonuna geldik. Bu bölümde sizlerle Windows Server 2012 R2 ile Group Manager Service Accounts(gMSA) oluşturma, yapılandırma ve test adımlarını uygulamalı olarak paylaştık. Bir başka Windows Server 2012 R2 makalesinde görüşmek dileğiyle esenkalın.

Bu konudaki diğer kaynaklar;

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu