Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
仮想化ガイド
  1. 前書き
  2. I 概要
    1. 1 仮想化技術
    2. 2 仮想化シナリオ
    3. 3 Xen 仮想化の紹介
    4. 4 KVM 仮想化の紹介
    5. 5 仮想化ツール
    6. 6 仮想化コンポーネントのインストール
  3. II libvirt を利用した仮想マシンの管理
    1. 7 libvirt デーモン
    2. 8 VM ホストサーバ の準備
    3. 9 ゲストのインストール
    4. 10 基本的な VM ゲスト の管理
    5. 11 接続と認可
    6. 12 高度なストレージ設定
    7. 13 仮想マシンマネージャ を利用した仮想マシンの設定
    8. 14 virsh を利用した仮想マシンの設定
    9. 15 AMD SEV-SNP による仮想マシンのセキュリティ強化
    10. 16 VM ゲスト の移行
    11. 17 Xen から KVM への移行ガイド
  4. III 全ハイパーバイザ共通の機能
    1. 18 ディスクのキャッシュモード
    2. 19 VM ゲスト の時刻設定
    3. 20 libguestfs
    4. 21 QEMU ゲストエージェント
    5. 22 ソフトウエア TPM エミュレータ
    6. 23 VM ゲスト に対するクラッシュダンプの作成
  5. IV Xen を利用した仮想マシンの管理
    1. 24 仮想マシンホストの設定
    2. 25 仮想ネットワーク
    3. 26 仮想環境の管理
    4. 27 Xen 内でのブロックデバイス
    5. 28 仮想化: オプション設定
    6. 29 管理作業
    7. 30 XenStore: ドメイン間で共有される設定データベース
    8. 31 Xen の高可用性仮想化ホストとしての使用
    9. 32 Xen: 準仮想化 (PV) ゲストから完全仮想化 (FV/HVM) ゲストへの変換
  6. V QEMU を利用した仮想マシンの管理
    1. 33 QEMU の概要
    2. 34 KVM VM ホストサーバ の構築
    3. 35 ゲストのインストール
    4. 36 qemu-system-ARCH を利用した仮想マシンの実行
    5. 37 QEMU モニタを利用した仮想マシンの管理
  7. VI トラブルシューティング
    1. 38 内蔵ヘルプとパッケージのドキュメンテーション
    2. 39 システム情報とログの収集
  8. 用語集
  9. A NVIDIA カードに対する GPU パススルー の設定
  10. B GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.7

15 AMD SEV-SNP による仮想マシンのセキュリティ強化 Edit source

概要

AMD 社が提供する Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) を使用することで、お使いの仮想マシンに対するセキュリティを強化することができます。 AMD SEV-SNP 機能は仮想マシンをホストシステムや他の仮想マシンから切り離し、データやコードの保護を提供する仕組みです。この機能ではデータを暗号化するほか、仮想マシン内で実行するコードやデータを検出して追跡する仕組みを備えています。この仕組みにより仮想マシンを分離することができますので、たとえ仮想マシンが不正侵入された場合であっても、他の仮想マシンやホストマシンに影響が無いようにすることができます。

本章では、お使いの AMD EPYC サーバで openSUSE Leap 15.7 を利用した際に、 AMD SEV-SNP 機能を有効化するための手順を説明しています。

概要

注記
注記: openSUSE Leap 15 SP6 では技術プレビューである件について

この機能は openSUSE Leap 15 SP6 での技術プレビューとして提供されているものです。必要なパッケージは既定のインストールではインストールされず、リポジトリも別途設定する必要があることに注意してください。必要なパッケージは Confidential Compute Module として提供されています。

15.1 対応するハードウエア Edit source

AMD SEV-SNP 仮想マシンを実行するには、 AMD 社の EPYC (第 3 世代もしくはそれ以降) を搭載したシステムが必要となります。また、 BIOS 設定でコンフィデンシャル・コンピューティング機能を有効化する設定が提供されている必要もあります。

15.2 Confidential Compute Module の有効化 Edit source

AMD SEV-SNP に必要なパッケージは Confidential Compute Module として提供されています。このモジュールはインストール時に有効化できるほか、 SUSEConnect コマンドラインツールを利用して後から有効化することもできます。

  • モジュールを有効化しているかどうかを確認するには、下記のコマンドを実行します:

    > sudo  suseconnect -l

    上記を実行することにより、利用可能なモジュールとその有効化状態が出力されるほか、有効化するためのコマンドも表示されます。

    Confidential Compute Module が有効化されていない場合は、下記のように出力されます:

    Confidential Computing Technical Preview Module 15 SP6 x86_64
    Activate with: suseconnect -p sle-module-confidential-computing/15.6/x86_64
  • Confidential Compute Module 技術プレビューを有効化するには、下記のコマンドを実行します:

     > sudo  suseconnect -p sle-module-confidential-computing/15.6/x86_64
    Registering system to SUSE Customer Center
    Updating system details on https://scc.suse.com ...
    Activating sle-module-confidential-computing 15.6 x86_64 ...
    Adding service to system ...
    Installing release package ...
    Successfully registered system

    上記のように出力されればモジュールの登録は成功です。あとは必要なパッケージをインストールして設定するだけです。

15.3 パッケージのインストールとシステムの基礎部分の設定 Edit source

Confidential Compute Module では、 AMD SEV-SNP に対応するための代替パッケージを提供しています。また、最大限の互換性を確保するため、下記に示すパッケージはいずれも openSUSE Leap 15.7 のコードストリームをベースにしています。

置き換える必要のあるパッケージは下記のとおりです:

  • Linux カーネル

  • QEMU 仮想マシンモニタ

  • libvirt フレームワーク

  1. パッケージを置き換えながらインストールするには、下記のコマンドを実行します:

    > sudo  zypper install --from SLE-Module-Confidential-Computing-15-SP6-Pool --from SLE-Module-Confidential-Computing-15-SP6-Updates qemu-ovmf-x86_64 libvirt kernel-coco

    パッケージの置き換えが完了したら、あとは AMD SEV-SNP を使用するための設定変更を実施します。ホスト側では、非パススルーモードで IOMMU を設定しなければなりません。これは、周辺機器から暗号化されたゲストに属するメモリに対して、書き込みを防止し、データの破壊を防ぐために必要な措置となります。 openSUSE Leap 15.7 での既定値は passthrough (パススルー) になっています。

  2. openSUSE Leap 15.7 で IOMMU の設定を無効化するには、 /etc/default/grub ファイルを開いて、 GRUB_CMDLINE_LINUX_DEFAULT 変数内に iommu=nopt を追加します。

  3. 設定変更後はブートローダの設定を更新します。下記のコマンドを実行してください:

    > sudo ; update-bootloader
  4. あとはシステムを再起動することで、 Confidential Compute Module が有効化されたカーネルを起動することができます。なお、ブートローダ側の設定で既定のカーネルとして選択されていない場合は、起動メニューで選択しておいてください。

15.4 設定の確認 Edit source

次にインストールの確認とパッケージの設定を行います。

  1. まずは新しいカーネルで起動していることを確認します。 uname -r コマンドを実行して、下記のように出力されていることを確認します。

    > sudo  uname -r 6.4.0-150616.coco15sp6-coco

    上記のように coco というタグが表示されていることを確認してください。

  2. また、カーネルの起動時に AMD Secure Processor の初期化結果が出力されていることを確認します。下記のようにコマンドを実行して確認してください:

    > sudo  dmesg | grep -i ccp
    [ 10.103166] ccp 0000:42:00.1: enabling device (0000 -> 0002)
    [ 10.114951] ccp 0000:42:00.1: no command queues available
    [ 10.127137] ccp 0000:42:00.1: sev enabled
    [ 10.133152] ccp 0000:42:00.1: psp enabled
    [ 10.240817] ccp 0000:42:00.1: SEV firmware update successful
    [ 11.128307] ccp 0000:42:00.1: SEV API:1.55 build:8
    [ 11.135057] ccp 0000:42:00.1: SEV-SNP API:1.55 build:8

    上記のように SEV-SNP API のバージョン文字列が表示されていれば、 AMD Secure Processor の準備ができたことになります。なお、上記のように表示されていない場合は、 BIOS 設定が正しくないか、 IOMMU の設定が更新されていないものと考えられます。

15.5 AMD SEV-SNP 仮想マシンの起動 Edit source

Confidential Compute Module が有効化されたカーネルを利用して起動し、 AMD セキュリティプロセッサが初期化されていれば、あとは libvirt フレームワーク内で仮想マシンを実行することで、 AMD SEV-SNP で保護された仮想マシンを起動することができます。

libvirt では新しい仮想マシンを設定するにあたって複数の方法が提供されています。本文書では、 virt-manager グラフィカルユーザインターフェイスを利用してディスクイメージの作成から仮想マシンの作成までを実施するものとします。

  1. virt-manager を利用して AMD EPYC ホストに接続し、新しい仮想マシンを作成します。

  2. 新しい仮想マシンの作成ウインドウ内では、それぞれ下記を選択します:

    • まずはインストールしたいオペレーティングシステムを選択します。

    • ISO イメージまたは CD-ROM インストールメディアを選択します。

    • メモリや CPU の設定を実施します。

    • あとは必要なストレージ設定を実施します。

  3. 手順の 5 番目では、設定内容を確認したあと、 インストールの前に設定をカスタマイズする を選択します。

    インストールの前に設定をカスタマイズする の選択
    図 15.1: 仮想マシンの作成
  4. 完了 を押します。

  5. 仮想マシンの設定ウインドウでは、 XML タブを選択します。

    XML タブでは libvirt が使用する仮想マシンの XML 設定を直接編集することができます。

    XML タブの選択
    図 15.2: 仮想マシン設定の XML ビュー
  6. AMD SEV-SNP で仮想マシンを保護するには、下記のようにして os セクション内で適切なファームウエアを選択する必要があります:

    ファームウエアの設定
    図 15.3: ファームウエアの設定

    loader 内で OVMF の SEV 対応版を設定してください。

  7. また、 launchSecurity セクションを追加する必要があります。 AMD SEV-SNP の場合は、下記のようになります:

    launchSecurity の追加
    図 15.4: launchSecurity
  8. 設定が終わったら 適用 を押し、 詳細 タブを選択します。

  9. 左側の一覧で CPU 数 を選択して、 CPU の 種類host-model に変更します:

    CPU 種類の選択
    図 15.5: 仮想マシン設定の 詳細 ビュー
  10. 適用 ボタンを押し、 インストールの開始 を押します。

    これにより仮想マシンを起動することができます。後は必要に応じてインストールを実施してください。インストール後は再度仮想マシンを起動して、 AMD SEV-SNP による保護が動作しているかどうかを確認します。

15.6 AMD SEV-SNP 仮想マシンの確認 Edit source

仮想マシンの実行状態だけではコンフィデンシャル・コンピューティングが有効化されているかどうかがわかりません。代わりに仮想マシン内で確認する方法がいくつか提供されています。

カーネルログから確認する場合は、下記のようなコマンドを実行します:

> sudo  dmesg | grep -i sev-snp
[ 1.986186] Memory Encryption Features active: AMD SEV SEV-ES SEV-SNP

カーネルログ内にメモリの暗号化機能として SEV-SNP が表示されていれば、コンフィデンシャル・コンピューティングが動作していて、仮想マシンに対してそれが有効化されていることがわかります。

AMD SEV-SNP 環境でセキュリティを証明するための、暗号方式として安全な方法もあります。

このページを印刷