जस्ट इनफ एडमिनिस्ट्रेशन (JEA) फीचर पावरशेल संस्करण 5.0 से उपलब्ध है और आपको उन सभी चीजों के लिए प्रशासनिक विशेषाधिकारों को डेलिगेट करने की अनुमति देता है जिन्हें आप पावरशेल से प्रबंधित कर सकते हैं। पावरशेल JEA का मुख्य उद्देश्य विशेषाधिकारों को सीमित करना है। JEA आपको नॉन-एडमिन यूजर्स को सर्वर या सर्विस एडमिनिस्ट्रेटर अधिकार (AD, एक्सचेंज, शेयरपॉइंट, आदि) दिए बिना विशिष्ट प्रशासनिक कार्य करने की अनुमति देता है। JEA का उपयोग करके, आप सेट कर सकते हैं कि कौन से यूजर्स एडमिन विशेषाधिकारों के साथ विशिष्ट कमांडलेट्स, फंक्शन्स या पावरशेल स्क्रिप्ट्स चला सकते हैं और सभी कार्यों को लॉग कर सकते हैं (पावरशेल कमांड हिस्ट्री के समान)।
पावरशेल जस्ट इनफ एडमिनिस्ट्रेशन कैसे लागू करें?
एक एडमिनिस्ट्रेटर एक सर्वर पर पावरशेल सेशन कॉन्फिगरेशन फाइल बनाता है जिसमें वे कमांड्स होती हैं जिन्हें एक यूजर चला सकता है। फाइल्स के आधार पर, एक JEA एंडपॉइंट बनाया जाता है जिससे यूजर कनेक्ट कर सकता है और उसके लिए उपलब्ध किसी भी कमांड या प्रोग्राम को निष्पादित कर सकता है।
यहां हम एक उदाहरण दिखाएंगे कि कैसे नॉन-एडमिन यूजर्स को डोमेन कंट्रोलर को रीबूट करने, और उस पर DNS और ADDS सर्विसेज को रीस्टार्ट करने की अनुमति दी जाए।
इस मामले में, आपको यूजर्स को डोमेन कंट्रोलर के लिए RDP एक्सेस देने, AD में उन्हें प्रशासनिक विशेषाधिकार डेलिगेट करने, विंडोज सर्विसेज पर अधिकार असाइन करने, या लिंक्स का पालन करके सर्वर रीस्टार्ट करने की आवश्यकता नहीं है। सभी आवश्यक प्रतिबंध जस्ट इनफ एडमिनिस्ट्रेशन के कॉन्फिगरेशन में सेट किए गए हैं।
सबसे पहले, पावरशेल सेशन की एक कॉन्फिगरेशन फाइल बनाएं (*.pssc)। ऐसा करने के लिए, अपने डोमेन कंट्रोलर पर यह कमांड चलाएं:
New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
नोटपैड का उपयोग करके PSSC फाइल खोलें।
PSSC फाइल सेट करती है कि कौन इस JEA एंडपॉइंट से कनेक्ट कर सकता है और किस खाते के तहत JEA सेशन में कमांड्स चलेंगी।
निम्न मानों को संशोधित करें:
- SessionType को Default से RestrictedRemoteServer में बदलें। यह मोड निम्न पावरशेल कमांडलेट्स के उपयोग की अनुमति देता है: Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default या Select-Object
- TranscriptDirectory पैरामीटर में एक फोल्डर निर्दिष्ट करें (इसे बनाएं)। यहां आप सभी JEA यूजर कार्यों को लॉग करेंगे:
TranscriptDirectory = C:\PS\JEA_logs - RunAsVirtualAccount विकल्प एक वर्चुअल एडमिनिस्ट्रेटर अकाउंट (लोकल एडमिनिस्ट्रेटर या डोमेन एडमिनिस्ट्रेटर ग्रुप का सदस्य) के तहत कमांड्स चलाने की अनुमति देता है:
RunAsVirtualAccount = $true
नेटवर्क रिसोर्सेज तक पहुंचने के लिए ग्रुप मैनेज्ड सर्विस अकाउंट (gMSA) का उपयोग कर सकते हैं: GroupManagedServiceAccount = 'woshub\gMSAJEAUser'
RoleDefinitions डायरेक्टिव में, JEA एंडपॉइंट से कनेक्ट करने की अनुमति वाले AD सिक्योरिटी ग्रुप और JEA रोल का नाम निर्दिष्ट करें (यह उस PSRC फाइल के नाम से मेल खाना चाहिए जिसे हम बाद में बनाने जा रहे हैं)।
उदाहरण के लिए:
RoleDefinitions = @{'woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}
सेशन कॉन्फिगरेशन फाइल सेव करें।
आगे बढ़ने से पहले, सुनिश्चित करें कि कॉन्फिगरेशन फाइल में कोई त्रुटि नहीं है:
Test-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
JEA कॉन्फिगरेशन फाइल रखने के लिए एक नया डायरेक्टरी बनाएं, उदाहरण के लिए:
New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory
PSRC फाइल्स हमेशा संबंधित मॉड्यूल के RoleCapabilities सबफोल्डर में स्थित होनी चाहिए।
फिर रोल विवरण के साथ एक कॉन्फिगरेशन PSRC फाइल बनाएं (PSSC कॉन्फिगरेशन से ऊपर के फाइल नाम का उपयोग करें)।
New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'
PSRC फाइल निर्दिष्ट करती है कि वर्तमान JEA सेशन में क्या करने की अनुमति है। VisibleCmdlets डायरेक्टिव में, आप किसी दिए गए यूजर ग्रुप के लिए उपयोग करने की अनुमति वाले कमांडलेट्स (और उनके मान्य पैरामीटर्स) निर्दिष्ट कर सकते हैं।
VisibleExternalCommands विकल्प में, आप बाहरी कमांड्स और EXE फाइल्स निर्दिष्ट कर सकते जिन्हें चलाने की अनुमति है।
उदाहरण के लिए, निम्न कॉन्फिगरेशन HelpDesk यूजर्स को शटडाउन कमांड या Restart-Computer कमांडलेट का उपयोग करके डोमेन कंट्रोलर को रीस्टार्ट करने, साथ ही Restart-Service कमांडलेट का उपयोग करके DNSServer और एक्टिव डायरेक्टरी डोमेन सर्विसेज को रीस्टार्ट करने की अनुमति देता है।
VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'
अपनी PSRC फाइल सेव करें।
फिर अपनी PSSC फाइल के लिए एक नई PSSession कॉन्फिगरेशन रजिस्टर करें:
Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
और WinRM को पुनरारंभ करें:
Restart-Service WinRM
उपलब्ध JEA एंडपॉइंट्स को सूचीबद्ध करें:
Get-PSSessionConfiguration|ft name
आइए देखें कि हमारा नया जस्ट-इनफ-एडमिनिस्ट्रेशन (JEA) कॉन्फिगरेशन कैसे काम करता है। आप कॉन्फिगरेशन फाइल में निर्दिष्ट सिक्योरिटी ग्रुप के यूजर अकाउंट के तहत बने JEA एंडपॉइंट से कनेक्ट कर सकते हैं। पावरशेल रिमोटिंग का उपयोग करके डोमेन कंट्रोलर से कनेक्ट करें (आपको JEA एंडपॉइंट नाम निर्दिष्ट करना होगा):
Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk
अपने पावरशेल सेशन में उपलब्ध कमांडलेट्स की सूची देखें:
Get-Command
जैसा कि आप देख सकते हैं, कमांड्स की एक छोटी संख्या उपलब्ध है, जिसमें Restart-Service और Restart-Computer शामिल हैं। एक यूजर केवल वही कर सकता है जो उसे करने की अनुमति है।
DNS सर्विस को रीस्टार्ट करने का प्रयास करें:
Restart-Service dns
सर्विस सफलतापूर्वक रीस्टार्ट हो गई है (कमांड डोमेन एडमिन अनुमतियों वाले विशेषाधिकार प्राप्त यूजर के रूप में चलाई गई है)।
यदि आप JEA कॉन्फिगरेशन फाइल में वर्णित किसी अन्य सर्विस को रीस्टार्ट करने का प्रयास करते हैं, तो निम्न त्रुटि संदेश दिखाई देता है:
पैरामीटर 'Name' पर आर्गुमेंट मान्य नहीं कर सकते। आर्गुमेंट "spooler" ValidateSet विशेषता द्वारा निर्दिष्ट सेट "DNS,NTDS" से संबंधित नहीं है। एक आर्गुमेंट दें जो सेट में हो और फिर से प्रयास करें। + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException
JEA पावरशेल सेशन में सभी यूजर कार्यों का इतिहास C:\PS\JEA_logs में फाइल्स में लॉग किया जाता है।
इस प्रकार, JEA आपको विशिष्ट पावरशेल कमांडलेट्स, स्क्रिप्ट्स या प्रोग्राम्स को एडमिनिस्ट्रेटर के रूप में चलाने के लिए यूजर्स को बारीकी से एक्सेस देने की अनुमति देता है।