SIDs یک شناسه امنیتی تشکیل شده از یک مقدار Value با طول یا اندازه متغیر Variable Length که برای شناسایی منحصر بفرد Uniquely Identify یک اصل امنیت Security Principal یا یک گروه امنیت Security Group مورد استفاده قرار میگیرد.
هر اکانت Account یا گروه Group دارای یک SIDs منحصر بفرد است که توسط یک مرجع، مانند یک دومین کنترولر یا یک دیتابیس امنیتی صادر میگردد. زمانی که اکانت یا گروه ساخته Create میشود، سیستم فورا یک SIDs منحصر بفرد ایجاد کرده و به این اکانت یا گروه تخصیص میدهد.
توجه کنید که زمانی که یک SIDs برای شناسایی یک اکانت یا گروه ایجاد و به آن تخصیص داده میشود، دیگر نمیتوان هرگز از این SIDs برای شناسایی یک اکانت یا گروه دیگر استفاده کرد.
هر زمانی که یک یوزر لاگین Login یا لاگان Logs on میکند، سیستم برای آن یوزر نشانه رمز اجازه دسترسی یا رمز دسترسی Access Token ایجاد میکند. این نشانه رمز دسترسی Access Token تشکیل شده است، SIDs مربوط به یوزر، همچنین SIDs تمام گروه هایی که یوزر به آن تعلق دارد و همچنین تمام مجوزهای Privileges مربوط به یوزر.
این رمز Token زمینه امنیتی Security Context همه کارهایی یا هر کاری که یوزر بر روی کامپیوتر انجام میدهد را فراهم میکند.
وابستگیهای شناسه های امنیت (Security Identifiers Dependencies)
اصول امنیت (Security principals)
یک اصل امنیت (Security Principal) میتواند یک اکانت یوزر، اکانت کامپیوتر یا یک گروه از این اکانتها باشد. هر زمان که یک اصل امنیت ایجاد میشود، بطور اتوماتیک یک شناسه امنیت SID به آن تخصیص Assigned داده میشود. اگر چه همه این اصول امنیت، یک شناسه امنیتی SID منحصر بفرد Unique دارند، اما مهم است که به یاد داشته باشیم که بر اساس نوع اکانت آنها، SIDs های متفاوت تولید و ذخیره میشود.
برای یک اکانت محلی Local یا گروه، SID توسط Local Security Authority – LSA مربوط به کامپیوتر تولید میشود و با سایر اطلاعات دیگر اکانت و در یک محل امن از رجیستری Registry ذخیره میشود.
برای یک اکانت دومین Domain یا گروه، SID توسط Domain Security Authority تولید میشود و به عنوان یک صفت Attribute بر روی شی Object یوزر یا گروه در اکتیو دایرکتوری ذخیره میشود.
نشانه رمز اجازه دسترسی یا رمز دسترسی (Access Tokens)
یک SID نشانه رمز دسترسی Access Tokens یوزر را مشخص میکند. SIDs های دیگر، گروه هایی که یوزر به آن تعلق دارد را مشخص میکنند.
توصیف ها یا شاخص های امنیتی و لیست های کنترل دسترسی (Security descriptors and ACLs)
یک SID در توصیف امنیت Security descriptor شی Object است و مالک یا صاحب owner شی Object را شناسائی میکند. یک SID دیگر مالک owner گروه اصلی Primary Group را شناسائی میکند. در داخل این توصیف امنیت Security descriptor ، لیست های کنترل دسترسی Access Control Lists – ACLs که حاوی نوشته های کنترل دسترسی Access Control Entries – ACEs است، میباشد. هر ACE شامل یک SID است که شناسائی میکند، یک یوزر یا گروه برای چه چیزی اجازه دسترسی Allowed دارد یا اجازه ندارد Denied و یا بازرسی یا تحقیق Audited شود.
حال با این توضیحات داده شده، این سوال پیش میاید که اصلا یک SID به چه شکل است؟ یک SID به شکل زیر میباشد:
S-1-5-21-1004336348-1177238915-682003330-512 SID = S Revision number = 1 Identifier authority = 5 Domain identifier = 21-1004336348-1177238915-682003330 Relative identifier (Domain Admins) = 512
در یک کامپیوتر میتوان SID مربوط به یوزرهایی که با این کامپیوتر لاگین یا لاگان کردند را از مسیر زیر در رجیستری پیدا کرد :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
یادمان باشد، در صورتی که یوزر به یک دومین دیگر انتقال داده شود، SID آن تغییر پیدا میکند و SID جدید را از دومین جدید دریافت میکند.
اگر مشکل Duplicate SID داشته باشیم، برای پیدا کردن Duplicate SID از راه زیر استفاده میکنیم .
کنسول داس CMD را باز کرده و را NTDSUTIL اجرا میکنیم.
سپس Security Account Management را اجرا میکنیم .
سپس به دومین کنترولر Connect میکنیم Connect to Server DC1.Contoso.com ، در مثال ما، نام دومین کنترولر
DC1.Contoso.com میباشد.
حالا فرمان Check Duplicate SID را اجرا میکنیم.
همانطور که در جواب این فرمان میبینید، یک لاگ فایل به نام dupsid.log ساخته شده و Duplicate SID ها در آن میباشد.
اگر بخواهیم SID های تمام یوزرها را مشاهده کنیم، میتوانیم از مدول اکتیو دایرکتوری مربوط به پاورشل
Active Directory Module for Windows PowerShell استفاده کنیم.
از فرمان Get-ADUser استفاده میکنیم.
Get-ADUser -Filter {Name -like "*"} | Select Name, SID | FT -Auto
اگر بخواهیم SID یک یوزر مشخص را ببینیم، از دستور زیر استفاده میکنیم بطور مثال یوزر Parsa
Get-ADUser -Filter {Name -like "Parsa"} | Select Name, SID | FT -Auto