Windows SIDを理解する
システム上のすべてのユーザーアカウントには、Windows SID(セキュリティ識別子)が自動的に割り当てられています。 SIDは、コンピュータシステム内で使用されるすべてのエンティティに使用されます。つまり、SIDは、マシン、ドメインアカウント、ユーザー、およびセキュリティグループに割り当てられます。 SIDに対応する人間が読める形式の名前は、システム管理に関して簡単にするためにあります。たとえば、ユーザーの名前を変更することはできますが、SIDは変更されません。したがって、基になるSIDは変更されていないため、さまざまなアクセス制御リストを調べて新しい名前に更新することを心配する必要はありません。
SIDは、さまざまな長さの数値です。これらは、構造リビジョン番号、ID権限値、および可変数のサブ権限値で構成されます。サブオーソリティ値は、Windowsが共通のベースSIDに基づいて一意のSIDを作成できる手段を提供します。
このサイトから入手できるPsGetSidと呼ばれるSysinternalsからの素晴らしい無料ツールがあります:
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
パラメータを指定せずにPsGetSidを実行すると、現在のコンピュータのSIDが取得されます。
C:\>PsGetSid PsGetSid v1.44 - Translates SIDs to names and vice versa Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for \\DYSERT-PC: S-1-5-21-205299875-3125232665-432278398
表示された番号から、SIDのさまざまな部分を判別できます。それらはダッシュで区切られます。この場合、SIDは「S-1-5」で始まります。これは、構造リビジョン番号(1)とID権限値(5)を示します。残りの数値(ここでも、それぞれダッシュで区切られています)は、サブ権限の値です。
Windowsにはいくつかの組み込みアカウントが付属しているため、ユーザーアカウントが追加される前に、これらのアカウントにはすでにSIDが割り当てられています。組み込みのアカウントには、管理者とゲストのアカウントがあります。これらのそれぞれに対してPsGetSidを実行すると、次の割り当てが明らかになります。
C:\>PsGetSid Administrator PsGetSid v1.44 - Translates SIDs to names and vice versa Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for Dysert-PC\Administrator: S-1-5-21-205299875-3125232665-432278398-500 C:\>PsGetSid Guest PsGetSid v1.44 - Translates SIDs to names and vice versa Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for Dysert-PC\Guest: S-1-5-21-205299875-3125232665-432278398-501
ご覧のとおり、Windowsはアカウントの各SID(500および501)に番号を追加して、それらの一意性を確保しています。これらの一意のサフィックスは、相対識別子(RID)と呼ばれます。新しいアカウントが追加されると、RIDは1000から始まり、必要に応じて増分されます。したがって、「Dysert」アカウントでPsGetSidを実行すると、次のようになります。
C:\>PsGetSid Dysert PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for Dysert-PC\Dysert: S-1-5-21-205299875-3125232665-432278398-1000
このSIDがログオンに関連付けられていることを確認するには、LogonSessionと呼ばれる別のSysinternalsツールを使用できます。ここで入手できます:
http://technet.microsoft.com/en-us/sysinternals/bb896769.aspx
ツールによって生成される出力は次のとおりです。
C:\LogonSessions Logonsesions v1.21 Copyright (C) 2004-2010 Bryce Cogswell and Mark Russinovich Sysinternals - wwww.sysinternals.com [6] Logon session 00000000:00468835: User name: Dysert-PC\Dysert Auth package: NTLM Logon type: Interactive Session: 1 Sid: S-1-5-21-205299875-3125232665-432278398-1000 Logon time: 4/11/2014 3:20:29 AM Logon server: DYSERT-PC DNS Domain: UPN:
SIDもグループに割り当てられます。 Administratorsグループに割り当てられたSIDは、次の方法で取得できます。
C:\>PsGetSid \Administrators PsGetSid v1.44 - Translates SIDs to names and vice versa Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for \Administrators: S-1-5-32-544
何らかの理由でPsGetSidツールを使用したくない場合でも、組み込みのユーティリティ_wmic_からSID情報を取得できます。コマンドラインから、「_ wmic useraccount get name、sid _」(引用符なし)と入力します。次の出力が表示されます:
C:\wmic useraccount get name,sid Name SID Administrator S-1-5-21-205299875-3125232665-432278398-500 ASPNET S-1-5-21-205299875-3125232665-432278398-1003 Dysert S-1-5-21-205299875-3125232665-432278398-1000 Guest S-1-5-21-205299875-3125232665-432278398-501 SQLDebugger S-1-5-21-205299875-3125232665-432278398-1007
このヒント(13106)は、Windows 7、8、および10に適用されます。