Microsoft ने हाल ही में एक बहुत ही उपयोगी SecretManagement जारी किया है पावरशेल मॉड्यूल। आप इसका उपयोग अपनी PowerShell स्क्रिप्ट में सहेजे गए पासवर्ड (रहस्य) को सुरक्षित रूप से संग्रहीत और उपयोग करने के लिए कर सकते हैं। मॉड्यूल में दो घटक होते हैं:a SecretStore vault (एक डिफ़ॉल्ट पासवर्ड स्टोर), और एक SecretManagement (विभिन्न पासवर्ड वॉल्ट तक पहुंचने के लिए इंजन)। बिल्ट-इन सीक्रेटस्टोर वॉल्ट और थर्ड-पार्टी सीक्रेट वॉल्ट (जैसे कीपास, लास्टपास, हैशीकॉर्प वॉल्ट, एज़्योर की वॉल्ट, बिटवर्डन, विंडोज क्रेडेंशियल मैनेजर, आदि) दोनों समर्थित हैं। SecretManagement का उपयोग करके, आप किसी भी पासवर्ड (क्रेडेंशियल्स) को गुप्त तिजोरी में सहेज सकते हैं और उन्हें किसी भी समय पुनः प्राप्त कर सकते हैं। आप लाइसेंस कुंजियाँ, पहुँच कुंजियाँ, और अन्य संवेदनशील जानकारी भी संग्रहीत कर सकते हैं (Hashtable
, Byte
, String
, SecureString
, और PSCredential
ऑब्जेक्ट प्रकार समर्थित हैं)।
इस लेख में, हम दिखाएंगे कि क्रेडेंशियल्स को संग्रहीत और पुनर्प्राप्त करने के लिए आपकी PowerShell स्क्रिप्ट में SecretManagement मॉड्यूल का उपयोग कैसे करें, साथ ही साथ KeePass एकीकरण का एक उदाहरण भी।
सामग्री:
- गुप्त प्रबंधन मॉड्यूल की स्थापना
- पावरशेल के माध्यम से एक पासवर्ड स्टोर (सीक्रेटस्टोर वॉल्ट) बनाएं
- गुप्त प्रबंधन मॉड्यूल का उपयोग करके सहेजे गए क्रेडेंशियल प्रबंधित करना
- पावरशेल स्क्रिप्ट में गुप्त वॉल्ट से सहेजे गए पासवर्ड का उपयोग करना
- पावरशेल के साथ कीपास पासवर्ड और रहस्यों को प्रबंधित करना
गुप्त प्रबंधन मॉड्यूल की स्थापना
SecretManagement मॉड्यूल के लिए Windows PowerShell संस्करण 5.1 या PowerShell Core 6.x, 7.x की आवश्यकता होती है।
NuGet पैकेज मैनेजर का उपयोग करके SecretManagement को स्थापित करने के लिए, निम्न कमांड चलाएँ:
Install-Module -Name Microsoft.PowerShell.SecretManagement
डिफ़ॉल्ट SecretStore स्थापित करने के लिए Microsoft द्वारा ऑफ़र किया गया वॉल्ट, निम्न कमांड चलाएँ:
Install-Module -Name Microsoft.PowerShell.SecretStore
मॉड्यूल में उपलब्ध cmdlets की सूची प्रदर्शित करने के लिए, इन आदेशों का उपयोग करें:
Get-Command -Module Microsoft.PowerShell.SecretManagement
Get-Command -Module Microsoft.PowerShell.SecretStore
पावरशेल के माध्यम से एक पासवर्ड स्टोर (SecretStore Vault) बनाएं
सबसे पहले, एक स्थानीय गुप्त तिजोरी बनाएं। मैं इसे MyDomainPassdb नाम दूंगा और इसे एक डिफ़ॉल्ट पासवर्ड स्टोर बनाएं।
Register-SecretVault -Name MyDomainPassdb -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault
Set-ExecutionPolicy -Scope Process Unrestricted
आप स्थानीय और दूरस्थ पासवर्ड वॉल्ट दोनों बना और उपयोग कर सकते हैं।
नीचे दिया गया कमांड वर्तमान उपयोगकर्ता के लिए पंजीकृत पासवर्ड वाल्ट की सूची प्रदर्शित करता है:
Get-SecretVault
अपना सीक्रेटस्टोर वॉल्ट एक्सेस करने के लिए एक मास्टर पासवर्ड बनाएं:
Get-SecretStoreConfiguration
डिफ़ॉल्ट रूप से, निम्न सेटिंग्स निर्धारित करती हैं कि पासवर्ड स्टोर कौन और कैसे एक्सेस कर सकता है:
- दायरा -
CurrentUser
(केवल वर्तमान उपयोगकर्ता ही सीक्रेटस्टोर तक पहुंच सकता है) - प्रमाणीकरण -
Password
(मास्टर पासवर्ड का उपयोग करके वॉल्ट एक्सेस करें) - पासवर्ड टाइमआउट -
900
- सत्र की अवधि (सेकंड में) जिसके दौरान आपको अपना मास्टर पासवर्ड फिर से दर्ज करने की आवश्यकता नहीं है, आप सत्र की लंबाई बढ़ा सकते हैं:Set-SecretStoreConfiguration -PasswordTimeout 1200
- बातचीत -
Prompt
(क्या परिवर्तन करते समय मास्टर पासवर्ड दर्ज करना है)
गुप्त तिजोरी (अनुशंसित नहीं) तक पहुँचने के लिए मास्टर पासवर्ड के अनुरोध को अक्षम करने के लिए,
Authentication = None
सेट करें :
Set-SecretStoreConfiguration -Authentication None
मास्टर पासवर्ड बदलने के लिए, Set-SecretStorePassword
. का उपयोग करें सीएमडीलेट।
%LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement
।
दुर्भाग्य से, आप प्रबंधित सेवा खातों (MSA/gMSA) के लिए गुप्त प्रबंधन मॉड्यूल का उपयोग नहीं कर सकते क्योंकि उनके लिए कोई प्रोफ़ाइल नहीं बनाई गई है।
गुप्त प्रबंधन मॉड्यूल का उपयोग करके सहेजे गए क्रेडेंशियल प्रबंधित करना
Set-Secret
cmdlet का उपयोग पासवर्ड वॉल्ट में SecureString प्रकार का एक रहस्य जोड़ने के लिए किया जाता है। तिजोरी का नाम और प्रवेश नाम निर्दिष्ट करें:
Set-Secret -Vault MyDomainPassdb -Name user1
पासवर्ड (गुप्त) दर्ज करें जिसे आप स्टोर में सहेजना चाहते हैं।
या, आप एक संरक्षित मान को निम्नानुसार सहेज सकते हैं (उदा., एक GitHub कुंजी):Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'
आप गुप्त तिजोरी में प्रविष्टियों की सूची प्रदर्शित कर सकते हैं:
Get-SecretInfo
PowerShell 7.x में, आप –AsPlainText का उपयोग करके पासवर्ड वॉल्ट से एक सुरक्षित मान को सादे पाठ के रूप में प्रदर्शित कर सकते हैं विकल्प (यदि आवश्यक हो तो अपने पावरशेल संस्करण को अपडेट करें):
Get-Secret -Vault MyDomainPassdb -Name user1| ConvertFrom-SecureString –AsPlainText
ज्यादातर मामलों में, आपको केवल विंडोज़ नेटवर्क में काम करते समय पासवर्ड सहेजने के बजाय उपयोगकर्ता नाम और पासवर्ड दोनों को सहेजना होगा। इस मामले में, क्रेडेंशियल को PSC क्रेडेंशियल . के रूप में सहेजें वस्तु। आप सहेजी गई प्रविष्टि के विवरण के साथ मेटाडेटा भी जोड़ सकते हैं।
Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD enterprise admin woshub.com"}
यदि आप गेट-क्रेडेंशियल विंडो में खाता नाम दर्ज नहीं करना चाहते हैं, तो आप इसे इस तरह निर्दिष्ट कर सकते हैं:
Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshub\adm_maxbak)
यहां बताया गया है कि आप कैसे सहेजे गए पासवर्ड और उनके विवरण की सूची प्रदर्शित कर सकते हैं:
Get-SecretInfo | Ft Name, Metadata
पावरशेल स्क्रिप्ट में गुप्त वॉल्ट से सहेजे गए पासवर्ड का उपयोग करना
अब आप अपने पावरशेल स्क्रिप्ट और कमांड में सहेजे गए पासवर्ड का उपयोग कर सकते हैं। उदाहरण के लिए, मेरा एक ग्राहक सुरक्षा और प्रशासनिक खाता सुरक्षा कारणों से प्रत्येक व्यवस्थापक और विभिन्न सेवाओं/कार्यों के लिए एक दर्जन खातों का उपयोग कर रहा है। समान पासवर्ड का उपयोग वर्जित है, पासवर्ड का नियमित रूप से ऑडिट किया जाता है। व्यवस्थापकों को लगातार अलग-अलग पासवर्ड दर्ज करने में परेशानी होती है।
SecretManagement मॉड्यूल का उपयोग करके, आप अपने पासवर्ड को स्थानीय तिजोरी में सुरक्षित रूप से संग्रहीत कर सकते हैं और यदि आवश्यक हो तो उन्हें प्राप्त कर सकते हैं।
उदाहरण के लिए, रिमोट कंप्यूटर से कनेक्ट करने और पावरशेल रिमोटिंग के माध्यम से कमांड चलाने के लिए, आप निम्न कोड का उपयोग कर सकते हैं:
Enter-PSSession -ComputerName mun-dc01 -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_maxbak)
उसी तरह, आप एक्सचेंज या माइक्रोसॉफ्ट 365 (एक्स-ऑफिस 365) को आसानी से कनेक्ट कर सकते हैं:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mun-exch1.woshub.com/PowerShell/ -Authentication Kerberos -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_ex_maxbak)
या अपने Azure AD टैनेंट को कनेक्ट करें:
Connect-AzureAD -Credential (Get-Secret -Vault MyDomainPassdb -Name azadm_ maxbak)
या केवल क्रेडेंशियल प्राप्त करें और उन्हें एक PowerShell चर में संग्रहीत करें:
$Cred = Get-Secret -Vault MyDomainPassdb user1
पावरशेल के साथ KeePass पासवर्ड और रहस्यों को प्रबंधित करना
आप अन्य लोकप्रिय पासवर्ड वॉल्ट तक पहुंचने के लिए सीक्रेट मैनेजमेंट मॉड्यूल का उपयोग कर सकते हैं। आइए देखें कि सहेजे गए पासवर्ड को कीपास . में कैसे एक्सेस करें फ़ाइल (*.kdbx).
सबसे पहले, KeePass के साथ बातचीत करने के लिए SecretManagement मॉड्यूल स्थापित करें:
Install-Module -Name SecretManagement.KeePass
फिर अपने उपयोगकर्ता प्रोफ़ाइल में स्थित KeePass वॉल्ट फ़ाइल को पंजीकृत करें:
Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:\Users\maxbak\Documents\personal_creds.kdbx"
UseMasterPassword = $true
}
KeePass फ़ाइल तक पहुँच की जाँच करने के लिए, कमांड चलाएँ:
Test-SecretVault -Name KeePassDB
कीपास वॉल्ट तक पहुंचने के लिए मास्टर पासवर्ड दर्ज करें। यदि आपने पासवर्ड सही ढंग से दर्ज किया है, तो कमांड सत्य returns लौटाता है ।
फिर KeePass डेटाबेस में सहेजे गए पासवर्ड की सूची प्रदर्शित करें:
Get-SecretInfo -Vault KeePassDB
KeePass में एक नया रहस्य सहेजने के लिए:
Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)
इसी तरह, आप किसी अन्य लोकप्रिय पासवर्ड स्टोर समाधान को कनेक्ट कर सकते हैं और इसे पावरशेल में उपयोग कर सकते हैं।