راستش را بخواهید، یکی از پراصطکاکترین تیکتهایی که من طی چند سال کار در هلپ دسک دیدهام همیشه همین بوده: «رمز ادمین محلی این سیستم چیه؟» از زمانی که مایکروسافت در سال ۲۰۲۳ نسخهٔ داخلی Windows LAPS را بهعنوان جایگزین Legacy LAPS معرفی کرد، دیگر عملاً هیچ سازمانی بهانهای برای نگهداشتن رمز عبور یکسان مدیر محلی روی دهها یا صدها ایستگاه کاری ندارد.
با این حال، در عمل بسیاری از تیمهای هلپ دسک هنوز بین نسخهٔ قدیمی و جدید سردرگماند. پالیسیها اعمال نمیشوند، رمز در اکتیو دایرکتوری یا Entra ID ذخیره نمیشود، و هنگام بازیابی، تکنسین با خطاهای غیرشفاف روبهرو میشود. این راهنما با رویکردی کاملاً عملی نوشته شده تا بتوانید از صفر تا صد Windows LAPS را مستقر، نگهداری و در سناریوهای رایج عیبیابی کنید.
Windows LAPS چیست و چرا اصلاً مهم است؟
Windows LAPS (مخفف Local Administrator Password Solution) یک سرویس داخلی سیستمعامل ویندوز است که رمز عبور حساب مدیر محلی را بهطور خودکار در یک بازهٔ زمانی مشخص چرخش (Rotate) میدهد و نسخهٔ رمزنگاریشدهٔ آن را یا در شیء کامپیوتر Active Directory و یا در Microsoft Entra ID ذخیره میکند. برخلاف Legacy LAPS که نیاز به نصب MSI و CSE جداگانه داشت، Windows LAPS بهطور پیشفرض در موارد زیر موجود است:
- ویندوز ۱۱ نسخهٔ 22H2 و جدیدتر (با آپدیت امنیتی آوریل ۲۰۲۳ یا بالاتر)
- ویندوز ۱۰ نسخهٔ 22H2 (پس از آپدیت KB5025221)
- Windows Server 2019 / 2022 / 2025
یعنی در ۲۰۲۶ دیگر نیازی به نصب عامل جداگانه نیست؛ فقط کافیست قابلیت موجود را فعال و درست پیکربندی کنید.
تفاوتهای کلیدی Legacy LAPS و Windows LAPS
- معماری: Legacy LAPS یک CSE (Client-Side Extension) خارجی بود؛ Windows LAPS بهصورت native داخل lsass و laps.exe پیادهسازی شده است.
- مقصد ذخیره: Legacy LAPS فقط AD را پشتیبانی میکرد. Windows LAPS علاوه بر AD، از Microsoft Entra ID هم پشتیبانی میکند.
- رمزنگاری: Windows LAPS میتواند رمز عبور را پیش از ذخیره در AD رمزنگاری کند (DPAPI-NG) تا فقط گروههای مجاز بتوانند آن را بازیابی کنند.
- تاریخچهٔ رمز: Windows LAPS میتواند تاریخچهٔ رمزهای قبلی را نیز نگه دارد (تا حداکثر ۱۲ مورد).
- پشتیبانی از DSRM: روی Domain Controller میتوان رمز Directory Services Restore Mode را نیز مدیریت کرد.
یک هشدار که بارها سرم بلا آورده: اگر هم Legacy LAPS و هم Windows LAPS همزمان روی یک ماشین فعال باشند، Legacy LAPS تمام عملیات را کنترل میکند و Windows LAPS در حالت «Emulation Disabled» قرار میگیرد. پیش از مهاجرت، حتماً MSI نسخهٔ قدیمی را حذف کنید — این یک قدم را اگر جا بیندازید، ساعتها وقتتان را خواهد گرفت.
پیشنیازها و چکلیست قبل از استقرار
قبل از هر کاری، این چکلیست را روی یک لب یا زیرمجموعهٔ کوچکی از کاربران اجرا کنید. بهتجربه میگویم: رولاوت مستقیم روی کل OU، هیچوقت ایدهٔ خوبی نیست.
- نسخهٔ سیستمعامل تمام کلاینتها را بررسی کنید. با دستور زیر میتوانید نسخهٔ دقیق را بگیرید:
Get-ComputerInfo | Select-Object WindowsProductName, OsVersion, OsBuildNumber
- ماژول پاورشل LAPS را تست کنید:
Import-Module LAPS
Get-Command -Module LAPS
اگر خروجی شامل دستوراتی مثل Get-LapsADPassword، Set-LapsADComputerSelfPermission و Update-LapsADSchema بود، خب خیالتان راحت — ماژول در دسترس است.
- سطح عملکرد دامنه (Domain Functional Level) را تأیید کنید. Windows LAPS نیازمند حداقل سطح ۲۰۱۶ است.
- اگر از ADMX مدیریتشده استفاده میکنید، فایلهای
LAPS.admxوLAPS.admlرا در Central Store قرار دهید (\\domain\SYSVOL\domain\Policies\PolicyDefinitions).
استقرار Windows LAPS در Active Directory
گام ۱: گسترش اسکیما
Windows LAPS چهار attribute جدید به شیء کامپیوتر اضافه میکند: msLAPS-Password، msLAPS-PasswordExpirationTime، msLAPS-EncryptedPassword و msLAPS-EncryptedPasswordHistory. با حساب عضو Schema Admins این را اجرا کنید:
Import-Module LAPS
Update-LapsADSchema -Verbose
پس از اجرا، با این دستور از گسترش موفق مطمئن شوید:
Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext `
-LDAPFilter "(name=ms-LAPS-*)" | Select-Object Name
گام ۲: اعطای مجوز خودنویسی به کامپیوترها
هر کامپیوتر باید بتواند attribute پسورد خودش را بهروزرسانی کند (منطقی هم هست — این رمز مختص همان ماشین است). روی OU مورد نظر اجرا کنید:
Set-LapsADComputerSelfPermission -Identity "OU=Workstations,DC=corp,DC=local"
گام ۳: کنترل دسترسی خواندن رمز
بهطور پیشفرض، فقط ادمینهای دامنه میتوانند رمز را بخوانند. برای اعطا یا سلب دسترسی به گروههای خاص هلپ دسک:
# اعطای مجوز خواندن رمز رمزنگاریشده به گروه هلپ دسک
Set-LapsADReadPasswordPermission `
-Identity "OU=Workstations,DC=corp,DC=local" `
-AllowedPrincipals "CORP\Helpdesk-Tier2"
# بازبینی مجوزهای فعلی
Find-LapsADExtendedRights -Identity "OU=Workstations,DC=corp,DC=local"
گام ۴: فعالسازی رمزنگاری رمز (اکیداً توصیهشده)
رمزنگاری فقط وقتی کار میکند که Domain Functional Level حداقل 2016 باشد. در Group Policy مسیر زیر را دنبال کنید:
Computer Configuration → Policies → Administrative Templates → System → LAPS
- Configure password backup directory: Active Directory
- Enable password encryption: Enabled
- Configure authorized password decryptors: CORP\Helpdesk-Tier2
- Password Complexity: Large letters + small letters + numbers + specials
- Password Length: ۲۰ (حداقل توصیهشده برای ۲۰۲۶)
- Password Age (Days): ۳۰
- Post-authentication actions: Reset the password and logoff the managed account
- Post-authentication reset delay: ۸ ساعت
استقرار Windows LAPS در Microsoft Entra ID
برای دستگاههای Entra-joined یا hybrid که توسط Intune مدیریت میشوند، روند کمی متفاوت است (ولی خوشبختانه شهودیتر).
گام ۱: فعالسازی در Entra ID
- وارد Microsoft Entra admin center شوید.
- مسیر Devices → Device settings را باز کنید.
- گزینهٔ Enable Microsoft Entra Local Administrator Password Solution (LAPS) را روی Yes قرار دهید.
گام ۲: پیکربندی سیاست در Intune
- در Intune admin center به Endpoint security → Account protection بروید.
- روی Create Policy کلیک کنید و Platform: Windows 10 and later، Profile: Local admin password solution (Windows LAPS) را انتخاب کنید.
- تنظیمات زیر را اعمال کنید:
- Backup Directory: Backup the password to Azure AD only
- Password Age Days: ۳۰
- Administrator Account Name: خالی بگذارید تا از حساب built-in با RID 500 استفاده شود
- Password Complexity: Large letters + small letters + numbers + specials
- Password Length: ۲۰
- Post Authentication Actions: Reset the password and logoff the managed account
گام ۳: اعطای نقش بازیابی رمز در Entra
برای آنکه تکنسین بتواند رمز را در پورتال Entra مشاهده کند، نقش Cloud Device Administrator یا مجوز سفارشی microsoft.directory/deviceLocalCredentials/password/read لازم است. اگر کسی فقط میخواهد نام حساب و زمان چرخش را ببیند (بدون خود رمز)، مجوز standard کافیست.
بازیابی و چرخش رمز در عمل
خواندن رمز از Active Directory
# خواندن رمز رمزنگارینشده
Get-LapsADPassword -Identity "WS-1024" -AsPlainText
# خواندن رمز رمزنگاریشده با یوزر مجاز
Get-LapsADPassword -Identity "WS-1024" -AsPlainText -DecryptionCredential (Get-Credential)
# مشاهده تاریخچه رمزها
Get-LapsADPassword -Identity "WS-1024" -IncludeHistory -AsPlainText
خواندن رمز از Entra ID
# نیاز به Microsoft Graph PowerShell
Connect-MgGraph -Scopes "DeviceLocalCredential.Read.All"
Get-LapsAADPassword -DeviceIds "WS-1024" -IncludePasswords -AsPlainText
چرخش اجباری رمز
اگر تکنسین یا پیمانکاری از رمز استفاده کرد، باید بلافاصله چرخش دهید. بههیچوجه منتظر دورهٔ پیشفرض ۳۰ روزه نمانید:
# روی خود ماشین
Reset-LapsPassword
# از راه دور از طریق AD
Invoke-Command -ComputerName WS-1024 -ScriptBlock { Reset-LapsPassword }
رایجترین خطاها و راهحلها
خطای 0x80070005 یا Access Denied هنگام ذخیره رمز
کامپیوتر مجوز نوشتن attribute خودش را ندارد. روی OU مربوطه Set-LapsADComputerSelfPermission را دوباره اجرا کنید و سپس روی کلاینت:
Invoke-LapsPolicyProcessing
Get-LapsDiagnostics -OutputFolder C:\Temp\LAPSDiag
رمز در AD بهروزرسانی نمیشود، اما Event Log خطا ندارد
در ۹۰٪ موارد، دلیلش این است که Legacy LAPS هنوز نصب است و Windows LAPS در حالت emulation disabled قرار گرفته. بررسی کنید:
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\LAPS\State"
اگر BackupDirectory مقدار ۰ داشت، یا Legacy CSE را حذف کنید یا در Event Viewer مسیر Applications and Services Logs → Microsoft → Windows → LAPS → Operational را بررسی کنید. Event ID 10033 نشانهای واضح از تداخل است.
خطای 0x80090345 (NTE_ENCRYPTION_FAILURE)
سطح عملکرد دامنه کمتر از 2016 است یا KDC مناسبی در دسترس نیست. با این دستور از DC تأیید بگیرید:
Get-ADDomain | Select-Object DomainMode
اگر کمتر از Windows2016Domain بود، ابتدا ارتقا دهید. بله، میدانم که ارتقای DFL کار تککلیکی نیست، اما جایگزینی هم ندارد.
رمز در Entra ذخیره نمیشود، اما سیاست Intune وضعیت Applied دارد
در خود ماشین اجرا کنید:
Get-LapsDiagnostics -OutputFolder C:\Temp\LAPSDiag
# سپس پوشه را باز کنید و فایل LAPS.log را جستوجو کنید
سه علت شایع وجود دارد:
- دستگاه هنوز Entra registered است، نه Entra joined. فقط joined پشتیبانی میشود.
- قابلیت LAPS در tenant غیرفعال است (گام ۱ بخش Entra را انجام دهید).
- زمان سیستم بیش از ۵ دقیقه با زمان Entra اختلاف دارد؛ توکن Kerberos شکست میخورد.
Event ID 10013 و 10014 در Operational Log
این رویدادها معمولاً مربوط به شکست در رمزنگاریاند. بررسی کنید که کاربران یا گروههای مجاز در Group Policy Configure authorized password decryptors معتبر باشند. اگر گروهی که نامش را وارد کردید پاک شده باشد، عملیات بازیابی هم شکست میخورد — یک باگ ساکت که تشخیصش طول میکشد.
پس از چرخش، ورود با رمز جدید شکست میخورد
مطمئن شوید ماشین با DC ارتباط دارد و چرخش واقعاً اعمال شده است:
# آخرین زمان چرخش موفق
Get-LapsADPassword -Identity "WS-1024" | Select-Object PasswordUpdateTime, ExpirationTime
در صورت مغایرت، روی ماشین هدف Invoke-LapsPolicyProcessing را اجرا کرده و دوباره رمز را بخوانید.
نظارت و ممیزی Windows LAPS
رویدادهای کلیدی Event Viewer
مسیر: Applications and Services Logs → Microsoft → Windows → LAPS → Operational
- 10003: چرخش موفق رمز.
- 10004: چرخش رمز شکست خورد (علت را از متن پیام بخوانید).
- 10013: شکست در پشتیبانگیری رمز.
- 10017: Windows LAPS در حالت emulation disabled به دلیل وجود Legacy LAPS.
- 10029: post-authentication reset پس از لاگاین تکنسین.
گزارش تجمیعی با پاورشل
اسکریپت زیر فهرستی از ماشینهایی را تولید میکند که بیش از ۶۰ روز است رمزشان چرخش نکرده. اینها معمولاً ماشینهایی هستند که LAPS رویشان بهنحوی شکسته — در تجربهٔ من، اغلب همان لپتاپهایی که مدتهاست به دامنه وصل نشدهاند:
$threshold = (Get-Date).AddDays(-60).ToFileTime()
Get-ADComputer -Filter * -Properties msLAPS-PasswordExpirationTime |
Where-Object { $_.'msLAPS-PasswordExpirationTime' -and
[int64]$_.'msLAPS-PasswordExpirationTime' -lt $threshold } |
Select-Object Name, @{n='LastExpiry';e={[DateTime]::FromFileTime($_.'msLAPS-PasswordExpirationTime')}} |
Export-Csv -Path C:\Reports\laps-stale.csv -NoTypeInformation
بهترین شیوههای عملیاتی در ۲۰۲۶
- همیشه رمزنگاری AD را فعال کنید؛ ذخیرهٔ plain-text در attribute یک ضعف امنیتی جدی است و هیچ توجیهی ندارد.
- چرخش ۳۰ روزه را بهعنوان استاندارد قرار دهید؛ برای ماشینهای حساس (DC و سرورهای کاربردی) به ۷ روز کاهش دهید.
- گزینهٔ Reset after grace period را فعال کنید تا پس از هر بار استفادهٔ تکنسین، رمز خودکار عوض شود.
- حسابهای مدیر محلی غیرضروری را با یک سیاست جداگانه غیرفعال کنید؛ LAPS فقط یک حساب را مدیریت میکند.
- ممیزی دسترسی به
msLAPS-EncryptedPasswordرا در AD Auditing فعال کنید تا هر بار خواندن رمز ثبت شود. - برای مدیران Tier 0، حسابهای Just-In-Time و PAM را جایگزین خواندن مستقیم رمز کنید.
سوالات متداول (FAQ)
آیا Windows LAPS رایگان است؟
بله. بخشی از سیستمعامل ویندوز است و هزینهٔ لایسنس اضافه ندارد. فقط برای ذخیره در Microsoft Entra ID نیاز به لایسنس Microsoft Entra ID P1 یا P2 دارید.
آیا میتوان هم در AD و هم در Entra ID رمز را ذخیره کرد؟
خیر. در هر لحظه فقط یک Backup Directory فعال است. اگر هر دو سیاست اعمال شود، آخرین سیاستی که Process شود اولویت دارد و میتواند باعث تداخل شود. برای محیطهای hybrid عموماً AD را انتخاب کنید.
اگر کامپیوتر از دامنه خارج شود چه میشود؟
چرخش متوقف میشود، چون ماشین دیگر نمیتواند attribute خود را بهروز کند. آخرین رمز معتبر تا زمانی که ماشین به دامنه بازگردد یا دستی ریست شود، روی سیستم باقی میماند.
تفاوت Windows LAPS با Azure Key Vault چیست؟
Windows LAPS برای حسابهای مدیر محلی طراحی شده و رایگان است. Azure Key Vault برای ذخیرهٔ سِکرتهای سرویس و کلیدهای API است و مدل قیمتگذاری جداگانه دارد. این دو مکملاند، نه جایگزین.
آیا روی Domain Controller هم کار میکند؟
بله. از ویندوز سرور ۲۰۲۵ (و با آپدیت آوریل ۲۰۲۴ روی ۲۰۱۹/۲۰۲۲)، Windows LAPS میتواند رمز DSRM را مدیریت کند. تنظیمات آن در Group Policy زیر DSRM account management قرار دارد.
در صورت شکست Intune، چگونه رمز را از راه دور بازیابی کنم؟
اگر ماشین Entra joined است و سیاست اعمال شده، مستقل از وضعیت Intune، Entra ID رمز را دارد. از طریق Microsoft Entra admin center → Devices → نام دستگاه → Local administrator password recovery آن را ببینید. اگر هنوز ذخیره نشده، از طریق کنسول یا BitLocker recovery key به ماشین دسترسی دستی بگیرید.
جمعبندی
Windows LAPS دیگر یک افزونهٔ اختیاری نیست — استاندارد پایهٔ هر سازمانی با بیش از ۱۰ ایستگاه کاری است. اگر این راهنما را گامبهگام دنبال کرده باشید، اسکیمای AD شما بهروز است، کلاینتها رمز رمزنگاریشده را در دایرکتوری ذخیره میکنند، و هلپ دسک میتواند بدون رفتوآمد فیزیکی یا ریست دستی، رمز مدیر محلی را بازیابی کند.
توصیهٔ پایانی (و از دردِ تجربه میگویم): پیش از رولاوت به کل سازمان، حتماً روی یک OU آزمایشی با ۲۰ تا ۵۰ ماشین کامل تست کنید تا خطاهای رمزنگاری و تداخل با ابزارهای EDR را زودتر کشف کنید. چند روز وقت گذاشتن در فاز پایلوت، هفتهها وقتتان را در فاز تولید ذخیره میکند.