Active Directory'de Yönetilen Hizmet Hesaplarını (MSA ve gMSA) Kullanma


Yönetilen Hizmet Hesabı (MSA), hizmetleri, uygulamaları ve zamanlanmış görevleri güvenli bir şekilde çalıştırmak için kullanılabilen özel bir Active Directory hesabı türüdür. Temel fikir, bu hesapların şifresinin tamamen Active Directory tarafından yönetilmesidir. Onlar için otomatik olarak değişen (varsayılan olarak her 30 günde bir) 240 karakter uzunluğunda karmaşık bir parola oluşturulur. Kimlik doğrulama için yalnızca Kerberos kullanılır (NTLM güvenlik sorunu yoktur), etkileşimli oturum açmaya izin verilmez, parola kimse tarafından bilinmez ve yerel sistemde depolanmaz (mimikatz veya benzeri ile LSASS sistem sürecinden parolayı çıkaramazsınız) aletler). Bu şekilde, bir hizmeti veya katılımsız işleri başlatmak için AD'de bireysel hizmet kullanıcıları oluşturmanız ve parolalarını yönetmeniz gerekmez.

Yönetilen Hizmet Hesapları, Windows Server 2008 R2'de kullanılmaya başlandı (nesne türü

msDS-ManagedServiceAccount

). Başlıca sınırlamaları, böyle bir hesabın yalnızca bir sunucuda kullanılabilmesidir (küme ve NLB hizmetlerinde kullanılamazlar). Bu nedenle, Windows Server 2012, Grup Tarafından Yönetilen Hizmet Hesaplarını/gMSA'yı (tür

msDS-GroupManagedServiceAccount

). gMSA hesapları, birden fazla ana bilgisayarda aynı anda kullanılabilir.

Active Directory'deki sunucularda ve iş istasyonunda hizmet ve görevleri başlatmak için MSA ve gMSA kullanmanın özelliklerini ele alalım.

MSA/gMSA hizmet hesaplarını kullanma gereksinimleri:

Managed Service AccountGroup Managed Service Account
AD domain and forest functional levelWindows Server 2008 R2 or newerWindows Server 2012 or newer
KDCDomain controller with Microsoft Key Distribution Service (KdsSvc) enabled
PowerShellTo create and manage service AD accounts, you need to install the Active Directory module for Windows PowerShell
.Net Framework.NET Framework 3.5 or newer must be installed on the server
Supported Windows versionsWindows 7/Windows Server 2008 R2 or newerWindows Server 2012/Windows 8 or newer

Anahtar Dağıtım Hizmeti (KDS) Anahtarını Oluşturun

Bir MSA/gMSA hesabı oluşturmaya başlamadan önce tek seferlik bir işlem gerçekleştirmeniz ve bir KDS kök anahtarı oluşturmanız gerekir. Bunu yapmak için, etki alanı denetleyicisinde aşağıdaki PowerShell komutunu çalıştırın (Microsoft Anahtar Dağıtım Hizmetlerinin yüklenmiş ve çalışır durumda olması gerekir):

Add-KdsRootKey -EffectiveImmediately

Bu durumda anahtar oluşturulur ve AD replikasyonu bittikten 10 saat sonra kullanılabilir hale gelir.

İpucu. Anahtarı test ortamında hemen kullanmak için şu komutu çalıştırabilirsiniz:

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

KDS kök anahtarının başarıyla oluşturulduğundan emin olun:

Get-KdsRootKey

KDS anahtarını kontrol etmek için komutu kullanın:

Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId

Active Directory'de Yönetilen MSA Hesabı Nasıl Oluşturulur

AD'de MSA tarafından yönetilen yeni bir hesap oluşturmak için şu komutu kullanın:

New-ADServiceAccount -Name msaMunSrv1 -RestrictToSingleComputer

Varsayılan olarak MSA ve gMSA, CN=Yönetilen Hizmet Hesapları kapsayıcısında oluşturulur, ancak Path parametresini kullanarak kuruluş birimini değiştirebilirsiniz.

MSA hizmet hesabınızı hedef bilgisayara bağlayın:

$Identity = Get-ADComputer -identity mun-srv01
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaMunSrv1

Bir hatırlatma olarak, MSA hesabını yalnızca bir AD ana bilgisayarında kullanabilirsiniz.

ADUC (Active Directory Kullanıcıları ve Bilgisayarları) konsolunu açın ve Yönetilen Hizmet Hesapları kapsayıcısında (OU) msDS-ManagedServiceAccount türünde yeni bir hesabın göründüğünden emin olun.

Bu AD kapsayıcısı varsayılan olarak gizlidir. Görmek için, ek bileşenin Görünüm menüsünde Gelişmiş Özellikler 'i etkinleştirin.

MSA hesap bilgilerini şu komutu kullanarak alabilirsiniz:

Get-ADServiceAccount msaMunSrv1

Active Directory'de Grup Tarafından Yönetilen Hizmet Hesabı (gMSA) oluşturun

gMSA hesabını oluşturmadan önce, bir etki alanı güvenlik grubu oluşturun ve bu grup hizmet hesabı için parola kullanmasına izin verilecek sunucuları buna ekleyin. Grup oluşturmanın ve doldurmanın en kolay yolu PowerShell kullanmaktır:

New-ADGroup grMunSQL1 -path 'OU=Groups,OU=Munich,OU=DE,dc=a-d,DC=com' -GroupScope Global -PassThru -Verbose
Add-AdGroupMember -Identity grMunSQL1 -Members mun-sql01$, mun-sql02$, mun-sql03$

Grup Tarafından Yönetilen Hizmet Hesabı (gMSA) oluşturmak için şu komutu kullanın:

New-ADServiceAccount -name gmsaMunSQL1 -DNSHostName gmsaMunSQL1.a-d.site -PrincipalsAllowedToRetrieveManagedPassword grMunSQL1 -verbose

gMSA hesabı, varsayılan olarak Yönetilen Hizmet Hesapları kuruluş biriminde de oluşturulur.

Grup Tarafından Yönetilen Hizmet Hesabını Windows'a Yükleme

MSA/gMSA hizmet hesaplarını hedef sunucularda veya iş istasyonlarında kullanmak için öncelikle Active Directory PowerShell modülünü kurmanız gerekir:

Add-WindowsFeature RSAT-AD-PowerShell

MSA (gMSA) hizmet hesabını sunucuya kurun:

Install-ADServiceAccount -Identity gmsaMunSQL1

Hizmet hesabının doğru yüklenip yüklenmediğini kontrol edin:

Test-ADServiceAccount gmsaMunSQL1

Komut True değerini döndürürse, her şey doğru yapılandırılmıştır.

Komut dönerse

False

, büyük olasılıkla MSA hesabı sunucuda yüklü değil veya bu bilgisayarın hesabı kullanma izni yok:

WARNING: Test failed for Managed Service Account gmsaMunSQL1. If standalone Managed Service Account, the account is linked to another computer object in the Active Directory. If group Managed Service Account, either this computer does not have permission to use the group MSA or this computer does not support all the Kerberos encryption types required for the gMSA.

Hizmetlerinizin ve betiklerinizin MSA hizmet hesabı altında çalışabileceğini doğrulamak için standart RunAs'ı kullanamazsınız. Bunun yerine PsExec aracını kullanın (daha önce size NT Authority\System adına komut istemini çalıştırmak için psexec'i nasıl kullanacağınızı göstermiştik).

  1. Komut istemini yönetici olarak açın;

  2. Komutu çalıştırın:

    PsExec64.exe -i -u a-d\gmsaMunSQL1$ -p ~ cmd.exe

    Şifreyi ~ ile değiştirin. Bu, şifrenin AD'den alınması gerektiği anlamına gelir.

  3. Açılan cmd penceresinde,

    whoami

    konsolun gMSA hesabı altında çalıştığından emin olmak için komut;

  4. Betiklerin, programların veya hizmetlerin bir Yönetilen Hizmet Hesabı altında doğru şekilde çalıştığını doğrulayın.

Artık MSA/gMSA kullanıcısı olarak çalışmak için gerekli Windows hizmetlerini, görev zamanlayıcı görevlerini, IIS havuzlarını vb. yapılandırmaya devam ediyor.

Yönetilen Hizmet Hesabı Altında Bir Windows Hizmeti Nasıl Çalıştırılır?

Artık gerekli Windows hizmetini bir MSA/gMSA hesabı altında çalışacak şekilde yapılandırabilirsiniz.

  1. Hizmet yönetimi konsolunu açın (

    services.msc

    );

  2. Gerekli hizmetin özelliklerini açın ve "Oturum Aç" sekmesine gidin;

  3. Bu hesap seçeneğini belirleyin ve MSA hesabının adını girin. Hesap adının sonuna $ sembolünü eklediğinizden emin olun (hesap şifresini girmeniz gerekmez);

  4. MSA hizmet hesabına otomatik olarak Hizmet Olarak Oturum Açma izinleri verilecektir;

  5. Değişiklikleri kaydettikten sonra hizmet yeniden başlatılmalıdır.

Karmaşık hizmetleri gMSA ile çalıştırmak için desteklenip desteklenmediğini görmek için belgelere bakın. Şu anda gMSA, SQL Server, IIS, AD LDS, Exchange Server'da desteklenmektedir.

Zamanlanmış Görevi Yönetilen Hizmet Hesabı/gMSA ile Çalıştırma

Windows Görev Zamanlayıcı'yı işleri gMSA hizmet hesabı altında çalıştıracak şekilde yapılandırabilirsiniz. gMSA hesabının şifreleri komut dosyalarında saklanmadığından, bunları şifrelemeniz veya korumanız gerekmediği için bu uygundur. Parola değiştiğinde, görevi yeniden yapılandırmanız gerekmez.

MSA/gMSA hesabına izin vermek için gerekli güvenlik grubuna eklemeniz yeterlidir. Örneğin, yerel Yöneticiler grubuna, Etki Alanı Yöneticilerine, DNS Yöneticilerine vb.

Görevi, PowerShell kullanarak gMSA hesabı olarak çalışacak şekilde yapılandırabilirsiniz. Örneğin, aşağıdaki betik, veritabanını yedeklemek için her gün saat 23:00'te bir PowerShell betiği çalıştıran yeni bir zamanlanmış görev oluşturacaktır:

$action = New-ScheduledTaskAction -Execute powershell.exe  -Argument "-file C:\PS\Scripts\DBBackup.ps1 -executionpolicy bypass -NoProfile"
$trigger = New-ScheduledTaskTrigger -At 23:00 -Daily
$principal = New-ScheduledTaskPrincipal -UserID a-d\gmsaMunSQL1$ -LogonType Password
Register-ScheduledTask DBBackup -Action $action -Trigger $trigger -Principal $principal

İpucu. Zamanlanmış bir görevi çalıştırmak için, gMSA hesabına "Toplu iş olarak oturum aç" izni vermeniz gerekir.

'

-LogonType Password

' bağımsız değişkeni, bu gMSA hesabı için parolanın etki alanı denetleyicisinden alınacağını belirtir.

PowerShell ile zamanlanmış görevleri yönetme hakkında daha fazla bilgi edinin.

kullanarak istediğiniz ayarlarla zamanlanmış bir iş de oluşturabilirsiniz.

taskschd.msc

GUI. Ardından, yönetilen bir hizmet hesabı altında çalışacak şekilde schtasks.exe aracını kullanarak yeniden yapılandırabilirsiniz:

schtasks /Change /TN BackupDB /RU "a-d\gmsaMunSQL1$" /RP ""

İlgili makaleler