copyright: years: 2023, 2026 lastupdated: "2026-08-13"

keywords: Hyper Protect Virtual Servers for VPCのデータセキュリティ、BYOK(Bring Your Own Key)、KMS(キー管理サービス)、 Hyper Protect Crypto Services

subcollection: vpc


Hyper Protect Virtual Servers for VPC におけるデータの保護

VPC の IBM Cloud Hyper Protect Virtual Servers は非推奨。 2026年2月28日現在、新しいインスタンスを作成することはできない。 既存のインスタンスは、2027年2月20日までサポートされます。 その日付にまだ存在するインスタンスはすべて削除されます。 IBM Confidential Computing Container Runtime(旧称: Hyper Protect Virtual Servers )または IBM Confidential Computing Container Runtime for Red Hat Virtualization Solutions(旧称:Hyper Protect Container Runtime for Red Hat Virtualization Solutions )を使用して、ワークロードを再デプロイできます。 データ移行については、 移行ガイドを 参照してください。 詳しくは、 サービス廃止のお知らせを ご覧ください。

Hyper Protect Virtual Servers for VPC インスタンスに接続するデータボリュームは、 Linux 統一キー設定(LUKS)暗号化パスフレーズによって保護されます。 パスフレーズは、デプロイ時に提供されたシードから導出されます。 Hyper Protect Crypto Services からご自身の鍵を使用することで、保存中のデータに対してより高度な暗号化保護と制御を追加できます。

データ・ボリュームの暗号化方法

独自の鍵を 使用しない 場合、インスタンスに接続するデータ・ボリュームは、契約の workload- volumes セクションおよび env- volumes セクションで提供される 2 つの シードを使用して自動的に暗号化されます。 シードは内部的に UTF8 シーケンスに変換され、連結されます。 連結されたシーケンスのハッシュ値( SHA256 )は16進ダイジェストとして計算され、データボリュームを暗号化するためのLUKSパスフレーズとして使用される。 詳細については、 「契約について」 をご覧ください。

独自の鍵を使用した機密データの保護

開始時点から ibm-hyper-protect-container-runtime-1-0-s390x-11、 Hyper Protect Virtual Servers VPCサポートはキー管理サービス(KMS)との統合をサポート Hyper Protect Crypto Servicesします。 Hyper Protect Crypto Services 生成されたランダム値を第3のシードとして使用し、これをラップします CRK( お客様ルートキー)。 CRK について詳しくは、 ルート鍵 を参照してください。 ラップされたシードは、データ・ボリュームのメタデータ・パーティションに保管されます。 LUKS パスフレーズは、メタデータ・パーティション内のシード (最初にアンラップされたもの) とコントラクトからの 2 つのシードの 3 つ のシードを使用して生成されます。

背景知識 :HPCRイメージバージョンから ibm-hyper-protect-container-runtime-1-0-s390x-9、VPCインスタンス向けの新しい Hyper Protect Virtual Servers では、データボリュームが2つの部分に分割されます。 最初のパーティション(100 MiB )は内部メタデータ専用に予約されています(ワークロードによるアクセスは不可 )。 2番目のパーティションはワークロード用のデータボリュームとして残ります。 新規ボリュームのみがパーティション化されます。

鍵管理サービスとの統合
鍵管理サービスとの統合

現在、キー管理サービスとしてサポートされているのは Hyper Protect Crypto Services のみです。

以下の表は、種子の概要です。 3 番目のシードは、鍵管理サービスによって提供されるシードです。

LUKS暗号化パスフレーズの生成に使用されるシード
シード プロバイダー 差出人 必須またはオプション
seed1 デプロイヤー・ペルソナ env-契約の volumes セクション 必須
seed2 ワークロード・ペルソナ workload-契約の volumes セクション 必須
seed3 Hyper Protect Crypto Services Hyper Protect Crypto Services 契約書に詳細が記載されている kms 場合に限り、第三のシードを生成し、それをCRKでラップする。 封筒暗号化は、ラップAPIを呼び出すことで行われます。 ラップされたシードは、データ・ボリュームのメタデータ・パーティションに保管されます。 オプション

LUKS パスフレーズの生成
LUKS パスフレーズの生成

鍵デーモンは、ボリュームが KMS インスタンスから保護されている場合に開始されます。 CRKの状態変化に対応する役割を担っている。

カスタマー・マネージド・キーについて

Hyper Protect Virtual Servers VPCでは 、エンベロープ暗号化データ暗号鍵を使用してデータを暗号化し、完全に管理可能なルート・キーを使用して鍵を暗号化するプロセス。を使用してお客様キーを実装します。 「エンベロープ暗号化」とは、ある暗号鍵を別の暗号鍵で暗号化(包み込む)することを指します。 当方の場合、ラッピングされた鍵は3番目のシードであり、シードをラッピングするために使用される鍵は Hyper Protect Crypto Services のCRKである。

Hyper Protect Crypto Services 内の CRK はお客様が所有します。VPC 向けの Hyper Protect Virtual Servers は CRK を一切認識しません。 その保存、管理、およびシードのラップおよびアンラップへの利用は、すべてキー管理サービス内で実行されます。

Hyper Protect Crypto Services FIPS 140-2 レベル4の認証を取得したハードウェアによって支えられており、これは業界のクラウドプロバイダーが提供する中で最高レベルのものです。 詳しくは、Hyper Protect Crypto Services の概説を参照してください。

Hyper Protect Virtual Servers for VPC におけるお客様管理キーの有効化

この機能を有効化できるかどうかは、VPCインスタンスの Hyper Protect Virtual Servers の履歴(パーティションレイアウトとLUKS暗号化)および契約情報によって決まります。 考えられるシナリオと結果については、以下の表を参照してください。 契約の kms 詳細 がわからない場合は、 ステップ の説明を参照してください。 この表は、仮想サーバーの起動時の動作、仮想サーバーに接続されているボリュームの数、および契約ファイルで指定されている入力を示しています。

シナリオ
データ・ボリューム内のパーティションの数 メタデータ・パーティション 契約 パーティション/2 番目のパーティションが LUKS 暗号化されているかどうか Hyper Protect Virtual Servers のVPCにおける動作
0 該当なし kms 詳細あり LUKS 暗号化なし インスタンスはデータボリューム内に2つのパーティションを作成し、 Hyper Protect Crypto Services を呼び出して3つ目のシードを生成し、それをCRKでラップします。 ラップされたシードは、メタデータ・パーティションに保管されます。 その後、インスタンスはシード(最初に展開される)と契約から取得した2つのシードを用いてLUKSパスフレーズを生成し、第二パーティションを暗号化する。
0 該当なし kms 詳細あり LUKS 暗号化 インスタンスはシャットダウンします。 契約内の kms の詳細を削除する必要があります。
1 該当なし サポートされていません。 インスタンスはシャットダウンします。
2 暗号化されたシードなし 詳細あり (1 項目) ( kms D) LUKS 暗号化なし インスタンスは Hyper Protect Crypto Services を呼び出し、第三のシードを生成し、それをCRKでラップする。 ラップされたシードは、メタデータ・パーティションに保管されます。 その後、インスタンスはシード(最初に展開される)と契約から取得した2つのシードを用いてLUKSパスフレーズを生成し、第二パーティションを暗号化する。
2 暗号化されたシードなし 詳細あり (1 項目) ( kms D) LUKS 暗号化 前のものと同様の流れで、2番目のパーティションを再暗号化します。 古い LUKS パスフレーズが置き換えられます。 env と workload の 2 つのシードは以前と同じでなければならず、そうでない場合、再暗号化は失敗し、インスタンスはシャットダウンします。 正しいシードを指定して、再試行してください。
2 暗号化されたシードなし 詳細あり (複数エントリー) ( kms D) LUKS 暗号化なし 前のシナリオと同様のフローで、3 番目のシードをラップし、2 番目のパーティションを暗号化します。 最初のエントリーの構成のみが、3 番目のシードをラップするために使用されます。
2 暗号化されたシードがあります 詳細あり (1 項目) ( kms D) LUKS 暗号化なし 以前のプロビジョニングでボリュームを使用した可能性がありますが、暗号化が正常に完了しなかった可能性があります。 あるいは、ボリュームを2つのパーティションで構成し、 手動でランダムな値を3つ目のシードとして生成し、それをラップしてメタデータパーティションに保存しました。 いずれの場合も、インスタンスはパーティション化が正しいかどうかを検査します。 そうでない場合、インスタンスはシャットダウンします。 パーティション分割が正しい場合、インスタンスは Hyper Protect Crypto Services を呼び出して暗号化されたシードを展開し、そのシードと契約から取得した2つのシードを用いてLUKSパスフレーズを生成し、第二のパーティションを暗号化します。
2 暗号化されたシードがあります 詳細あり (1 項目) ( kms D) LUKS 暗号化 インスタンスは Hyper Protect Crypto Services を呼び出して暗号化されたシードを展開し、データパーティション上のLUKSレイヤーを開きます。
2 暗号化されたシードがあります 詳細あり (複数エントリー) ( kms D) インスタンスは Hyper Protect Crypto Services を呼び出し、最初の kms エントリで暗号化されたシードを展開します。 失敗した場合は、次のエントリーを使用します。 成功すると、最初の構成を使用してシードを再ラップします。 すべての項目が機能しない場合、インスタンスはシャットダウンします。
2 暗号化されたシードがあります kms の詳細はありません インスタンスはシャットダウンします。 契約に kms の詳細を指定する必要があります。

インスタンスがシャットダウンした場合、 IBM Cloud のログを確認してください。

ステップ

  1. Hyper Protect Crypto Services インスタンスを用意し、ルートキーを作成する。 詳しくは、 ルート鍵の作成 を参照してください。

    セキュリティを強化するため、 Hyper Protect Crypto Services では 仮想プライベートエンドポイント の使用が推奨されます。

  2. 契約 書を作成する際は、- env セクション volumes に詳細 kms を追加し、その契約書を使用してVPCインスタンスの Hyper Protect Virtual Serversを作成 してください。 以下の例を参照してください。

    env: |
      logging:
        logRouter:
          hostname: 34be57c7-6ff2-4685-8839-903921e90ab9.ingress.jp-tok.logs.cloud.ibm.com
          iamApiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      volumes:
        test:
          kms:
            - apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
              crn: "crn:v1:bluemix:public:hs-crypto:us-south:a/xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:key:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
              type: "public"
            - apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
              crn: "crn:v1:bluemix:public:hs-crypto:us-south:a/xxxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx:key:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
              type: "private"
          seed:"workload_phrase1"
          kmsTimeout: 10
          apiKey: "L4SsSE32xxxxxjAgfHCVkdW8xl_CiqMn4Lpc1dzTD"
      signingKey: "xxxxxxxxx"
    workload: |
      volumes:
        test:
          mount: "/mnt/data"
          seed: "workload_phrase2"
          filesystem: "ext4"
    

攻撃者による KMS の詳細の誤用を回避するために、( env セクションを提供する) デプロイヤーが契約を 暗号化 し、 署名 することを強くお勧めします。 暗号化について詳しくは、 契約の暗号化 を参照してください。 署名については、公開署名鍵 (signingKey フィールド) を env セクションに追加し、 envWorkloadSignature セクションを契約に追加して契約全体に署名します。 署名の目的は、および env``workload セクションが常に組み合わせて使用され、第三者による改ざんを受けないことを保証することである。 詳しくは、 契約署名 を参照してください。

  • kms

    kms フィールドには、最初の項目として使用する KMS 構成を必ず入力してください。 以下の項目は、古い KMS 構成です (現在の構成にマイグレーションする前に、ラップされたシードを暗号化解除するために使用されます)。 最大 5 つの項目がサポートされます。 KMS構成の変更に関する詳細については、 「別の Hyper Protect Crypto Services インスタンスまたはルートキーへの変更」 を参照してください。

    契約の kms の詳細が有効でない場合、インスタンスは即時にシャットダウンします。

  • kmsTimeout

    契約で kmsTimeout (0 分から 1000 分の間) を指定できます。 指定しない場合、デフォルトのタイムアウト値は 10 分です。 この値は、インスタンスが初期起動または再起動時にシードの展開を試行する時間を決定します。 このタイムアウトが経過すると、メッセージがログに記録され、インスタンスがシャットダウンします。

  • type

    このフィールドを使用して、インスタンスがプライベート・ネットワーク内にある場合は「プライベート」、パブリック・ネットワーク内にある場合は「パブリック」として指定します。 このエントリは、別の Hyper Protect Crypto Services インスタンスまたはCRKへの切り替えをサポートするために使用されます。

ボリュームが新規の場合、インスタンスはデータボリューム内に2つのパーティションを作成し、 Hyper Protect Crypto Services を呼び出して3つ目のシードを生成し、それをCRKでラップします。 ラップされたシードは、メタデータ・パーティションに保管されます。 その後、インスタンスはシード(最初に展開される)と契約から取得した2つのシードを用いてLUKSパスフレーズを生成し、第二パーティションを暗号化する。

また、ボリューム内に 2 つのパーティションを 手動で 作成し、3 番目のシードとしてランダム値を作成し、ラップしてメタデータ・パーティションに保管することもできます。

  1. Linuxユーティリティを使用して、ブロックデバイス上に parted 2つのパーティションを作成する。

    • 第1パーティションは とラベル付けされ、長 metadata さは100です。 MiB。 メタデータパーティションは内部メタデータ専用に予約されており、ワークロードによるアクセスは許可されません。 ファイルシステムを作成します( ext4 )。 keyfile という名前のファイルを作成します。
    • 第2パーティションは data
  2. Hyper Protect Crypto Services KMS API を使用して、HSM に根ざしたランダムなプレーンテキストを生成する キーをラップし、その値を渡すことなくラップします。

  3. 応答オブジェクトから暗号文をキーファイルにコピーする。

  4. KMS情報を含む契約を準備し、ラップされたシードを含む手動パーティション分割ボリュームを備えたVPCインスタンス用の Hyper Protect Virtual Servers を作成する。

インスタンスが実行中である場合、キーデーモンは定期的に Hyper Protect Crypto Services インスタンスに接続します。 同じタイムアウト kmsTimeout が適用されます。 Hyper Protect Crypto Services インスタンスに到達できない場合、CRKの状態が正常でない Active 場合、またはアクセスパラメータ(kms 詳細)が一致しなくなった場合、デーモンは再起動をトリガーします。

インスタンスがシャットダウンした場合は、 Log Analysis のログを確認してください。

VPC向け Hyper Protect Virtual Servers におけるお客様キーの取り扱い

ルート鍵のローテート

CRK が 手動で または 鍵ローテーション・ポリシー に基づいて自動的にローテートされる場合、鍵デーモンは鍵ローテーションを検出し、シードを再ラップします。

別の Hyper Protect Crypto Services インスタンスまたはルートキーへの変更

別の Hyper Protect Crypto Services インスタンスまたは別のルートキーIDを使用したい場合は、新しいKMS構成を契約の最初のエントリとして設定し、 Hyper Protect Virtual Servers インスタンスを再作成してください。 契約書には、現在使用されている古いKMS設定をそのまま維持する。 インスタンス化時、VPC向け Hyper Protect Virtual Servers は暗号化されたシードを旧設定で展開し、新設定を用いてシードを再包装する。 契約では、最大 5 つのエントリーがサポートされます。

変更が行われた後、古いエントリーを次の対話から削除できます。

ルート鍵の無効化

ルート鍵を無効にする と、鍵の状態は 「中断状態」 になります。 Hyper Protect Virtual Servers のVPC向けキーデーモンは、CRKの状態を定期的に確認します。 状態がアクティブでない場合、仮想サーバーは再起動します。 再起動中、キーデーモンはポーリングによって状態を継続的に確認し、その処理時間がを超過した場合 kmsTimeout、仮想サーバーはシャットダウンする。 鍵を 「アクティブ」 に戻すには、 ルート鍵を有効にする 必要があります。

CRK の有効期限が切れていないことを確認してください。 そうでない場合、その状態は非アクティブになり、仮想サーバーは再起動し、最終的にシャットダウンします。 主要な状態に関する詳細については、「 暗号化キーのライフサイクルの監視」を 参照してください。