মাইক্রোসফট সম্প্রতি একটি খুব দরকারী সিক্রেট ম্যানেজমেন্ট প্রকাশ করেছে পাওয়ারশেল মডিউল। আপনি আপনার PowerShell স্ক্রিপ্টগুলিতে সংরক্ষিত পাসওয়ার্ড (গোপন) নিরাপদে সংরক্ষণ করতে এবং ব্যবহার করতে এটি ব্যবহার করতে পারেন। মডিউলটি দুটি উপাদান নিয়ে গঠিত:একটিসিক্রেটস্টোর ভল্ট (একটি ডিফল্ট পাসওয়ার্ড স্টোর), এবং একটি সিক্রেট ম্যানেজমেন্ট (বিভিন্ন পাসওয়ার্ড ভল্ট অ্যাক্সেস করতে ইঞ্জিন)। বিল্ট-ইন সিক্রেটস্টোর ভল্ট এবং তৃতীয় পক্ষের গোপন ভল্ট উভয়ই (যেমন KeePass, LastPass, HashiCorp Vault, Azure Key Vault, Bitwarden, Windows Credential Manager, ইত্যাদি) সমর্থিত। সিক্রেট ম্যানেজমেন্ট ব্যবহার করে, আপনি গোপন ভল্টে যেকোন পাসওয়ার্ড (প্রমাণপত্র) সংরক্ষণ করতে পারেন এবং যেকোন সময় সেগুলি পুনরুদ্ধার করতে পারেন। এছাড়াও আপনি লাইসেন্স কী, অ্যাক্সেস কী এবং অন্যান্য সংবেদনশীল তথ্য সংরক্ষণ করতে পারেন (Hashtable
, Byte
, String
, SecureString
, এবং PSCredential
বস্তুর ধরন সমর্থিত)।
এই প্রবন্ধে, আমরা দেখাব কিভাবে আপনার PowerShell স্ক্রিপ্টে SecretManagement মডিউল ব্যবহার করে শংসাপত্রগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে হয়, সেইসাথে KeePass ইন্টিগ্রেশনের একটি উদাহরণ৷
বিষয়বস্তু:
- সিক্রেট ম্যানেজমেন্ট মডিউলের ইনস্টলেশন
- পাওয়ারশেলের মাধ্যমে একটি পাসওয়ার্ড স্টোর (সিক্রেটস্টোর ভল্ট) তৈরি করুন
- সিক্রেট ম্যানেজমেন্ট মডিউল ব্যবহার করে সংরক্ষিত শংসাপত্রগুলি পরিচালনা করা
- পাওয়ারশেল স্ক্রিপ্টে সিক্রেট ভল্ট থেকে সংরক্ষিত পাসওয়ার্ড ব্যবহার করা
- PowerShell দিয়ে KeePass পাসওয়ার্ড এবং গোপনীয়তা পরিচালনা করা
সিক্রেট ম্যানেজমেন্ট মডিউলের ইনস্টলেশন
সিক্রেট ম্যানেজমেন্ট মডিউলটির জন্য Windows PowerShell সংস্করণ 5.1 বা PowerShell Core 6.x, 7.x প্রয়োজন।
NuGet প্যাকেজ ম্যানেজার ব্যবহার করে SecretManagement ইনস্টল করতে, নিচের কমান্ডটি চালান:
Install-Module -Name Microsoft.PowerShell.SecretManagement
ডিফল্ট সিক্রেটস্টোর ইনস্টল করতে মাইক্রোসফ্ট দ্বারা দেওয়া ভল্ট, নিম্নলিখিত কমান্ডটি চালান:
Install-Module -Name Microsoft.PowerShell.SecretStore
মডিউলে উপলব্ধ cmdlet এর একটি তালিকা প্রদর্শন করতে, এই কমান্ডগুলি ব্যবহার করুন:
Get-Command -Module Microsoft.PowerShell.SecretManagement
Get-Command -Module Microsoft.PowerShell.SecretStore
পাওয়ারশেলের মাধ্যমে একটি পাসওয়ার্ড স্টোর (সিক্রেটস্টোর ভল্ট) তৈরি করুন
প্রথমত, একটি স্থানীয় গোপন ভল্ট তৈরি করুন। আমি এটির নাম দেব 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
ব্যবহার করুন cmdlet.
%LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement
.
দুর্ভাগ্যবশত, আপনি ম্যানেজড সার্ভিস অ্যাকাউন্টের (MSA/gMSA) জন্য সিক্রেট ম্যানেজমেন্ট মডিউল ব্যবহার করতে পারবেন না কারণ তাদের জন্য কোনো প্রোফাইল তৈরি করা হয়নি।
সিক্রেট ম্যানেজমেন্ট মডিউল ব্যবহার করে সংরক্ষিত শংসাপত্রগুলি পরিচালনা করা
Set-Secret
cmdlet ব্যবহার করা হয় পাসওয়ার্ড ভল্টে SecureString ধরনের একটি গোপন তথ্য যোগ করতে। ভল্টের নাম এবং প্রবেশের নাম উল্লেখ করুন:
Set-Secret -Vault MyDomainPassdb -Name user1
আপনি দোকানে যে পাসওয়ার্ড (গোপন) সংরক্ষণ করতে চান তা লিখুন৷
৷
অথবা, আপনি নিম্নলিখিত হিসাবে একটি সুরক্ষিত মান সংরক্ষণ করতে পারেন (যেমন, একটি গিটহাব কী):Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'
আপনি গোপন ভল্টে এন্ট্রিগুলির একটি তালিকা প্রদর্শন করতে পারেন:
Get-SecretInfo
PowerShell 7.x-এ, আপনি –AsPlainText ব্যবহার করে প্লেইন টেক্সট হিসাবে পাসওয়ার্ড ভল্ট থেকে একটি সুরক্ষিত মান প্রদর্শন করতে পারেন বিকল্প (প্রয়োজনে আপনার PowerShell সংস্করণ আপডেট করুন):
Get-Secret -Vault MyDomainPassdb -Name user1| ConvertFrom-SecureString –AsPlainText
বেশিরভাগ ক্ষেত্রে, আপনাকে শুধুমাত্র উইন্ডোজ নেটওয়ার্কে কাজ করার সময় একটি পাসওয়ার্ড সংরক্ষণ করার পরিবর্তে একটি ব্যবহারকারীর নাম এবং একটি পাসওয়ার্ড উভয়ই সংরক্ষণ করতে হবে। এই ক্ষেত্রে, একটি PSCredential হিসাবে শংসাপত্রগুলি সংরক্ষণ করুন৷ বস্তু আপনি সংরক্ষিত এন্ট্রির বিবরণের সাথে মেটাডেটাও যোগ করতে পারেন।
Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD enterprise admin woshub.com"}
আপনি যদি Get-Credential উইন্ডোতে একটি অ্যাকাউন্টের নাম লিখতে না চান, তাহলে আপনি এটি এভাবে উল্লেখ করতে পারেন:
Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshub\adm_maxbak)
এখানে আপনি কিভাবে সংরক্ষিত পাসওয়ার্ড এবং তাদের বিবরণের একটি তালিকা প্রদর্শন করতে পারেন:
Get-SecretInfo | Ft Name, Metadata
পাওয়ারশেল স্ক্রিপ্টে সিক্রেট ভল্ট থেকে সংরক্ষিত পাসওয়ার্ড ব্যবহার করা
এখন আপনি আপনার PowerShell স্ক্রিপ্ট এবং কমান্ডে সংরক্ষিত পাসওয়ার্ড ব্যবহার করতে পারেন। উদাহরণ স্বরূপ, আমার একজন গ্রাহক প্রতিটি প্রশাসকের জন্য এক ডজন অ্যাকাউন্ট এবং নিরাপত্তা এবং প্রশাসনিক অ্যাকাউন্ট সুরক্ষার কারণে বিভিন্ন পরিষেবা/কাজ ব্যবহার করছেন। একই পাসওয়ার্ড ব্যবহার করা নিষিদ্ধ, পাসওয়ার্ড নিয়মিত অডিট করা হয়। প্রশাসকদের ক্রমাগত বিভিন্ন পাসওয়ার্ড লিখতে ক্লান্তিকর মনে হয়৷
৷সিক্রেট ম্যানেজমেন্ট মডিউল ব্যবহার করে, আপনি নিরাপদে একটি স্থানীয় ভল্টে আপনার পাসওয়ার্ড সংরক্ষণ করতে পারেন এবং প্রয়োজনে সেগুলি পেতে পারেন৷
উদাহরণস্বরূপ, একটি দূরবর্তী কম্পিউটারের সাথে সংযোগ করতে এবং PowerShell রিমোটিং এর মাধ্যমে একটি কমান্ড চালাতে, আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:
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
PowerShell দিয়ে KeePass পাসওয়ার্ড এবং গোপনীয়তা পরিচালনা করা
আপনি অন্যান্য জনপ্রিয় পাসওয়ার্ড ভল্ট অ্যাক্সেস করতে সিক্রেট ম্যানেজমেন্ট মডিউল ব্যবহার করতে পারেন। চলুন দেখি কিভাবে একটি 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
KeePass ভল্ট অ্যাক্সেস করতে মাস্টার পাসওয়ার্ড লিখুন। আপনি পাসওয়ার্ডটি সঠিকভাবে প্রবেশ করালে, কমান্ডটি True ফেরত দেয় .
তারপর KeePass ডাটাবেসে সংরক্ষিত পাসওয়ার্ডের একটি তালিকা প্রদর্শন করুন:
Get-SecretInfo -Vault KeePassDB
KeePass-এ একটি নতুন গোপনীয়তা সংরক্ষণ করতে:
Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)
একইভাবে, আপনি অন্য যেকোনো জনপ্রিয় পাসওয়ার্ড স্টোর সমাধান সংযোগ করতে পারেন এবং PowerShell-এ ব্যবহার করতে পারেন।