اعتبارنامه‌ها در PowerShell: احراز هویت امن و بهترین شیوه‌ها

بسیاری از دستورات PowerShell از پارامتر -Credential پشتیبانی می‌کنند و این امکان را می‌دهند که فرمان‌ها با حساب کاربری جایگزین اجرا شوند. این قابلیت اصل «حداقل سطح دسترسی» را تقویت می‌کند: کارها را با کمترین سطح دسترسی انجام دهید و تنها در مواقع ضروری از اعتبارنامه‌های سطح بالاتر استفاده کنید. اعتبارنامه‌ها می‌توانند به‌صورت رشته یا شیء PSCredential ارائه شوند، که رمز عبور در آن‌ها به‌صورت امن ذخیره می‌شود. PowerShell v3 امکاناتی مانند پیام سفارشی در پنجره ورود اعتبارنامه اضافه کرده است. مدیران می‌توانند اعتبارنامه‌های قابل‌استفاده مجدد ایجاد کنند، آن‌ها را در جلسات مدیریت کنند و در اسکریپت‌ها به کار گیرند. هرچند روش‌هایی برای ذخیره اعتبارنامه وجود دارد، این کار ریسک امنیتی بالایی دارد و باید با احتیاط انجام شود.

PowerShell CredentialsGet-CredentialPSCredential ObjectSecureStringAuthentication Best Practices

~2 دقیقه مطالعه • بروزرسانی ۳۰ آذر ۱۴۰۴

1. درباره اعتبارنامه‌ها


پارامتر -Credential اجازه می‌دهد فرمان‌ها با حساب مشخص اجرا شوند. اعتبارنامه‌ها می‌توانند به‌صورت نام کاربری ساده (DOMAIN\User یا Computer\User) یا به‌صورت شیء PSCredential ارائه شوند. رمز عبور همیشه به‌صورت امن و ماسک‌شده وارد می‌شود.


2. ایجاد شیء اعتبارنامه


  • Get-Credential: پنجره‌ای برای ورود نام کاربری و رمز عبور باز می‌کند و شیء PSCredential می‌سازد.
  • PSCredential: نام کاربری و رمز عبور را به‌صورت امن در قالب SecureString ذخیره می‌کند.
  • GetNetworkCredential(): تنها در همان جلسه امکان بازیابی رمز عبور ساده را دارد.

3. استفاده از اعتبارنامه‌ها


  • اعتبارنامه برای همه کامپیوترهای هدف در یک فرمان چندگانه اعمال می‌شود.
  • می‌توان در پروفایل PowerShell اعتبارنامه‌های پرکاربرد را ذخیره کرد.
  • PSDriveهای Active Directory اعتبارنامه‌های استفاده‌شده هنگام اتصال را به ارث می‌برند.
  • بهتر است اعتبارنامه را قبل از استفاده ایجاد کنید، نه در همان خط فرمان.

4. روش‌های پیشرفته و پرخطر


  • بسته‌بندی اسکریپت‌ها: ابزارهایی مانند PrimalScript می‌توانند اعتبارنامه‌ها را رمزگذاری و در اسکریپت قرار دهند.
  • ذخیره شیء اعتبارنامه: با ConvertFrom-SecureString می‌توان رمز عبور را ذخیره کرد، اما رمزگذاری به ماشین وابسته است.
  • ایجاد PSCredential بدون GUI: با Read-Host می‌توان نام کاربری و رمز عبور را در محیط کنسول وارد کرد.

این روش‌ها ریسک دارند؛ در صورت مدیریت نادرست، رمز عبور ممکن است افشا شود.


5. پشتیبانی از اعتبارنامه در اسکریپت‌ها


اسکریپت‌ها می‌توانند پارامتر -Credential داشته باشند. اگر شیء PSCredential داده شود، مستقیم استفاده می‌شود؛ اگر رشته داده شود، Get-Credential فراخوانی می‌شود. این کار انعطاف‌پذیری در احراز هویت ایجاد می‌کند.


نتیجه‌گیری


اعتبارنامه‌ها در PowerShell امکان احراز هویت امن برای وظایف مدیریتی را فراهم می‌کنند. با استفاده از شیء PSCredential، SecureString و رعایت بهترین شیوه‌ها، مدیران می‌توانند اصل حداقل سطح دسترسی را اجرا کرده و از روش‌های ناامن ذخیره یا انتقال رمز عبور اجتناب کنند.


نوشته و پژوهش شده توسط دکتر شاهین صیامی