NewSID

作成者: Mark Russinovich、Bryce Cogswell

公開日: 2006 年 11 月 1 日 | 最終更新日: 2009 年 11 月 6 日

ご注意: NewSID は取り下げられ、ダウンロードすることができなくなりました。詳細につきましては、Mark Russinovich のブログ記事をご覧ください。

重要:

SID に関して、マイクロソフトでは SysPrep を使用して準備されたイメージのみをサポートしており、NewSID を使用して準備されたイメージをサポートしていません。また、すべての展開複製方法について、NewSID のテストを行ったわけではありません。

マイクロソフトの公式な方針の詳細については、以下のサポート技術情報の記事を参照してください。

 ページのトップへ

概要

多くの組織では、ディスク イメージの複製を使用して Windows の大規模な展開を行います。この技法では、OS が完全にインストールされて構成されている Windows コンピューターのディスクが、他のコンピューターのディスク ドライブにコピーされます。こうした他のコンピューターは、事実上、同じように完全なインストール処理が行われたコンピューターのように見え、すぐに使用することができます。

この方法を使用すると、他の展開方法よりも作業時間を短縮し、わずらわしさを軽減できますが、複製されたすべてのシステムのコンピューター セキュリティ識別子 (SID) が同じになるという大きな問題があります。この事実により、ワークグループ環境のセキュリティが危険にさらされます。また、同じコンピューター SID が複数存在するネットワークでは、リムーバブル メディアのセキュリティが危険にさらされる可能性もあります。

Windows コミュニティからの要望により、システムの複製後にコンピューターの SID を変更できるプログラムを数社が開発しました。ただし、Symantec の SID Changer と Ghost Walker は、同社のハイエンド製品に組み込まれた形で販売されています。また、このユーティリティはどちらも DOS コマンド プロンプトから実行します (Altiris の SID 変更ユーティリティは、NewSID に似ています)。

NewSID は、マイクロソフトが開発した、コンピューターの SID を変更するプログラムです。無償で提供されている Win32 プログラムなので、事前に複製されたシステムで簡単に実行できます。

この記事を最後までお読みになってから、NewSID を使用してください。

バージョン情報:

  • Version 4.0 では、Windows XP と .NET Server のサポート、適用する SID を指定できるウィザード形式のインターフェイス、レジストリの最適化、およびコンピューター名を変更するオプション (このオプションを使用すると NetBIOS 名と DNS 名が変更されます) が導入されました。
  • Version 3.02 では、古い SID を含むキーの名前を新しい SID を含む名前に変更する際に、無効な値の種類を含む既定値が正しくコピーされないというバグが修正されました。実際、NT では、SAM の無効な値が使用されることがあります。このバグの現象として、承認されたユーザーがアカウント情報を更新する際にアクセスが拒否されたことを報告するエラー メッセージが表示されました。
  • Version 3.01 では、Microsoft Transaction Server によって作成されるアクセスできないレジストリ キーに、アクセスできるようになりました。この修正が行われなかったら、NewSID は早い段階で終了してしまいます。
  • Version 3.0 では、適用する SID を別のコンピューターから取得するように NewSID に指示する、SID の同期ツールが導入されました。
  • Version 2.0 では、自動モード オプションが導入され、コンピューター名を変更できるようになりました。
  • Version 1.2 では、一部のファイル システム セキュリティ記述子が更新されないという、1.1 で見つかったバグが修正されました。
  • Version 1.1 では、特定のインストールにのみ影響を及ぼす比較的軽微なバグが修正されました。また、ファイルとプリンターの共有のアクセス許可の設定に関連付けられた SID を変更するように更新されました。

 ページのトップへ

複製および他の展開方法

企業環境で Windows の大規模な展開 (通常、数百台に上るコンピューターの展開) を実行する最も一般的な方法の 1 つは、ディスクの複製技術を使用したものです。システム管理者が、テンプレート コンピューターに、社内で使用する基盤となるオペレーティング システムとアドオン ソフトウェアをインストールします。社内ネットワークで運用するようにテンプレート コンピューターを構成した後、ディスクまたはシステムの自動複製ツール (Symantec の Ghost、Norton PartitionMagic、Altiris の RapiDeploy など) を使用して、テンプレート コンピューターのドライブを数十台または数百台のコンピューターにコピーします。その後、複製されたディスクまたはシステムで、一意の名前の割り当てなどの最終的な微調整を行って、従業員が使用できるようにします。

Windows 展開の別の一般的な方法は、マイクロソフトの sysdiff ユーティリティ (Windows Resource Kit に収録) を使用する方法です。このツールを使用するには、システム管理者が各コンピューターで完全インストール (通常、スクリプト化された無人インストール) を実行する必要があります。完全インストールの完了後、sysdiff によって、アドオン ソフトウェアのインストール イメージが自動的に適用されます。

複製に基づく展開では、インストールが省略され、ファイルをコピーするよりもディスク セクターをコピーする方が効率的なので、sysdiff を使用した同様のインストールより大幅に時間を短縮できます。また、システム管理者は、無人インストールや sysdiff の使用方法や、インストール スクリプトを作成してデバッグする方法を理解する必要がありません。ディスクまたはシステムを複製するだけで、作業時間を短縮できます。

 ページのトップへ

SID の複製に関する問題

狭義では、SID 複製は、マイクロソフトでしかサポートされていない技術であるという問題があります。マイクロソフトでは、システムの複製は、Windows セットアップで GUI に関する処理が開始される前に完了した場合のみ実現すると明言していますインストールで GUI に関する処理が開始されると、名前と一意のコンピューター SID がコンピューターに割り当てられます。この処理の後にシステムが複製されると、複製されたすべてのコンピューターのコンピューター SID が同じものになります。コンピューター名を変更したり、別のドメインにコンピューターを追加したりするだけでは、コンピューターの SID が変更されないことに注意してください。コンピューターがあらかじめドメインに関連付けられている場合は、名前やドメインを変更しても、ドメインの SID が変更されるだけです。

複製によって発生する問題を理解するには、まず、コンピューターの各ローカル アカウントに SID が割り当てられる方法を把握する必要があります。ローカル アカウントの SID は、コンピューターの SID に RID (相対識別子) が付加されたものです。RID の先頭は固定値で、作成されたアカウントごとに 1 ずつ増加します。つまり、たとえば、あるコンピューターの 2 つ目のアカウントには、複製されるコンピューターの 2 つ目のアカウントと同じ RID が割り当てられます。そのため、両方のアカウントの SID は同じものになります。

ドメイン アカウントには、ドメインの SID に基づいて SID が割り当てられるので、ドメイン ベースの環境では、SID が重複していても問題ありません。ただし、マイクロソフト サポート技術情報の記事 Q162001「インストール済みの Windows のバージョンのディスク複製に関するマイクロソフトの方針」には、ワークグループ環境のセキュリティはローカル アカウントの SID に基づくという記載があります。そのため、同じ SID を持つ複数のユーザーが 2 台のコンピューターに存在する場合、ワークグループ環境では、このようなユーザーを区別することができません。一方のユーザーがアクセスできるすべてのリソース (ファイルやレジストリ キーなど) には、もう一方のユーザーもアクセスできます。

重複する SID によって問題が発生する可能性がある別の事例として、NTFS 形式でフォーマットされたリムーバブル メディアがあり、ローカル アカウントのセキュリティ属性がファイルやディレクトリに適用される状況が挙げられます。同じ SID が割り当てられている別のコンピューターにそうしたメディアを移動すると、アカウント ID がセキュリティ属性のアカウント ID と一致する場合に、ファイルにアクセスできないはずのローカル アカウントでファイルにアクセスすることが可能になります。各コンピューターに異なる SID が割り当てられている場合は、この現象が発生することはありません。

Mark が執筆した「NT Rollout Options (英語)」という記事が、『Windows NT Magazine』の 6 月号に掲載されました。この記事では、重複する SID の問題についてより詳しく説明し、複製に対するマイクロソフトの公式な姿勢を示しています。お使いのネットワークで重複する SID の問題が発生しているかどうかを確認するには、PsGetSid を使用してコンピューターの SID を表示します。

 ページのトップへ

NewSID

NewSID は、マイクロソフトが開発した、コンピューターの SID を変更するプログラムです。NewSID では、まず、コンピューターの SID をランダムに生成し、続いて、レジストリおよびファイル セキュリティ記述子で検出された既存のコンピューター SID のインスタンスを新しい SID に置き換えて、更新します。NewSID を実行するには、管理者特権が必要です。NewSID には、SID の変更とコンピューター名の変更という 2 つの機能があります。

NewSID の自動実行オプションを使用するには、コマンド ラインで /a スイッチを指定します。また、/a スイッチの後に新しいコンピューター名を指定して、コンピューター名を自動的に変更するよう NewSID に指示することもできます。たとえば、次のように指定します。

newsid /a [newname]

このように指定すると、メッセージを出力せずに NewSID が実行され、コンピューター名が newname で指定した名前に変更されて、何も問題がない場合はコンピューターが再起動されます。

: NewSID を実行するシステムで IISAdmin が実行されている場合、IISAdmin サービスを停止してから NewSID を実行する必要があります。IISAdmin サービスを停止するには、net stop iisadmin /y というコマンドを使用します。

NewSID は、SID をランダムに生成するのではなく、新しい SID を別のコンピューターから取得する必要があることを指定できる SID の同期機能です。この機能を使用すると、バックアップ ドメイン コントローラー (BDC) には他のドメイン コントローラーと同じコンピューター SID が割り当てられていることから、BDC とドメインの関係が確認されるので、新しいドメインに BDC を移動できます。その場合に必要な操作は、[Synchronize SID] ボタンをクリックし、対象のコンピューターの名前を入力するだけです。対象のコンピューターのレジストリ キーのセキュリティ設定を変更するアクセス許可が必要です。つまり、通常、この機能を使用するには、ドメイン管理者としてログインする必要があります。

NewSID を実行すると、レジストリのサイズが大きくなるので、レジストリの最大サイズがレジストリの増大に対応することを確認してください。レジストリの増大は、システムのパフォーマンスにそれほど影響しないことがわかりました。レジストリが増大するのは、NewSID によって一時的なセキュリティ設定が適用されるときに、レジストリが断片化されるためです。その設定が削除される際に、レジストリの最適化は行われません。

重要: NewSID は十分にテストしましたが、ご自身の責任でお使いください。ファイルやレジストリの設定を変更するすべてのソフトウェアと同様に、NewSID を実行する前に、コンピューターの完全バックアップを作成しておくことを強くお勧めします。

ページのトップへ

BDC の移動

ドメイン間で BDC を移動するときには、次の手順に従う必要があります。

  1. 移動する BDC を起動してログインします。NewSID を使用して、BDC の SID と、BDC の移動先ドメインの PDC の SID を同期します。
  2. SID を変更したシステム (BDC) を再起動します。BDC が関連付けられたドメインにはアクティブな PDC が既に存在するので、その PDC は新しいドメインの BDC として起動します。
  3. BDC はサーバー マネージャーのワークステーションになるので、[Add to Domain] ボタンをクリックして、新しいドメインに BDC を追加します。BDC を追加する際、必ず [BDC] ボタンをクリックしてください。

ページのトップへ

NewSID のしくみ

NewSID では、まず、既存のコンピューター SID を読み取ります。コンピューターの SID は、レジストリの SECURITY\SAM\Domains\Account の SECURITY ハイブに格納されています。このキーには、F という値と V という値が格納されています。値 V は、値のデータの末尾にコンピューター SID が埋め込まれたバイナリ値です。NewSID によって、この SID が標準形式 (3 つの 32 ビット副機関フィールドの後に 3 つの 32 ビット機関フィールドが続く形式) であることが確認されます。

次に、NewSID では、コンピューターの新しい SID をランダムに生成します。NewSID による SID の生成では、完全にランダムな 96 ビットの値を作成するために非常に複雑な処理が行われ、コンピューター SID を構成する 96 ビットの 3 つの副機関値に置き換えられます。

コンピューター SID の置き換えには、3 つの段階があります。第 1 段階では、SECURITY および SAM というレジストリ ハイブで、キーの値とキーの名前に古いコンピューター SID が含まれているかどうかがスキャンされます。値で古いコンピューター SID が見つかると、その SID が新しいコンピューター SID に置き換えられます。名前で見つかった場合は、キーとサブキーが同じ名前のサブキーにコピーされます (ただし、古い SID は新しい SID に置き換えられます)。

第 2 段階と第 3 段階では、セキュリティ記述子が更新されます。レジストリ キーと NTFS ファイルには、セキュリティが関連付けられています。セキュリティ記述子は、リソースを所有するアカウント、プライマリ グループを所有するグループ、ユーザーまたはグループによって許可されている操作を指定するエントリの省略可能な一覧 (随意アクセス制御リスト (DACL))、およびシステム イベント ログにエントリを生成し、特定のユーザーまたはグループによって実行される操作を指定するエントリの省略可能な一覧 (システム アクセス制御リスト (SACL)) を識別するエントリで構成されます。このようなセキュリティ記述子では、ユーザーまたはグループが SID によって識別されます。また、既に説明したように、(Administrator や Guest などの組み込みのアカウント以外の) ローカル ユーザー アカウントには、コンピューター SID と RID で構成される SID が割り当てられます。

セキュリティ記述子の更新は、まず、コンピューターの NTFS ファイル システム形式のすべてのファイルで実行されます。各セキュリティ記述子で、コンピューター SID が含まれているかどうかがスキャンされます。NewSID でコンピューター SID が検出されると、その SID は新しいコンピューター SID に置き換えられます。

次に、レジストリでセキュリティ記述子の更新が実行されます。まず、NewSID によって、ロードされているハイブだけでなく、すべてのハイブが確実にスキャンされるようにする必要があります。どのユーザー アカウントにも、ユーザーがログインしたときに HKEY_CURRENT_USER にロードされるレジストリ ハイブが存在しますが、このレジストリ ハイブは、ユーザーがログインしていないときはユーザーのプロファイル ディレクトリのディスクで保持されます。NewSID では、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList キーを列挙して、ユーザー ハイブが格納されているすべての場所を識別します。このキーは、ユーザー ハイブが格納されているディレクトリを指します。その後、RegLoadKey を使用して、レジストリの HKEY_LOCAL_MACHINE の下にユーザー ハイブをロードし、古いコンピューター SID が存在するかどうかを確認しながらレジストリ全体をスキャンします。ファイルについても同様にセキュリティ記述子の更新が実行され、更新が完了すると、NewSID によってロードされたユーザー ハイブがアンロードされます。最後に、HKEY_USERS キーがスキャンされます。このキーには、現在ログインしているユーザーのハイブと .Default ハイブが含まれています。ハイブを 2 回ロードすることはできないので、これは必要な手順です。NewSID によって他のユーザー ハイブがロードされているときは、ログインしているユーザーのハイブが HKEY_LOCAL_MACHINE にロードされることはありません。

これで、新しいアカウント SID を参照するように ProfileList サブキーが更新されます。アカウント SID が新しいコンピューター SID を反映するように変更された後、Windows NT によってプロファイルとユーザー アカウントが正しく関連付けられるようにするために、この手順は必要です。

NewSID では、自らに、システム、バックアップ、復元、および所有権の取得という特権を付与して、システム内のすべてのファイルとレジストリ キーにアクセスし、それらを変更できるようにしています。

 

 ページのトップへ