今まで意識していなかった仮想マシンフォルダのセキュリティについて考えてみます。
そもそも、仮想マシンはデフォルトではC:ドライブに作成されることになりますが、通常はシステムドライブは避けて他のドライブに作成することになると思われます。
ここで仮想マシンを別のフォルダ(D:VMM)に作成してみます。そうするとTest1フォルダ(仮想マシンの名前)が作成されます。
このフォルダはHyper-V導入時にデフォルトで作成されるフォルダになります。ここに仮想マシンというグループが入っています。この仮想マシンというグループはHyper-V自体がフォルダにアクセスするために必要なアクセス権を付与するためのグループと推測されます。
そしてアクセス権としては、図の通り以下の[許可]が割り当てられていました。
- フォルダの一覧/データの読み取り
- 属性の読み取り
- 拡張属性の読み取り
- ファイルの作成/データの書き込み
- フォルダーの作成/データの追加
- アクセス許可の読み取り
さらに、D:VMMTest1の配下には Virtual Machines というフォルダができて VM GUID のフォルダが作成されます。さらに VM GUID 名の XML ファイル(構成ファイル)も作成されます。
そしてこれらのフォルダとファイルには VM SID が追加されフルコントロールが割り当てられます。
VM GUID 名の XML ファイル(構成ファイル)はデフォルトの保存場所である C:ProgramDataMicrosoftWindowsHyper-VVirtual Machines を確認するとシンボリックリンクが作成されていることが確認できます。
そして作成されたVHDファイルには、VM SID のアクセス権(フルコントロール)が付与されます。
検証の結果、これが既定の動作になります。
さて、本題です。
エクスポート & インポート操作をした際に、まれに失敗することがあります。
実際に起きた事象としては(これは報告を受けた内容になります)、Baseファイルと差分+差分の仮想マシンをインポートした際に不具合が起こるとのこと。調べたところエクスポートをしたホストと同じファイル構造にしておけば大丈夫のようです。しかし、インポート側で新たにフォルダを作成して、そのフォルダにインポートするとエラーになるとのこと。そして、これがBase+差分までならインポート先のフォルダが異なっても大丈夫だそうです。不思議だな~
さて・・・この不具合とは、とりあえずインポートはされるのですが、フォルダに「仮想マシン」のアクセス権がないためHyper-Vマネージャーから操作ができずどうしようもない状態に陥ると報告を受けました。
そこで相談されたのが、手動で「仮想マシン」のグループを追加してアクセス権を割り当てられないか?ということでした。実はGUIからは追加はできませんでした。
いろいろ調べた結果次の方法で追加可能です。コマンドプロンプトより
icacls d:vmmtest1 /grant “nt virtual machine仮想マシン”:(F) /L
これで「仮想マシン」グループは追加できます。また VM SID も同様の方法で追加できます。「仮想マシン」を追加した後に適切なアクセス権を割り当てます(フルコントロールで割り当てたので・・・)