LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問26
仮想化基盤の構築/仮想化環境のセキュリティ設定libvirtで、LUKS形式で暗号化したディスクイメージを仮想マシンに接続する。解錠用のパスフレーズをドメインXMLに平文で書かずに渡す方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)
- Aパスフレーズを仮想マシンのOVMFのNVRAMファイルに書き込み、ファームウェアからディスクの解錠時に読み出させる
- Bswtpmで作成した仮想TPMの状態ファイルにパスフレーズを格納し、ディスクの<source>要素からそのパスを参照する
- Cvirsh domxml-to-nativeでドメインXMLをQEMUの引数に変換し、パスフレーズを含む部分をXMLから除いておく
- Dvirsh secret-defineで秘密情報オブジェクトを作り、値を登録したうえで、ディスクの<encryption>からUUIDで参照する
正解:D
解説
libvirtはパスフレーズ等の秘密情報を「secret」オブジェクトとして管理します。virsh secret-define でUUIDと用途を記述したXMLから秘密情報オブジェクトを定義し、virsh secret-set-value で実際の値を登録します。ディスクの定義では <encryption format='luks'> の中に <secret type='passphrase' uuid='…'/> を書き、UUIDで参照するため、ドメインXMLにパスフレーズ自体は現れません。秘密情報をprivate属性付きで定義すれば、登録後に値をvirshから読み出すこともできなくなります。
選択肢ごとの解説
- A誤り。OVMFのNVRAMファイルはUEFIの変数(ブート順序やSecure Bootの鍵データベース等)を保存する領域で、libvirtのディスク解錠に使う仕組みではありません。
- B誤り。swtpmの状態ファイルは仮想TPMの内部状態を保存するもので、<source>要素から参照してパスフレーズを渡す使い方はありません。
- C誤り。domxml-to-nativeはドメインXMLに相当するQEMUのコマンドラインを表示するコマンドで、秘密情報を安全に渡す仕組みではありません。
- D正しい。secretオブジェクトに値を登録し、<encryption>内の<secret>からUUIDで参照すれば、XMLに平文を書かずに済みます。