sysprep未実施で発生する不具合を初めて見た

重複する SID による Kerberos および NTLM 認証エラー - Microsoft サポートという問題が発生している。

Windowsイメージの複製における鬼門sysprep

Windowsのセットアップにおいて、「マシンイメージの複製」というのがよく行われる。マスタとなるPC環境の作りこみを行って、その環境をイメージ化(ファイル化)し、複製先のPCでそのイメージを展開するという方法だ。

この「イメージ化による複製」において、一番めんどくさいのが「sysprep」という作業になる。イメージ化をおこなうにあたって、公式では必須とされているこのsysprepだが、以下2つの理由によって省略されることがある。

①せっかく構築したマスタ環境も、sysprepをすると「oobe設定が終わっている環境」は複製されない。Windowsの設定を複製するのであれば、「どんな設定が必要なのかを洗い出して、その設定を「応答ファイル」を作成するという形でイメージに教える必要がある」のだ。
②sysprepをしたことがないけれど、それが原因で不具合が起こった事例がほぼ存在しない*1

ようするに、sysprepするだけで、果てしなくめんどくさく、そこはかとなく難しい作業が発生してしまうのだ。そのわりには「やらないことで問題が発生したことがない」のであれば、「マイクロソフトさんはsysprep必須とか言っているけど、今までやらなくても特に問題なかったから、やらなくてもいいよね」という論理がまかり通るのもわからなくはない。

sysprepとは

sysprepというのは簡単に言えば、Windowsのイメージから固有IDを削除すること*2で、イメージ展開時にユニークな固有IDが自動作成されることを支援するツールだ。この固有IDはsidと呼ばれる。実はコンピュータ名もIPアドレスも、ネットワーク上の固有IDでしかない。製造番号(シリアル番号)は固有IDかもしれないけれど、すべてのPCメーカーで「シリアル番号を被らないようにするような協定」が存在するわけではない。例えばDELL製のPCとHP製のPCで、シリアル番号がかぶってしまうことは、ありえないことではない。メーカーによってはシリアル番号の書き換えも可能であろう。なので、Windowsは「自PCと他PCを見分けるためのID」として、セットアップ時にsidという番号を発行しているのだ。

sysprep未実施の場合

固有ID(sid)が同一なWindowsPCが大量に作成されることになるので、自PCと他PCの見分けがつかない状態になる。いままでこの状態で不具合が発生していなかったのは単純な話で、「いままで、sidを使用して自PCと他PCを見分ける必要がなかった」か「sidを使用して自PC他とPCを見分けてはいたんだけど、不具合として表出はしなかった」のいずれかであろう。

回避策としてのsysprep実行

現在動いている環境にたいして、sysprepをやり直すなんてことは、莫大な検証作業と実施のための工数が必要となるので、とてもじゃないけどできないというのが現場の本音だろう。しかしそれをわかっていながら、MS社はsysprepをやり直してくださいという。MS社を責めたいとことであるけれど、MS社は今も昔も一貫して、「Windows環境の複製において、sysprepを使用する以外の方法を認めていない」。要は「認定した方法を無視している以上、責任は顧客もしくは顧客に依頼された業者が負うべきもの」と考えているものと推測される。

ワークアラウンドと恒久対策

ワークアラウンドは、最初のリンク先にも記載されている通り、グループポリシーをMS社より入手して適用するしかないだろう。恒久対策は、、、MS社が何とかしてくれることを願うしかないのではないか。MSに責任はないものの、sysprepは現実離れした案に見える。

教訓

ということで、現状発生しているsid重複による不具合は上記のような背景で発生しているものと思われる。MS公式の方法を迂回した場合のリスクが顕在化したのであった。最近Youtube動画などで、標準手順*3を何とか回避したいというものを見かける。「自分が責任を負える範囲」で回避するのは構わないんだけれど、仕事としてMS社の標準手順を逸脱するのは避けたほうが良いし、他人に勧める場合においても「自己責任でやること」というのはくれぐれも通知しておいた方が良いと思うのであった。「昨日まで発生しなかった不具合」が「標準手順を回避したことが原因で明日発生する」なんてことが起こらない保証はどこにもないのだから。

*1:正直なところオバケみたいなものだと思っていた。出るぞ出るぞとは言われるけど、実際に見たことがない

*2:今回の問題に範囲を絞った説明です。ほかにもいろいろやってくれています。

*3:例えば、PCセットアップ時に、MSアカウントで認証する手順