मैनेज्ड सर्विस अकाउंट का परिचय
मैनेज्ड सर्विस अकाउंट (MSA) एक विशेष प्रकार का एक्टिव डायरेक्टरी खाता है जिसका उपयोग सेवाओं, एप्लिकेशन और शेड्यूल्ड टास्क को सुरक्षित रूप से चलाने के लिए किया जा सकता है। मूल विचार यह है कि इन खातों के लिए पासवर्ड पूरी तरह से एक्टिव डायरेक्टरी द्वारा प्रबंधित किया जाता है। इनके लिए 240 वर्णों की लंबाई वाला एक जटिल पासवर्ड स्वचालित रूप से जनरेट किया जाता है, जो स्वचालित रूप से बदलता है (डिफ़ॉल्ट रूप से, हर 30 दिनों में)। केवल केरबेरोस का उपयोग प्रमाणीकरण के लिए किया जाता है (कोई NTLM सुरक्षा समस्या नहीं), इंटरैक्टिव लॉगऑन अनुमति नहीं है, पासवर्ड किसी को भी ज्ञात नहीं है और स्थानीय सिस्टम पर संग्रहीत नहीं है (आप mimikatz या इसी तरह के टूल्स का उपयोग करके LSASS सिस्टम प्रक्रिया से पासवर्ड नहीं निकाल सकते)। इस तरह, सेवा या अनअटेंडेड जॉब शुरू करने के लिए, आपको AD में व्यक्तिगत सेवा उपयोगकर्ता बनाने और उनके पासवर्ड प्रबंधित करने की आवश्यकता नहीं है।
मैनेज्ड सर्विस अकाउंट Windows Server 2008 R2 में पेश किए गए थे (ऑब्जेक्ट प्रकार msDS-ManagedServiceAccount)। उनकी मुख्य सीमा यह है कि ऐसा खाता केवल एक सर्वर पर उपयोग किया जा सकता है (इनका उपयोग क्लस्टर और NLB सेवाओं में नहीं किया जा सकता)। इसलिए, Windows Server 2012 ने ग्रुप मैनेज्ड सर्विस अकाउंट/gMSA (प्रकार msDS-GroupManagedServiceAccount) पेश किया। gMSA खातों का उपयोग एक साथ कई होस्ट पर किया जा सकता है।
आइए एक्टिव डायरेक्टरी में सर्वर और वर्कस्टेशन पर सेवाओं और टास्क लॉन्च करने के लिए MSA और gMSA के उपयोग की विशेषताओं पर विचार करें।
MSA/gMSA सर्विस अकाउंट उपयोग करने की आवश्यकताएं
| मैनेज्ड सर्विस अकाउंट | ग्रुप मैनेज्ड सर्विस अकाउंट | |
|---|---|---|
| AD डोमेन और फॉरेस्ट फंक्शनल लेवल | Windows Server 2008 R2 या नया | Windows Server 2012 या नया |
| KDC | Microsoft Key Distribution Service (KdsSvc) सक्षम के साथ डोमेन कंट्रोलर | |
| PowerShell | सर्विस AD अकाउंट बनाने और प्रबंधित करने के लिए, आपको Windows PowerShell के लिए एक्टिव डायरेक्टरी मॉड्यूल इंस्टॉल करना होगा | |
| .Net Framework | .NET Framework 3.5 या नया सर्वर पर इंस्टॉल होना चाहिए | |
| समर्थित Windows संस्करण | Windows 7/Windows Server 2008 R2 या नया | Windows Server 2012/Windows 8 या नया |
की डिस्ट्रीब्यूशन सर्विस (KDS) कुंजी बनाना
MSA/gMSA अकाउंट बनाना शुरू करने से पहले, आपको एक बार का ऑपरेशन करना होगा और KDS रूट कुंजी बनानी होगी। ऐसा करने के लिए, डोमेन कंट्रोलर पर निम्न PowerShell कमांड चलाएं (Microsoft Key Distribution Services इंस्टॉल और चल रहा होना चाहिए):
Add-KdsRootKey –EffectiveImmediately
इस मामले में कुंजी बनाई जाती है और AD रेप्लिकेशन खत्म होने के 10 घंटे बाद उपलब्ध हो जाती है।
टिप: टेस्ट वातावरण में कुंजी का तुरंत उपयोग करने के लिए, आप यह कमांड चला सकते हैं:
Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
सुनिश्चित करें कि KDS रूट कुंजी सफलतापूर्वक बनाई गई है:
Get-KdsRootKey
KDS कुंजी की जांच करने के लिए कमांड का उपयोग करें:
Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId
एक्टिव डायरेक्टरी में मैनेज्ड MSA अकाउंट कैसे बनाएं
AD में एक नया MSA मैनेज्ड अकाउंट बनाने के लिए, कमांड का उपयोग करें:
New-ADServiceAccount -Name msaMunSrv1 –RestrictToSingleComputer
डिफ़ॉल्ट रूप से, MSA और gMSA कंटेनर CN=Managed Service Accounts में बनाए जाते हैं, लेकिन आप Path पैरामीटर का उपयोग करके OU बदल सकते हैं।
अपने MSA सर्विस अकाउंट को लक्ष्य कंप्यूटर से लिंक करें:
$Identity = Get-ADComputer -identity mun-srv01
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaMunSrv1
याद दिला दें, आप MSA अकाउंट का उपयोग केवल एक AD होस्ट पर कर सकते हैं।
ADUC (एक्टिव डायरेक्टरी उपयोगकर्ता और कंप्यूटर) कंसोल खोलें और सुनिश्चित करें कि Managed Service Accounts कंटेनर (OU) में msDS-ManagedServiceAccount प्रकार का एक नया अकाउंट दिखाई दिया है।
यह AD कंटेनर डिफ़ॉल्ट रूप से छिपा होता है। इसे देखने के लिए, स्नैप-इन के View मेनू में Advanced Features सक्षम करें।
आप कमांड का उपयोग करके MSA अकाउंट जानकारी प्राप्त कर सकते हैं:
Get-ADServiceAccount msaMunSrv1
एक्टिव डायरेक्टरी में ग्रुप मैनेज्ड सर्विस अकाउंट (gMSA) बनाना
gMSA अकाउंट बनाने से पहले, एक डोमेन सुरक्षा समूह बनाएं और इसमें वे सर्वर जोड़ें जिन्हें इस ग्रुप सर्विस अकाउंट के लिए पासवर्ड प्राप्त करने की अनुमति होगी। समूह बनाने और भरने का सबसे आसान तरीका PowerShell का उपयोग करना है:
New-ADGroup grMunSQL1 -path 'OU=Groups,OU=Munich,OU=DE,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Add-AdGroupMember -Identity grMunSQL1 -Members mun-sql01$, mun-sql02$, mun-sql03$
ग्रुप मैनेज्ड सर्विस अकाउंट (gMSA) बनाने के लिए, कमांड का उपयोग करें:
New-ADServiceAccount -name gmsaMunSQL1 -DNSHostName gmsaMunSQL1.woshub.com -PrincipalsAllowedToRetrieveManagedPassword grMunSQL1 –verbose
gMSA अकाउंट भी डिफ़ॉल्ट रूप से Managed Service Accounts OU में बनाया जाता है।
Windows पर ग्रुप मैनेज्ड सर्विस अकाउंट इंस्टॉल करना
लक्ष्य सर्वर या वर्कस्टेशन पर MSA / gMSA सर्विस अकाउंट का उपयोग करने के लिए, आपको पहले एक्टिव डायरेक्टरी PowerShell मॉड्यूल इंस्टॉल करना होगा:
Add-WindowsFeature RSAT-AD-PowerShell
सर्वर पर MSA (gMSA) सर्विस अकाउंट इंस्टॉल करें:
Install-ADServiceAccount -Identity gmsaMunSQL1
जांचें कि सर्विस अकाउंट सही ढंग से इंस्टॉल है या नहीं:
Test-ADServiceAccount gmsaMunSQL1
यदि कमांड True लौटाता है, तो सब कुछ सही ढंग से कॉन्फ़िगर किया गया है।
यदि कमांड False लौटाता है, तो सबसे अधिक संभावना है कि MSA अकाउंट सर्वर पर इंस्टॉल नहीं है या इस कंप्यूटर के पास इसका उपयोग करने की अनुमति नहीं है:
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.
आप मानक RunAs का उपयोग करके यह सत्यापित नहीं कर सकते कि आपकी सेवाएं और स्क्रिप्ट MSA सर्विस अकाउंट के तहत चल सकती हैं। इसके बजाय PsExec टूल का उपयोग करें (हमने पहले दिखाया था कि NT Authority\System की ओर से कमांड प्रॉम्प्ट चलाने के लिए psexec का उपयोग कैसे करें)।
- कमांड प्रॉम्प्ट को व्यवस्थापक के रूप में खोलें
- कमांड चलाएं:
PsExec64.exe -i -u woshub\gmsaMunSQL1$ -p ~ cmd.exeपासवर्ड को ~ से बदलें। इसका मतलब है कि पासवर्ड AD से प्राप्त किया जाना चाहिए - खुली cmd विंडो में,
whoamiकमांड चलाएं ताकि यह सुनिश्चित हो सके कि कंसोल gMSA अकाउंट के तहत चल रहा है - सत्यापित करें कि स्क्रिप्ट, प्रोग्राम, या सेवाएं मैनेज्ड सर्विस अकाउंट के तहत सही ढंग से चल रही हैं
अब आवश्यक Windows सेवाओं, टास्क शेड्यूलर टास्क, IIS पूल आदि को MSA/gMSA उपयोगकर्ता के रूप में चलाने के लिए कॉन्फ़िगर करना बाकी है।
Windows सर्विस को मैनेज्ड सर्विस अकाउंट के तहत कैसे चलाएं?
अब आप आवश्यक Windows सर्विस को MSA/gMSA अकाउंट के तहत चलाने के लिए कॉन्फ़िगर कर सकते हैं।
- सर्विस मैनेजमेंट कंसोल खोलें (
services.msc) - आवश्यक सर्विस के गुण खोलें और "लॉग ऑन" टैब पर जाएं
- यह खाता विकल्प चुनें और MSA अकाउंट का नाम दर्ज करें। अकाउंट नाम के अंत में $ प्रतीक जोड़ना सुनिश्चित करें (आपको अकाउंट पासवर्ड दर्ज करने की आवश्यकता नहीं है)
- MSA सर्विस अकाउंट को स्वचालित रूप से सेवा के रूप में लॉग ऑन अनुमतियां दी जाएंगी
- परिवर्तन सहेजने के बाद, सर्विस को पुनरारंभ किया जाना चाहिए
जटिल सेवाओं को gMSA के साथ चलाने के लिए, यह देखने के लिए दस्तावेज़ देखें कि क्या यह समर्थित है। वर्तमान में gMSA SQL Server, IIS, AD LDS, Exchange Server में समर्थित है।
मैनेज्ड सर्विस अकाउंट/gMSA के साथ शेड्यूल्ड टास्क चलाना
आप Windows Task Scheduler को gMSA सर्विस अकाउंट के तहत जॉब चलाने के लिए कॉन्फ़िगर कर सकते हैं। यह सुविधाजनक है क्योंकि gMSA अकाउंट के लिए पासवर्ड स्क्रिप्ट में संग्रहीत नहीं हैं, आपको उन्हें एन्क्रिप्ट या सुरक्षित करने की आवश्यकता नहीं है। जब पासवर्ड बदलता है, तो आपको टास्क को पुनः कॉन्फ़िगर नहीं करना पड़ता।
MSA/gMSA अकाउंट को अनुमतियां देने के लिए, इसे आवश्यक सुरक्षा समूह में जोड़ना पर्याप्त है। उदाहरण के लिए, स्थानीय Administrators समूह, Domain Admins, DNS Admins, आदि।
आप PowerShell का उपयोग करके टास्क को gMSA अकाउंट के रूप में चलाने के लिए कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए, निम्न स्क्रिप्ट एक नया शेड्यूल्ड टास्क बनाएगी जो हर दिन रात 11:00 बजे डेटाबेस बैकअप के लिए PowerShell स्क्रिप्ट चलाती है:
$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 woshub\gmsaMunSQL1$ -LogonType Password
Register-ScheduledTask DBBackup –Action $action –Trigger $trigger –Principal $principal
टिप: शेड्यूल्ड टास्क चलाने के लिए, आपको gMSA अकाउंट को "बैच जॉब के रूप में लॉग ऑन" अनुमति देनी होगी।
आर्गुमेंट '-LogonType Password' निर्दिष्ट करता है कि इस gMSA अकाउंट के लिए पासवर्ड डोमेन कंट्रोलर से प्राप्त किया जाएगा।
PowerShell के साथ शेड्यूल्ड टास्क प्रबंधित करने के बारे में और जानें।
आप taskschd.msc GUI का उपयोग करके वांछित सेटिंग्स के साथ एक शेड्यूल्ड जॉब भी बना सकते हैं। फिर आप इसे schtasks.exe टूल का उपयोग करके मैनेज्ड सर्विस अकाउंट के तहत चलाने के लिए पुनः कॉन्फ़िगर कर सकते हैं:
schtasks /Change /TN BackupDB /RU "woshub\gmsaMunSQL1$" /RP ""