21.16.8. スマートカードデバイス

仮想スマートカードは、smartcard 要素からゲスト仮想マシンに提供されます。ホストマシン上の USB スマートカードリーダーデバイスは、単純なデバイスパススルーではゲストで使用することができません。仮想スマートカードはホストとゲストの両方で利用可能とすることができないので、ゲストから削除されるとホストのコンピューターをロックできます。このため一部のハイパーバイザーは、ゲスト仮想マシンにスマートカードインターフェースを提供できる特殊な仮想デバイスを提供します。その際、資格情報がホストマシン、またはサードパーティーのスマートカードプロバイダーによって作成されたチャンネルからどのように取得されたかを記述するために複数のモードが使用されます。キャラクターデバイスによる USB デバイスのリダイレクション用のパラメーターを設定するには、ドメイン XML の以下のセクションを編集します。

  ...
  <devices>
    <smartcard mode='host'/>
    <smartcard mode='host-certificates'>
      <certificate>cert1</certificate>
      <certificate>cert2</certificate>
      <certificate>cert3</certificate>
      <database>/etc/pki/nssdb/</database>
    </smartcard>
    <smartcard mode='passthrough' type='tcp'>
      <source mode='bind' host='127.0.0.1' service='2001'/>
      <protocol type='raw'/>
      <address type='ccid' controller='0' slot='0'/>
    </smartcard>
    <smartcard mode='passthrough' type='spicevmc'/>
  </devices>
  ...

図21.34 デバイス - スマートカードデバイス

smartcard 要素には、必須属性の mode があります。以下のモードがサポートされます。それぞれのモードでは、ゲスト仮想マシンには、物理 USB CCID (Chip/Smart Card Interface Device) カードのように動作する USB バス上にデバイスが表示されます。
モード属性は以下のようになります。

表21.16 スマートカードの mode 要素

パラメーター説明
mode='host'このモードでは、ハイパーバイザーは、ゲスト仮想マシンから NSS 経由でホスト物理マシンのスマートカードへのすべてのダイレクトアクセス要求を中継します。これ以外の属性またはサブ要素は不要です。オプションの address サブ要素の使用については、以下を参照してください。
mode='host-certificates'このモードにより、スマートカードをホスト物理マシンにプラグインする代わりに、ホスト物理マシン上のデータベースにある 3 つの NSS 証明書名を指定することができます。これらの証明書は、コマンドの certutil -d /etc/pki/nssdb -x -t CT,CT,CT -S -s CN=cert1 -n cert1, により生成され、結果として作成される 3 つの証明書名は、3 つの certificate サブ認証のそれぞれのコンテンツとして指定される必要があります。追加のサブ要素の database は代替ディレクトリーへの絶対パスを指定できます (証明書の作成時の certutil コマンドの -d フラグに一致)。これが表示されない場合、デフォルトは /etc/pki/nssdb になります。
mode='passthrough'このモードでは、ハイパーバイザーがホスト物理マシンと直接通信するのではなく、すべての要求を 2 次的なキャラクターデバイス経由でサードパーティープロバイダー (これがその後、スマートカードと通信するか、3 つの認証ファイルを使用します) にトンネルすることができます。この操作モードでは、対応するシリアルデバイスタイプのいずれかに一致する、追加属性の type が、トンネルのホスト物理マシン側を記述するために必要になります。type='tcp' または type='spicevmc' (SPICE グラフィックスデバイスのスマートカードチャンネルを使用) などが一般的な例になります。さらに、source などのサブ要素は、指定されるタイプに応じて必要になります。ただし、target サブ要素は不要です (キャラクターデバイスのコンシューマーが、ゲスト仮想マシン内に表示されるデバイスではなく、ハイパーバイザー自体であるため)。
各モードはオプションのサブ要素 address をサポートします。これは、スマートカードと ccid バスコントローラー間の相関関係を微調整します (「デバイスアドレス」 を参照してください)。