Microsoft Windows NTシリーズのオペレーティング システムでは、セキュリティ識別子( SID ) は、ユーザー、ユーザー グループ、またはその他のセキュリティ プリンシパルの一意で不変の識別子です。セキュリティ プリンシパルは、(特定のドメイン内で) 存続する 1 つの SID を持ち、プリンシパルの名前を含むすべてのプロパティは SID に関連付けられます。この設計により、プリンシパルを参照するオブジェクトのセキュリティ属性に影響を与えることなく、プリンシパルの名前を変更できます (たとえば、「Jane Smith」から「Jane Jones」に)。
概要
Windows は、SID を使用してユーザーとそのグループ メンバーシップを一意に識別するアクセス制御リスト(ACL)に基づいて、リソースへのアクセスと権限を許可または拒否します。ユーザーがコンピューターにログインすると、ユーザーとグループの SID およびユーザー権限レベルを含むアクセス トークンが生成されます。ユーザーがリソースへのアクセスを要求すると、アクセス トークンが ACL と照合され、特定のオブジェクトに対する特定のアクションが許可または拒否されます。
SID は、セキュリティ監査、Windows Server、ドメイン移行に関する問題のトラブルシューティングに役立ちます。
SID の形式は、次の例を使用して説明できます:「S-1-5-21-3623811015-3361044348-30300820-1013」:
識別子権限値
識別子権限値
既知の識別子権限値は次のとおりです: [1] [2]
機能 SID の識別:
- ユーザーがレジストリ データで SID を見つけた場合、それは機能 SID です。設計上、フレンドリ名には解決されません。
- ユーザーがレジストリ データで SID を見つけられない場合、それは既知の機能 SID ではありません。それでも、通常の未解決の SID としてトラブルシューティングできます。SID がサード パーティの機能 SID である可能性はわずかですが、その場合はフレンドリ名に解決されません。
Microsoft サポートによると: [7] 重要- レジストリまたはファイル システムのアクセス許可から機能 SID を削除しないでください。ファイル システムのアクセス許可またはレジストリのアクセス許可から機能 SID を削除すると、機能またはアプリケーションが正しく動作しなくなる可能性があります。機能 SID を削除した後は、UI を使用して再度追加することはできません。
S-1-5 下位機関の値[6][9][10]
仮想アカウントは、固定のクラス名セットに対して定義されますが、アカウント名は定義されません。仮想アカウント内では、ほぼ無限の数のアカウントを使用できます。名前は、「アカウント クラス\アカウント名」のように機能します (つまり、「AppPoolIdentity\Default App Pool」)。SID は、小文字の名前の SHA-1 ハッシュに基づいています。仮想アカウントはそれぞれ異なる SID にマップされるため、それぞれに個別にアクセス許可を与えることができます。これにより、各サービスが同じ NT AUTHORITY クラス (「NT AUTHORITY\Network Service」など) に割り当てられる「アクセス許可の相互共有」の問題を回避できます。
マシンSID
マシンSID(S-1-5-21)は、SECURITY\SAM\Domains\AccountにあるSECURITYレジストリハイブに保存され、このキーには2つの値FとVがあります。V値はバイナリ値で、データの末尾(最後の96ビット)にコンピュータSIDが埋め込まれています。[11](一部の情報源では、代わりにSAMハイブに保存されていると述べています。)バックアップはSECURITY\Policy\PolAcDmS\@にあります。
NewSID は、この SID が標準の NT 4.0 形式 (3 つの 32 ビットのサブ機関の後に 3 つの 32 ビットの機関フィールドが続く) であることを確認します。次に、NewSID はコンピューターの新しいランダム SID を生成します。NewSID の生成では、コンピューターの SID を構成する 3 つのサブ機関値の 96 ビットを置き換える、真にランダムな 96 ビット値を作成するために多大な労力を費やします。
— NewSID の Readme
マシン SID サブ機関形式は、ドメイン SID にも使用されます。この場合、マシンは独自のローカル ドメインと見なされます。
デコードマシンSID
マシン SID は、レジストリに生のバイト形式で保存されます。これをより一般的な数値形式に変換するには、3 つのリトルエンディアンの32 ビット整数として解釈し、それを 10 進数に変換して、その間にハイフンを追加します。
その他の用途
マシン SID は、Start8 などの一部の無料試用プログラムでも使用され、試用を再開できないようにコンピューターを識別します。[引用が必要]
サービスSID
サービス SID は、 Windows VistaおよびWindows Server 2008で導入されたセキュリティ機能であるサービス分離の機能です。[12]「無制限」の SID タイプのプロパティを持つすべてのサービスには、サービス ホスト プロセスのアクセス トークンにサービス固有の SID が追加されます。サービス SID の目的は、管理オーバーヘッドとなるサービス アカウントの作成を必要とせずに、単一のサービスのアクセス許可を管理できるようにすることです。
各サービス SID は、次の式を使用してサービス名から生成されるローカルのマシン レベルの SID です。
S-1-5-80-{SHA-1(service name in upper case encoded as UTF-16)}
このsc.exe コマンドを使用して、任意のサービス SID を生成できます。
このサービスは、NT SERVICE\<service_name> (例: "NT SERVICE\dnscache") とも呼ばれます。
重複した SID
Windows NT/2K/XP を実行しているコンピュータのワークグループでは、共有ファイルやリムーバブル ストレージに保存されているファイルにユーザーが予期しないアクセスを行う可能性があります。これは、影響を受けるファイルにアクセス制御リストを設定し、有効なアクセス許可がユーザー SID によって決定されるようにすることで防止できます。このユーザー SID が別のコンピュータで複製されている場合、同じ SID を持つ 2 番目のコンピュータのユーザーが、最初のコンピュータのユーザーが保護したファイルにアクセスできる可能性があります。これは、ディスク クローンによってマシン SID が複製された場合によく発生します。これは、海賊版でよく見られる現象です。ユーザー SID は、マシン SID と連続した相対 ID に基づいて構築されます。
コンピュータがドメイン (Active Directory または NT ドメインなど) に参加すると、各コンピュータには一意のドメイン SID が与えられ、コンピュータがドメインに参加するたびに再計算されます。この SID はマシン SID に似ています。その結果、コンピュータがドメインのメンバーである場合、特にローカル ユーザー アカウントが使用されていない場合、SID が重複しても通常は大きな問題は発生しません。ローカル ユーザー アカウントが使用されている場合、上記と同様のセキュリティ問題が発生する可能性がありますが、問題はドメイン ユーザーではなく、ローカル ユーザーによって保護されているファイルとリソースに限定されます。
SID の重複は通常、Microsoft Windows システムでは問題になりませんが、SID を検出する他のプログラムではセキュリティ上の問題が発生する可能性があります。
マイクロソフトは、マシンの SID を変更するために、Sysinternals の一部としてMark Russinovichの「NewSID」ユーティリティを提供していました。 [13]このユーティリティは 2009 年 11 月 2 日に廃止され、ダウンロードから削除されました。Russinovich の説明によると、マシンの SID はネットワーク アクセスのゲートには関与しないため、重複した SID が問題を引き起こすような状況は、彼自身も Windows セキュリティ チームも思いつかなかったとのことです。[14]
現在、Windows オペレーティング システムのディスクを複製するためにサポートされている唯一のメカニズムは、新しい SID を生成するSysPrepを使用することです。
参照
- アクセス制御
- アクセス制御マトリックス
- 任意アクセス制御(DAC)
- グローバル一意識別子(GUID)
- 強制アクセス制御(MAC)
- ロールベースのアクセス制御(RBAC)
- 能力ベースのセキュリティ
- クローン作成後の操作
参考文献
- ^ 「Windows オペレーティング システムにおける既知のセキュリティ識別子」。support.microsoft.com。2019年12月 12 日閲覧。
- ^ openspecs-office. "[MS-DTYP]: 既知の SID 構造". docs.microsoft.com . 2020 年 9 月 3 日閲覧。
- ^ https://msdn.microsoft.com/en-us/library/aa480244.aspx の「カスタム プリンシパル」セクションを参照してください。
- ^ 「Larry Osterman's WebLog」。2020年7月17日。
- ^ 「Windows 8/8.1 の Windows API に対する Microsoft アカウントの影響例 – Windows SDK サポート チームのブログ」。blogs.msdn.microsoft.com。2014年12 月 12 日。
- ^ ab 「セキュリティ識別子」。support.microsoft.com。2021年 8 月 28 日。2020年 9 月 2 日に閲覧。
- ^ ab 「一部の SID はフレンドリ名に解決されません」。support.microsoft.com。2021年 9 月 24 日。2020 年 9 月 2 日閲覧。
- ^ lastnameholiu. 「Capability SID Constants (Winnt.h) - Win32 アプリ」。docs.microsoft.com。2020年 9 月 2 日閲覧。
- ^ 「Accounts Everywhere: part 1, Virtual Accounts」. 1E . 2017-11-24 . 2020-09-02閲覧。
- ^ 「IIS AppPool Identity SID」. winterdom . 2020-09-02.
- ^ 「MS TechNet NewSID ユーティリティ - 仕組み」。ナレッジ ベース。Microsoft。2006年 11 月 1 日。2008 年 8 月 5日閲覧。
- ^ 「Windows サービス分離機能」。記事。Windows IT Pro。2012 年 6 月 6 日。2012 年12 月 7 日に閲覧。
- ^ 「NewSID v4.10」。Windows Sysinternals。Microsoft。2006-11-01。
- ^ Russinovich, Mark (2009-11-03). 「マシン SID 重複の神話」. TechNet ブログ. Microsoft.
外部リンク
- 正式
- ObjectSID と Active Directory
- Microsoft TechNet: Server 2003: セキュリティ識別子テクニカル リファレンス
- MSKB154599: ユーザー名をセキュリティ識別子に関連付ける方法
- MSKB243330: Windows オペレーティング システムにおけるよく知られたセキュリティ識別子
- Windows Server 2003 および Windows XP のサポート ツール
- セキュリティ識別子 - Windows セキュリティ ドキュメント
- 他の
- SID を理解することが重要な理由
- Microsoft セキュリティ記述子 (SID) 属性: スクリプトでの SID の処理/変換に関するチュートリアル記事
