安全
SPICEクライアントからリモートデスクトップサーバーへの接続は、複数のデータチャネルで構成され、各データチャネルは個別のTCPまたはUNIXソケット接続を介して実行されます。データチャネルは、平文モードまたはTLSモードのいずれかで動作するように指定でき、管理者はセキュリティレベルとパフォーマンスのトレードオフを選択できます。TLSモードでは、データチャネル上で送信されるすべてのトラフィックが強力に暗号化されます。
SPICEプロトコルは暗号化に加えて、認証方式を選択できる機能も備えています。オリジナルのSPICEプロトコルでは、共有シークレットを使用したチケットベースの認証方式が定義されていました。サーバーはRSA公開鍵/秘密鍵ペアを生成し、その公開鍵をクライアントに送信します。クライアントはチケット(パスワード)を公開鍵で暗号化し、その結果をサーバーに送り返します。サーバーはチケットを復号化して検証します。現在のSPICEプロトコルでは、SASL認証プロトコルも使用できるため、 Kerberosをはじめとする、管理者が設定可能な幅広い認証メカニズムをサポートできます。
実装
サーバー側の実装は1つしか存在しないが、SPICEがオープンソース化されて以来、複数のプログラマーがSPICEクライアント側の新しい実装を開発している。
- スパイスプロトコル
- spice-protocolモジュール[ 6 ]は、SPICEワイヤプロトコルのフォーマットを定義します。これはBSDライセンスの下で提供され、LinuxおよびWindowsプラットフォーム間で移植可能です。
- スパイス
- SPICEモジュール[ 7 ]は、SPICEプロトコルのサーバー側のリファレンス実装を提供します。サーバーは動的ライブラリとして提供され、SPICEサーバーを公開したいアプリケーションにリンクできます。2013年現在QEMUはこれを利用して仮想マシン用のSPICEインターフェースを提供します。SPICEのコードベースはLGPL v2+ライセンスで利用可能です。
- spicecという名の、spiceのコードベースの一部であるクライアントは、2014年12月に削除されました。
- spice-gtk
- spice-gtkモジュール[ 8 ]は、 GObject型システムとGTKウィジェットツールキットを使用してSPICEクライアントを実装します。これは、クライアントプロトコルコードを実装する低レベルライブラリspice-client-glibと、GTKを使用してグラフィカルクライアント機能を提供する高レベルウィジェットセットで構成されています。これはLGPLv2+ライセンスで提供され、Linux、OS X、Windowsプラットフォーム間で移植可能です。
- spice-html5
- spice-html5 モジュール[ 9 ]は、 JavaScriptを使用する SPICE クライアントを実装しており、 HTML5をサポートする Web ブラウザ内で実行されることを想定しています。SPICE プロトコルを実装していますが、通常の SPICE サーバーと直接通信することはできません。WebSocket プロキシを介して間接的にサーバーに接続する必要があります。[ 10 ]これは、 GPLv3+および LGPLv3+ ライセンスの組み合わせで提供されています。
アプリケーション
SPICEプロトコルは、KVMコードベースから派生したバージョンにおいて、リモートデスクトップ機能を向上させるために開発された。
- QEMU/KVM
- QEMU のメンテナーは、2010 年 3 月に、すべての QEMU 仮想マシンに SPICE リモート デスクトップ機能を提供するサポートを統合しました。QEMU バイナリは、この機能を提供するために spice-server ライブラリにリンクし、ゲスト OS が SPICE プロトコルが提供するパフォーマンス上の利点を活用できるように、QXL 準仮想化フレームバッファ デバイスを実装しています。ゲスト OS は、QXL と比較するとパフォーマンスは低下しますが、通常のVGA カードを使用することもできます。[ 11 ]
- Xspice
- QXLフレームバッファデバイス用のX.Orgサーバードライバには、SPICEプロトコルを介してディスプレイをエクスポートするXorgサーバーを起動できるラッパースクリプト[12]が含まれています。これにより、QEMU / KVM仮想化を必要とせずに、リモートデスクトップ環境でSPICEを使用できます。
- 仮想ビューア
- このプログラムは、以前のVNC
virt-viewerのサポートに代わり、spice-gtkクライアントライブラリを使用してSPICEで仮想マシンに接続します。 - oVirt
- SPICEはoVirtプライベートクラウド管理ソフトウェアに統合されており、ユーザーはSPICEを介して仮想マシンに接続できます。
参考文献
- ↑ "spice 0.14.4 リリース" . gitlab.freedesktop.org . 2022-10-24に取得.
- ↑ "spice 0.15.1 リリース" . gitlab.freedesktop.org . 2022-10-24に取得.
- ↑ "spice-gtk 0.41 リリース" . gitlab.freedesktop.org . 2022-10-24に取得.
- ↑ 「Red HatがSPICEをオープンソース化」。Red Hat。2009年12月9日。 2013年10月25日取得。
- ↑ 「プロジェクトウェブサイト」 . spice-space.org . 2019年12月25日取得。
- ↑ "spice-protocol GIT リポジトリ" . cgit.freedesktop.org . 2013-10-25に取得.
- ↑ "spice/spice" . cgit.freedesktop.org . 2023年1月5日取得.
- ↑ "spice-gtk GIT リポジトリ" . cgit.freedesktop.org. 2013-10-10 . 2013-10-25に取得.
- ↑ "spice-html5 GIT リポジトリ" . cgit.freedesktop.org . 2013-10-25に取得.
- ↑ GitHub上のwebsockify
- ↑ 「QEMU/KVM仮想マシン」 . pve.proxmox.com . 2023年9月18日取得。
- ↑ "XSpice README" . cgit.freedesktop.org . 2013年10月25日取得.