2.2. クライアントアクセス制御

libvirt のクライアントアクセス制御フレームワークでは、システム管理者は複数のクライアントユーザー、管理オブジェクト、および API 操作に対する細かい権限のルールを設定できます。これにより、クライアントの接続を最小限の特権セットに制限できます。
デフォルトの設定では、libvirtd デーモンは、アクセス制御のレベルが 3つあります。
  1. すべての接続は認証されていない状態で開始します。ここで許可される唯一の API 操作は、認証を完了するために必要なものです。
  2. 認証が成功すると、接続がすべての libvirt API コールへの無制限なフルアクセスがあるか、「読み取り専用」の操作に限定されます。これは、クライアント接続が開始したソケットによって異なります。
  3. アクセス制御フレームワークには、認証された接続は、管理者により定義されるきめ細かなアクセス許可のルールを持つことができます。
libvirt のすべての API 呼び出しには、使用されるオブジェクトに対して検証される一連のアクセス権があります。さらに、特定のフラグが API 呼び出しに設定されているかについてアクセス権のチェックが行われます。API 呼び出しに渡されるオブジェクトのチェックのほかにも、一部のメソッドは結果をフィルタリングします。

2.2.1. アクセス制御ドライバー

アクセス制御フレームワークは、今後追加される任意のアクセス制御技術との統合を可能にするためにプラグ可能なシステムとして設計されています。デフォルトでは、ドライバーは使用されません。そのため、アクセス制御のチェックは実行されません。現在、libvirt は polkit を実際のアクセス制御ドライバーとして使用するためのサポートを提供します。polkit アクセス制御ドライバーの使用方法は、設定ドキュメント を参照してください。
アクセス制御ドライバーは、/etc/libvirt/libvirtd.conf パラメーターを使用して libvirtd.conf 設定ファイルで設定されます。このパラメーターは、さまざまなアクセス制御ドライバー名を受け入れます。複数のアクセス制御ドライバーが必要とされる場合は、すべてのアクセス制御ドライバーのアクセスが付与されるようにそれらが処理される必要があります。「polkit」をドライバーとして有効にするには、augtool コマンドを実行します。
# augtool -s set '/files/etc/libvirt/libvirtd.conf/access_drivers[1]' polkit
ドライバーをデフォルト (アクセス制御なし) に戻すには、以下のコマンドを入力します。
# augtool -s rm /files/etc/libvirt/libvirtd.conf/access_drivers
libvirtd.conf への変更を適用すると、libvirtd サービスを再起動します。
# systemctl restart libvirtd.service

2.2.2. オブジェクトおよびアクセス権

libvirt は、アクセス制御を、その API の主なオブジェクトタイプのすべてに適用します。それぞれのオブジェクトタイプには、それぞれ一連の権限が定義されます。特定の API 呼び出しについてチェックされる権限を判別するには、該当 API の API 参照マニュアルを参照してください。オブジェクトと権限の詳細の一覧は、libvirt.org を参照してください。

2.2.3. ブロックデバイスをゲストに追加する際のセキュリティー上の懸念事項

  • ホストの物理マシンで fstab ファイル、initrd ファイル、またはカーネルコマンドラインでファイルシステムを特定する場合は、ファイルシステムのラベルを使用でください。ゲストの仮想マシンは、ホストの物理マシンに属するファイルシステムのラベルを潜在的に自身のブロックデバイスストレージに書き込むことができるため、それを行うには、ゲストの仮想マシンに、パーティションまたは LVM ボリュームに対する書き込みアクセスがある場合のセキュリティーリスクが発生します。ホストの物理マシンの再起動時に、ホストの物理マシンが、ホストの物理マシンが、このゲストの仮想マシンのディスクをシステムディスクとして誤って使用してしまう可能性があり、ホストの物理マシンシステムが危険にさらされる可能性があります。
    /etc/fstab ファイル、/dev/initrd ファイル、またはカーネルコマンドラインでデバイスを識別する場合は、デバイスの UUID を使用することが推奨されます。
  • ゲスト仮想マシンは、ディスク全域、またはブロックデバイス全域 (例: /dev/sdb) に書き込みアクセスを持つべきではありません。ブロックデバイス全域にアクセスを持つゲスト仮想マシンはボリュームラベルを修正できる場合があり、これがホスト物理マシンシステムの攻撃に使用される可能性があります。パーティション (例: /dev/sdb1) または LVM ボリュームを使用して、この問題を回避してください。LVM 管理および設定の例は、「CLI コマンドでの LVM 管理」または「LVM 設定の例」を参照してください。
    /dev/sdb1、または RAW ディスク (例: /dev/sdb) などのパーティションへの RAW アクセスを使用する場合は、global_filter 設定を使用して、安全なディスクのみをスキャンできるように LVM を設定する必要があります。global_filter コマンドを使用しは LVM 設定スクリプトの例は、『論理ボリュームマネージャーの管理』を参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。