18.8. IBM Z での IBM Secure Execution の設定


IBM Z ハードウェアを使用して RHEL 10 ホストを実行する場合、仮想マシンに対して IBM Secure Execution 機能を設定することで、仮想マシン (VM) のセキュリティーを強化できます。

IBM Secure Execution (Protected Virtualization とも呼ばれる) は、ホストシステムが仮想マシンの状態とメモリーのコンテンツにアクセスできないようにします。その結果、ホストが危険にさらされても、ゲストオペレーティングシステムを攻撃するベクトルとして使用できません。さらに、Secure Execution を使用すると、信頼できないホストが仮想マシンから機密情報を取得するのを防ぐことができます。

IBM Secure Execution を有効にすることで、IBM Z ホスト上の既存の仮想マシンを安全な仮想マシンに変換できます。

重要

実稼働環境を保護するには、ワークロードをさらに保護する方法を説明している Secure Execution を使用したワークロードの完全な保護に関する IBM ドキュメント を参照してください。

18.8.1. 手動で IBM Secure Execution 用に仮想マシンを設定する

ゲスト仮想マシンに手動でログインし、ゲストオペレーティングシステム内で設定手順を実行することで、IBM Secure Execution を設定できます。この方法は、設定プロセスを直接制御できるため、セットアップの各ステップを検証する必要がある実稼働環境に適しています。

重要

実稼働環境を保護するには、ワークロードをさらに保護する方法を説明している Secure Execution を使用したワークロードの完全な保護に関する IBM ドキュメント を参照してください。

前提条件

  • システムハードウェアに以下のいずれかを使用している。

    • IBM z15 以降
    • IBM LinuxONE III 以降
  • Secure Execution 機能がお使いのシステムで有効になっている。確認するには、次のコマンドを実行します。

    # grep facilities /proc/cpuinfo | grep 158

    このコマンドで出力が表示された場合には、お使いの CPU は Secure Execution と互換性があります。

  • カーネルに Secure Execution のサポートが含まれている。これを確認するには、次のコマンドを実行します。

    # ls /sys/firmware | grep uv

    このコマンドで出力が表示された場合には、カーネルで Secure Execution がサポートされています。

  • ホストの CPU モデルに unpack 機能が含まれている。これを確認するには、次のコマンドを実行します。

    # virsh domcapabilities | grep unpack
    <feature policy='require' name='unpack'/>

    このコマンドで上記の出力が表示された場合には、お使いの CPU ホストモデルは Secure Execution と互換性があります。

  • 仮想マシンの CPU モードが host-model に設定されている。

    # virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"

    このコマンドで出力が表示された場合には、仮想マシンの CPU モデルは正しく設定されています。

  • genprotimg パッケージがホストにインストールされている必要がある。

    # dnf install genprotimg
  • ホストから直接仮想マシンイメージを変更する場合に備えて、guestfs-tools パッケージがホストにインストールされています。

    # dnf install guestfs-tools
  • IBM Z のホストキーのドキュメントを取得および確認している。詳細は、IBM ドキュメントの Verifying the host key document を参照してください。

手順

  1. ホストのブート設定に prot_virt=1 カーネルパラメーターを追加します。

    # grubby --update-kernel=ALL --args="prot_virt=1"
  2. ブートメニューを更新します。

    # zipl

  3. virsh edit を使用して、セキュリティー保護する仮想マシンの XML 設定を変更します。
  4. <launchSecurity type="s390-pv"/></devices> 行の下に追加します。以下に例を示します。

    [...]
        </memballoon>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>
  5. 設定の <devices> セクションに virtio-rng デバイス (<rng model="virtio">) が含まれている場合は、<rng> </rng> ブロックのすべての行を削除します。
  6. オプション: 保護対象の仮想マシンが 32 GiB 以上の RAM を使用している場合は、ホスト上の XML 設定の <features></features> セクションに <async-teardown enabled='yes'/> 行を追加します。

    これにより、そのような Secure Execution ゲストの再起動または停止のパフォーマンスが向上します。

  7. 保護対象の仮想マシンにログインし、パラメーターファイルを作成します。以下に例を示します。

    # touch ~/secure-parameters
  8. ゲストオペレーティングシステムの /boot/loader/entries ディレクトリーで、最新バージョンのブートローダーエントリーを特定します。

    # ls /boot/loader/entries -l
    [...]
    -rw-r--r--. 1 root root  281 Oct  9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
  9. ゲストオペレーティングシステムで、ブートローダーエントリーのカーネルオプションの行を取得します。

    # cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options
    options root=/dev/mapper/rhel-root
    rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
  10. ゲストオペレーティングシステムで、オプションの行の内容と swiotlb=262144 を作成済みのパラメーターファイルに追加します。

    # echo "root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
  11. ゲストオペレーティングシステムで、新しい IBM Secure Execution イメージを生成します。

    たとえば、以下は secure-parameters ファイル、/boot/initramfs-4.18.0-240.el8.s390x.img 初期 RAM ディスクファイル、および HKD-8651-000201C048.crt ホストキードキュメントを使用して、/boot/vmlinuz-4.18.0-240.el8.s390x イメージをもとに、セキュアなイメージ (/boot/secure-image) を作成します。

    # genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image

    genprotimg ユーティリティーを使用すると、カーネルパラメーター、初期 RAM ディスク、ブートイメージを含む、セキュアなイメージが作成されます。

  12. 仮想マシンのブートメニューを更新して、セキュアなイメージから起動します。さらに、initrd および options で始まる行は必要ないため削除します。

    たとえば、RHEL 8.3 仮想マシンでは、/boot/loader/entries/ ディレクトリーでブートメニューの編集が可能です。

    # cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
    title Red Hat Enterprise Linux 8.3
    version 4.18.0-240.el8.s390x
    linux /boot/secure-image
    [...]
  13. ゲストオペレーティングシステムで起動可能なディスクイメージを作成します。

    # zipl -V
  14. ゲストオペレーティングシステムで、元の保護されていないファイルをセキュアに削除します。以下に例を示します。

    # shred /boot/vmlinuz-4.18.0-240.el8.s390x
    # shred /boot/initramfs-4.18.0-240.el8.s390x.img
    # shred secure-parameters

    元のブートイメージ、初期 RAM イメージ、およびカーネルパラメーターファイルは保護されていません。削除しない場合には、Secure Execution が有効になっている仮想マシンで、ハッキングまたは機密データマイニングの攻撃を受ける可能性があります。

検証

  • ホストで、virsh dumpxml ユーティリティーを使用して、セキュアな仮想マシンの XML 設定を確認します。設定には <launchSecurity type="s390-pv"/> 要素を含み、<rng model="virtio"> 行は使用しないでください。

    # virsh dumpxml vm-name
    [...]
      <cpu mode='host-model'/>
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' cache='none' io='native'>
          <source file='/var/lib/libvirt/images/secure-guest.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='network'>
          <source network='default'/>
          <model type='virtio'/>
        </interface>
        <console type='pty'/>
        <memballoon model='none'/>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>

18.8.2. ホストから IBM Secure Execution 用に仮想マシンを設定する

guestfs-tools パッケージを使用すると、ホストから直接 IBM Secure Execution を設定できます。仮想マシンを起動する必要はありません。ただし、この方法は、複数の仮想マシンを迅速に設定したり、セットアッププロセスを自動化したりする必要があるテスト環境や開発環境にのみ適しています。

重要

実稼働環境を保護するには、ワークロードをさらに保護する方法を説明している Secure Execution を使用したワークロードの完全な保護に関する IBM ドキュメント を参照してください。

前提条件

  • システムハードウェアに以下のいずれかを使用している。

    • IBM z15 以降
    • IBM LinuxONE III 以降
  • Secure Execution 機能がお使いのシステムで有効になっている。確認するには、次のコマンドを実行します。

    # grep facilities /proc/cpuinfo | grep 158

    このコマンドで出力が表示された場合には、お使いの CPU は Secure Execution と互換性があります。

  • カーネルに Secure Execution のサポートが含まれている。これを確認するには、次のコマンドを実行します。

    # ls /sys/firmware | grep uv

    このコマンドで出力が表示された場合には、カーネルで Secure Execution がサポートされています。

  • ホストの CPU モデルに unpack 機能が含まれている。これを確認するには、次のコマンドを実行します。

    # virsh domcapabilities | grep unpack
    <feature policy='require' name='unpack'/>

    このコマンドで上記の出力が表示された場合には、お使いの CPU ホストモデルは Secure Execution と互換性があります。

  • 仮想マシンの CPU モードが host-model に設定されている。

    # virsh dumpxml <vm_name> | grep "<cpu mode='host-model'/>"

    このコマンドで出力が表示された場合には、仮想マシンの CPU モデルは正しく設定されています。

  • genprotimg パッケージがホストにインストールされている必要がある。

    # dnf install genprotimg
  • ホストから直接仮想マシンイメージを変更する場合に備えて、guestfs-tools パッケージがホストにインストールされています。

    # dnf install guestfs-tools
  • IBM Z のホストキーのドキュメントを取得および確認している。詳細は、IBM ドキュメントの Verifying the host key document を参照してください。

手順

  1. ホストのブート設定に prot_virt=1 カーネルパラメーターを追加します。

    # grubby --update-kernel=ALL --args="prot_virt=1"
  2. ブートメニューを更新します。

    # zipl

  3. virsh edit を使用して、セキュリティー保護する仮想マシンの XML 設定を変更します。
  4. <launchSecurity type="s390-pv"/></devices> 行の下に追加します。以下に例を示します。

    [...]
        </memballoon>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>
  5. 設定の <devices> セクションに virtio-rng デバイス (<rng model="virtio">) が含まれている場合は、<rng> </rng> ブロックのすべての行を削除します。
  6. オプション: 保護対象の仮想マシンが 32 GiB 以上の RAM を使用している場合は、ホスト上の XML 設定の <features></features> セクションに <async-teardown enabled='yes'/> 行を追加します。

    これにより、そのような Secure Execution ゲストの再起動または停止のパフォーマンスが向上します。

  7. ホスト上で、ホストキードキュメントを含み、かつ Secure Execution を使用するように既存の仮想マシンを設定するスクリプトを作成します。以下に例を示します。

    #!/usr/bin/bash
    
    echo "$(cat /proc/cmdline) swiotlb=262144" > parmfile
    
    cat > ./HKD.crt << EOF
    -----BEGIN CERTIFICATE-----
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    1234569901234569901234569901234569901234569901234569901234569900
    xLPRGYwhmXzKDg==
    -----END CERTIFICATE-----
    EOF
    
    version=$(uname -r)
    
    kernel=/boot/vmlinuz-$version
    initrd=/boot/initramfs-$version.img
    
    genprotimg -k ./HKD.crt -p ./parmfile -i $kernel -r $initrd -o /boot/secure-linux --no-verify
    
    cat >> /etc/zipl.conf<< EOF
    
    [secure]
    target=/boot
    image=/boot/secure-linux
    EOF
    
    zipl -V
    
    shutdown -h now
  8. 仮想マシンがシャットダウンしていることを確認します。
  9. ホスト上で、guestfs-tools を使用して既存の仮想マシンイメージにスクリプトを追加し、そのスクリプトを 初回起動時に実行 するように指定します。

    # virt-customize -a <vm_image_path> --selinux-relabel --firstboot <script_path>
  10. 追加したスクリプトを使用して、イメージから仮想マシンを起動します。

    スクリプトは初回起動時に実行され、続いて仮想マシンを再度シャットダウンします。その結果、仮想マシンは、対応するホストキーを持つホスト上の Secure Execution で実行するように設定されます。

検証

  • ホストで、virsh dumpxml ユーティリティーを使用して、セキュアな仮想マシンの XML 設定を確認します。設定には <launchSecurity type="s390-pv"/> 要素を含み、<rng model="virtio"> 行は使用しないでください。

    # virsh dumpxml vm-name
    [...]
      <cpu mode='host-model'/>
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' cache='none' io='native'>
          <source file='/var/lib/libvirt/images/secure-guest.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='network'>
          <source network='default'/>
          <model type='virtio'/>
        </interface>
        <console type='pty'/>
        <memballoon model='none'/>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る