কম্পিউটার টিউটোরিয়াল

পাওয়ারশেল Just Enough Administration (JEA) ব্যবহার করে নন-অ্যাডমিন ব্যবহারকারীদের বিশেষাধিকার দান করা

Just Enough Administration (JEA) ফিচারটি পাওয়ারশেল ভার্সন ৫.০ থেকে উপলব্ধ এবং এটি পাওয়ারশেল দিয়ে যেন যেন ম্যানেজ করা যায় তার জন্য প্রশাসনিক বিশেষাধিকার ডেলিগেট করার অনুমতি দেয়। পাওয়ারশেল JEA-এর মূল উদ্দেশ্য হলো বিশেষাধিকার সীমাবদ্ধ করা। JEA নন-অ্যাডমিন ব্যবহারকারীদের নির্দিষ্ট প্রশাসনিক কাজগুলো সম্পাদনের অনুমতি দেয় সার্ভার বা সার্ভিস অ্যাডমিনিস্ট্রেটর অধিকার (AD, Exchange, SharePoint ইত্যাদি) দিয়ে না। JEA ব্যবহার করে আপনি সেট করতে পারেন কোন ব্যবহারকারীরা কোন সিএমডলেট, ফাংশন বা পাওয়ারশেল স্ক্রিপ্ট অ্যাডমিন বিশেষাধিকারের সাথে চালাতে পারবে এবং সকল অ্যাকশন লগ হবে (পাওয়ারশেল কমান্ড ইতিহাসের মতো)।

পাওয়ারশেল Just Enough Administration কীভাবে বাস্তবায়ন করবেন?

একজন অ্যাডমিনিস্ট্রেটর একটি সার্ভারে পাওয়ারশেল সেশন কনফিগারেশন ফাইল তৈরি করেন যাতে যেসব কমান্ড একটি ব্যবহারকারী চালাতে পারবে সেগুলো থাকে। ফাইলগুলো বেস করে একটি JEA এন্ডপয়েন্ট তৈরি হয় যাতে ব্যবহারকারী সংযোগ করে এবং তার উপলব্ধ সমস্ত কমান্ড বা প্রোগ্রাম এক্সিকিউট করতে পারে। এখানে আমরা একটি উদাহরণ দেখাবো কীভাবে নন-অ্যাডমিন ব্যবহারকারীদের ডোমেন কন্ট্রোলার রিবুট করতে, DNS এবং ADDS সার্ভিস রিস্টার্ট করতে পারিমিশন দিতে হয়।

এই ক্ষেত্রে, আপনাকে ব্যবহারকারীদের জন্য ডোমেন কন্ট্রোলারে RDP অ্যাক্সেস দিতে হবে না, AD-এ প্রশাসনিক বিশেষাধিকার ডেলিগেট করতে হবে না, উইন্ডোজ সার্ভিসে অধিকার দিতে হবে না, বা সার্ভার রিস্টার্টের অধিকার দিতে হবে না। সকল প্রয়োজনীয় সীমাবদ্ধতা Just Enough Administration কনফিগারেশনে সেট করা হয়।

প্রথমে, আপনার ডোমেন কন্ট্রোলারে একটি পাওয়ারশেল সেশন কনফিগারেশন ফাইল (*.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 অপশনটি কমান্ডগুলো ভার্চুয়াল অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট (লোকাল Administrator বা Domain Administrator গ্রুপের সদস্য) দিয়ে চালাতে দেয়: RunAsVirtualAccount = $true

নেটওয়ার্ক রিসোর্স অ্যাক্সেস করার জন্য গ্রুপ ম্যানেজড সার্ভিস অ্যাকাউন্ট (gMSA) ব্যবহার করতে পারেন: GroupManagedServiceAccount = 'woshub\gMSAJEAUser'

RoleDefinitions ডিরেক্টিভে, 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 ব্যবহারকারীদের ডোমেন কন্ট্রোলার রিস্টার্ট করতে দেয় shutdown কমান্ড বা Restart-Computer সিএমডলেট ব্যবহার করে, এবং Restart-Service সিএমডলেট ব্যবহার করে DNSServer এবং Active Directory Domain Services রিস্টার্ট করতে দেয়।

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

আমাদের নতুন Just-Enough-Administration (JEA) কনফিগারেশন কীভাবে কাজ করে তা দেখি। কনফিগারেশন ফাইলে নির্দিষ্ট করা নিরাপত্তা গ্রুপের একজন ব্যবহারকারী অ্যাকাউন্ট দিয়ে তৈরি করা JEA এন্ডপয়েন্টে সংযোগ করুন। পাওয়ারশেল রিমোটিং ব্যবহার করে ডোমেন কন্ট্রোলারে সংযোগ করুন (আপনাকে অবশ্যই JEA এন্ডপয়েন্টের নাম নির্দিষ্ট করতে হবে):

Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk

আপনার পাওয়ারশেল সেশনে উপলব্ধ সিএমডলেটের তালিকা দেখুন:

Get-Command

দেখতে পাবেন, অল্প সংখ্যক কমান্ড উপলব্ধ, যার মধ্যে Restart-Service এবং Restart-Computer রয়েছে। একজন ব্যবহারকারী শুধু যা করার অনুমতি আছে সেটিই করতে পারবে।

DNS সার্ভিস রিস্টার্ট করার চেষ্টা করুন:

Restart-Computer dns

সার্ভিসটি সফলভাবে রিস্টার্ট হয়েছে (কমান্ডটি ডোমেন অ্যাডমিন পারমিশন সহ একটি প্রিভিলেজড ব্যবহারকারী হিসেবে চালানো হয়েছে)।

যদি আপনি JEA কনফিগারেশন ফাইলে বর্ণনা করা ছাড়া অন্য যেকোনো সার্ভিস রিস্টার্ট করার চেষ্টা করেন, তবে নিচের ত্রুটি বার্তা দেখায়:

Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException

JEA পাওয়ারশেল সেশনে ব্যবহারকারীর সকল অ্যাকশনের ইতিহাস C:\PS\JEA_logs ফোল্ডারের ফাইলগুলিতে লগ হয়।

সুতরাং, JEA আপনাকে ব্যবহারকারীদের নির্দিষ্ট পাওয়ারশেল সিএমডলেট, স্ক্রিপ্ট বা প্রোগ্রাম অ্যাডমিনিস্ট্রেটর হিসেবে চালানোর granulary অ্যাক্সেস দান করার অনুমতি দেয়।

  1. নন-অ্যাডমিন ব্যবহারকারীদের SCManager-এ রিমোট এক্সেস দেওয়া

  2. অনিশ্চিত নেটওয়ার্কে বড় ফাইল কপি করার জন্য BITS এবং পাওয়ারশেল ব্যবহার

  3. পাওয়ারশেল দিয়ে BIOS সেটিংস দেখা ও পরিবর্তন করা

  4. উইন্ডোজ পাওয়ারশেল দিয়ে লোকাল ইউজার ও গ্রুপ ম্যানেজ করার পদ্ধতি