LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

Libvirt

libvirtとは、仮想化管理用の共通APIを提供する、レッドハットを中心としたオープンソースプロジェクトである。libvirtは仮想機械の制御を抽象化したライブラリである。本ライブラリの特徴は、サポート範囲が広いことである。サポートしている仮想化は、現在Xen、KVM、QEMU、LXC、OpenVZ、UML、VirtualBox、VMware ESX・GSX・Workstation・Player、Hyper-V、そしてクラスタ管理ソフトOpenNebulaである。更なる対象VM拡大を目指してたとえば、対応やLinux-VServerのサポートをどうするかなどが開発者メーリングリスト上で議論された。また、さまざまな版数でのサポートも特徴である。たとえば、Xenのリリースされたさまざまな版(たとえば、Xen3.1.0やXen3.0.3など)で、動作する。また、UNIX系OSだけでなく、Windows上でもMinGWやCygwinを使えば動作する。libvirt 自体が多くの種類の仮想化をサポートしていても、必ずしも、libvirt を利用しているアプリケーションが全ての仮想化をサポートしているというわけではなく、KVM や Xen などが libvirt を利用しているアプリケーションのサポートの中心となっている。また、ハードウェアプラットフォームに着目すると、CPUの場合、x86, x86-64, IA64, Powerなどをサポートしており、ビット(32/64)およびエンディアンを問わない。このような幅広いサポートを行っているため、仮想機械を制御するI/Fとしては、事実上の標準の地位を築きつつある。たとえば、RHEL5上で、仮想マシンを管理するためのアプリケーションであるVirtual Machine Managerの実装においても利用されている。本ソフトウェアのライセンスは、LGPLで提供されている。このため、GPLで開発されている、Xenのライブラリ(libxc)に比べて、アプリケーション開発者の視点では使い勝手が良い。標準提供APIは、CとPythonである。またその他の言語(Perl、OCaml、Ruby、Java)のAPIもオプションパッケージで提供されている。また、運用管理の標準インターフェースであるCIMへの対応もIBMを中心にCMPI CIM Providerとしてlibvirt-CIMの開発が進んでいる。なお、CMPIは、Common Manageability Programming Interfaceの略である。セキュリティ拡張として、MACアクセス制御との連携を考えたsVirtが検討されている。本プロジェクトのメンテナーは、Daniel Veillard (通称Daniel)、Daniel Berrange (通称Dan)、Richard W.M.Jones (通称Rich)などRed Hatの開発者である。そのほか、Red Hat以外にもIBMやノベル、富士通の開発者にソースコードの変更権が与えられている。libvirtの実装は、libvirt.cを中心としたソフトウェア構成になっている。libvirtのAPIを利用しているアプリとしては、管理コマンドvirshが提供されている。また、Python Bindingsもlibvirt.cの上位に位置する。一方、各種仮想機械の、制御ドライバは、libvirt.cの下に位置する。たとえば、Xenの制御層の実装では、Xen統合管理層(xen_unified.c)から、それぞれのXenのモジュールを呼び出す形になっている。ハイパーバイザー直接(xen_internal.c)、管理ツールであるXend(xend_internal.c)、管理データベースであるxenstore(xs_internal.c)を呼び出している。また、ネットワーク越しの制御に関するコードは、以下の通りである。クライアント側では、remote_internal.cを介してリクエストを発行する。サーバ側では、libvirtd(コード的には、qemudディレクトリ以下)を介して、libvirtAPIを使って制御をおこなう。libvirtAPIを使う前にクライアント認証を必要とする接続がある。接続で用いるクライアント認証方法は、管理者が選択できる。この選択は、libvirtAPIを用いるアプリケーションに依存せず、統一的に適用される。管理者は、libvirtdの認証方法を、ネットワークソケット毎に設定することが出来る。この設定は、libvirtdの設定ファイル /etc/libvirt/libvirtd.confでおこなう。そして、認証方法は、なし、POLKITそしてSASLの3つから選択することが出来る。さらに、SASL機構は、将来さまざまなオプションを設定できるようになる予定である。libvirtがポリシーキット(PolicyKit)をサポートしていない場合、UNIXドメインソケットに対するアクセス制御は、伝統的なユーザグループアクセス制御によりおこなわれる。2種類のソケットがあり、ひとつは読み書き可能、もう1つは読みのみ可能となっている。読み書きソケットは、アクセス制御が厳しく(0700)、ルートユーザのみが使うことが出来る。読みのみソケットは、アクセス制御がオープン(0777)であり、どのユーザも使うことが出来る。非特権ユーザにより広いアクセスを許可する場合、libvirtd.confファイルを編集しunix_sock_rw_permsに許可権限を設定し、ユーザグループを、unix_sock_groupに設定する必要がある。例えば、前者の属性を0770にして、後者をwheelグループに設定すると、wheelグループの人全員libvirtdにアクセスできることになる。libvirtが、ポリシーキット(PolicyKit)認証をサポートする場合、アクセス制御は、より進んだ形態になる。この場合、unix_sock_authパラメータは、polkitが標準になる。そして、ファイルアクセス権限は、読み書き権限を含め0777になる。クライアントアプリケーションは、PolicyKitと連携してアイデンティティを提供し、ソケットに接続する。現デスクトップセッションのいずれのアプリケーションでも、パスワード認証を行うことが、読み書きソケットの標準ポリシーである。この方法は、sudoコマンドによる認証と似ている。しかし、クライアントアプリケーションは、究極的に特権ユーザ(ルート)として動く必要がない。そして、標準ポリシーでは、読み専用ソケットにどのようなアプリケーションも接続できる。ポリシーは、/etc/PolicyKit/PolicyKit.confに置かれたマスター設定ファイルによって管理者が変更出来る。PolicyKit.conf(5)マニュアルページに設定方法詳細の記述がある。属性として、2つのlibvirtd操作が設定されている。1つは、読み専用のorg.libvirt.unix.monitorである。もう1つは、読み書き可能なorg.libvirt.unix.manageである。例として、fredに読み書き権限を与え、joeには管理者パスワードを認証を要求する例を示す。このアクセス制御をするためには、以下の設定を、PolicyKit.confに追記する必要がある。TCPソケットを平文のまま用いたlibvirtdは、標準でSASLを認証機構として用いる。SASL機構は、標準では、Digest-MD5を用いる。これは、基本的なユーザ名とパスワード形式の認証である。データストリームを暗号化する方法も提供している。このため平文のTCPソケットのセキュリティもTLSソケットを使った場合と同等のセキュリティである。このため、UNIXドメインソケット及びTLSソケットをSASL認証するように設定しておくことは望ましい。この設定は、libvirt.conf設定ファイルのauth_unix_ro, auth_unix_rw, auth_tlsでSASL認証するようにしておく。使い始めの段階では、ユーザアカウントは定義されていない。このためクライアントがTCP接続することが出来ない。ユーザを追加し、設定を行うためには、saslpasswd2コマンドを使う。このコマンドを実行するに当たって、アプリケーションがlibvirtであることを明示的に示す必要がある。この例では、fredをアカウントに追加する例を示している。全アカウントのリストを見るためには、sasldblistuser2コマンドを使う。このコマンドでは、libvirtのユーザデータベースを指定する必要がある。このデータベースは、/etc/libvirt/passwd.dbにある。最後に、ユーザアクセスを停止する場合、saslpasswd2コマンドを再び使う。TCPソケットを平文のまま用いたlibvirtdは、標準でSASLを認証機構として用いる。SASL機構は、標準では、Digest-MD5を用いる。これは、基本的なユーザ名とパスワード形式の認証である。Kerberosのシングルサインオンを有効にするには、libvirt用SASL設定ファイルを変更する必要がある。そのファイルは、/etc/sasl2/libvirt.confである。そして、mech_listパラメータは、digest-md5の代わりにgssapiに変更する必要がある。もし、UNIXドメインソケットやTLSソケットに対してSASLが有効になっている場合、Kerberosは、SASLを使うことが出来る。DIGEST-MD5のように、Kerberos機構は、セッションのデータ暗号化機構を提供する。ディストリビューションによっては、SASL-Kerberosプラグインをデフォルトでインストールしない。この場合、cyrus-sasl-gssapiなどのパッケージをインストールすることが必要になる。Kerberosプラグインがインストールされているかどうか調べるためには、pluginviewerを実行して、gssapiがリストされるか確認する必要がある。次に、Kerberosのレルムの管理者は、プリンシプルをlibvirtサーバ用に発行する必要がある。プリンシプルは、ホスト毎に、libvirtdに対応して一つ割り当てる必要がある。そして、プリンシプルは、libvirt/full.hostname@KERBEROS.REALMと名づける必要がある。この作業は、通常kadmin.localコマンドをKerberosサーバで実行して行われる。しかしながら、Kerberosサーバによっては、サービスプリンシプルを設定するために他の方法が必要な場合もある。一度生成されると、プリンシプルは、キータブとしてエクスポートされる。そして、libvirtd向けには、/etc/libvirt/krb5.tabに設定される。Kerberos認証するlibvirtに接続したいアプリケーションが、ユーザプリンシプルを取得するためにkinitを実行する必要はほとんどない。PAMがKerberos向けに設定されている場合、デスクトップセッションにログインした時点で、自動的に取得しているためである。libvirtのXenドライバーは、3.0.1以降のXenを制御することが出来る。libvirtのXenドライバーは、複数の制御方法の組み合わせでXen仮想機械を制御する。libvirtのQEMUドライバーは、0.8.1以降のQEMUを管理することが出来る。そして、このドライバはQEMUコマンド書式で制御できるいずれのVMにも適用できる。QEMU形式のVMには、KVMとXennerが含まれる。利用する前に必要な条件は以下の通りである。ネットワーク越しのハイパーバイザを管理することが出来る。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。