暗号化カスタム・イメージの作成
「 qcow2 」のカスタムイメージが「 IBM Cloud® Virtual Private Cloud 」インフラストラクチャの要件を満たしている場合、そのイメージを暗号化することができます。 以下の手順では、QEMUと独自のパスフレーズを使用して、カスタムイメージをLUKS暗号化で暗号化する方法について説明します。 イメージを暗号化した後、パスフレーズをカスタマー・ルート鍵 (CRK) でラップします。 IBM Cloud VPC に画像をインポートする際、ラップされた(または暗号化された)データ暗号化キーは画像のメタデータと共に保存されます。
暗号化されたカスタム・イメージを作成する簡単な方法は、ボリュームからイメージを使用することです。 この機能を使用して、インスタンスのブート・ボリュームからカスタム・イメージを作成し、お客様管理の暗号化を指定することができます。 詳しくは、ボリュームからのイメージの作成についてを参照してください。
暗号化されたカスタム・イメージをプライベート・カタログやベア・メタル・サーバーで使用することはできません。
詳しくは、 SSH 鍵の概要 を参照してください。
暗号化カスタム・イメージの仕組み
独自のパスフレーズを使用してカスタム・イメージを暗号化したら、そのイメージを IBM Cloud Object Storage にアップロードします。 暗号化したイメージを IBM Cloud VPC にインポートする前に、鍵管理サービス (KMS) をセットアップしてカスタマー・ルート鍵 (CRK) を作成しておく必要があります。 次に、CRKを使用して、イメージの暗号化に使用するパスフレーズを保護してください。 シークレットのパスフレーズを CRK でラップすることで、KMS のいわゆる「ラップされたデータ暗号鍵」(WDEK) を作成できます。 パスフレーズデータをラップすることで、データが暗号化され、安全に保護されるため、パスフレーズを平文で共有する必要が一切なくなります。
イメージをインポートするときに、KMS に保管されているカスタマー・ルート鍵 (CRK) のクラウド・リソース名 (CRN) を指定する必要があります。 また、ラップされたデータ暗号化鍵 (WDEK) の暗号文も指定する必要があります。 パスフレーズは、常に暗号化されて WDEK に保管されます。 暗号化イメージを使用する仮想サーバーを始動したときにのみアンラップされます。
暗号化されたイメージを使用して仮想サーバーをプロビジョンする準備ができたら、暗号化情報は必要ありません。 WDEK および CRK の CRN は、メタデータとしてイメージに一緒に保管されています。 詳しくは、暗号化カスタム・イメージについてを参照してください。
暗号化イメージのプロセスの概要
以下の手順は、暗号化イメージを正常に作成してインポートするために実行する必要があるプロセスを大まかにまとめたものです。 これ以降のセクションで、各手順を実行する方法について詳しく説明します。
- QEMU と任意のパスフレーズを使用して qcow2 ファイルを LUKS 暗号化で暗号化することで、暗号化イメージを作成します。
- 暗号化イメージのファイルを IBM Cloud Object Storage にアップロードします。
- Key Protect を実行し、 お客様 ・ルート・キー(CRK)を作成してから、パスフレーズをその CRK でラップして、ラップされたデータ暗号化キー(WDEK)を生成します。
- IBM Cloud Object Storage からイメージをインポートし、WDEK をデータ暗号化に使用できるようにするには、必要な「 IBM 」 Cloud Identity and Access Management 権限が割り当てられていることを確認してください。
- IBM Cloud VPC にイメージをインポートします。 IBM Cloud Object Storage の場所、 Key Protect に保存されているCRK、およびWDEKの暗号文を指定する必要があります。
イメージを暗号化する
この手順では、QEMU を使用して独自のパスフレーズを指定し、カスタムイメージを LUKS 暗号化で暗号化します。
暗号化するカスタム・イメージは、IBM Cloud VPC インフラストラクチャーのカスタム・イメージの要件を満たしている必要があります。 以下のトピックに記載されている画像準備の要件をすべて満たしていることを確認してください
暗号化タスクを完了するには、 QEMU バージョン 2.12 以降がインストールされている必要があります。
この QEMU の暗号化手順を実行するには、Linux または Windows オペレーティング・システムを使用する必要があります。 Macのオペレーティングシステムはサポートされていません。
QEMU を使用して、カスタムイメージの 2 つ目の暗号化された qcow2 ファイルを作成するには、以下の手順を実行してください。
-
イメージの暗号化に使用する独自のパスフレーズを決定します。 このタスクのサンプル・コマンドでは、パスフレーズ「
abc123」を使用します。 パスフレーズを使用可能にしておきます。 その後、パスフレーズをラップして、ラップされたデータ暗号化キー(WDEK)を作成する必要があります。 その WDEK が、イメージを IBM Cloud VPC にインポートするときに必要になります。 -
以下のコマンドを使用して、現在の qcow2 カスタム・イメージを確認します。
qemu-img info my_100G_custom_image.qcow2この例の場合、以下の出力のような応答が表示されます。
image: my_100G_custom_image.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.28 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false -
まったく同じサイズの空の qcow2 ファイルを新規作成し、LUKS 暗号化を使用して暗号化します。 任意のパスフレーズ (例えば
abc123など) を使用して、ファイルを暗号化します。qemu-img create --object secret,id=sec0,data=abc123 -f qcow2 -o encrypt.format=luks,encrypt.key-secret=sec0 my_100G_custom_image-encrypted.qcow2 100G -
qcow2 の画像(
my_100G_custom_image.qcow2)を、暗号化された画像(my_100G_custom_image-encrypted.qcow2)に変換してください。qemu-img convert --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 --target-image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -n -p -
2 つのファイルを比較して、同じファイルであることを確認します。
qemu-img compare --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -p -
エラーがないかファイルを検査します。
qemu-img check --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2この例の場合、以下の出力のような応答が表示されます。
No errors were found on the image. 16343/1638400 = 1.00% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 1074790400 -
新しい暗号化済みファイルに対して「
info」を実行し、そのサイズと暗号化レベルが想定通りであることを確認してください。qemu-img info my_100G_custom_image-encrypted.qcow2この例の場合、以下の出力のような応答が表示されます。
image: my_100G_custom_image-encrypted.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.27 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
暗号化イメージを IBM Cloud Object Storage にアップロードする
画像ファイルをLUKS暗号化と独自のパスフレーズで暗号化した後、以下の手順に従って IBM Cloud Object Storage にアップロードできます:
- 後で簡単に見つけられるように、カスタマイズしたイメージ・ファイルに記述名を付けてください。
- IBM Cloud Object Storage バケットの**「オブジェクト」ページで、「アップロード」**をクリックします。 200 MB を超えるイメージをアップロードするときには、Aspera 高速転送プラグインを使用すると良いでしょう。
鍵管理サービスと鍵をセットアップする
IBM Cloud Hyper Protect Crypto Services は非推奨となっています。 顧客は既存のインスタンスを2027年3月20日まで使用できる。 詳細については、「 IBM Cloud Hyper Protect Crypto Services の非推奨 」を参照してください。 継続的な保護のため、既存の暗号化キーを専用 Key Protect インスタンスに移行することをご検討ください。 詳細については、「 移行ガイド 」を参照してください。
暗号化されたカスタムイメージを IBM Cloud VPC にインポートするには、 Key Protect が必要です。 カスタマー・ルート鍵 (CRK) とラップされたデータ暗号鍵 (WDEK) も必要です。 WDEKとは、CRKで保護されたイメージを暗号化する際に使用したパスフレーズであり、これにより、そのパスフレーズはあなただけが把握できるようになります。 暗号化イメージを使用する仮想サーバー・インスタンスを始動すると、暗号化イメージにアクセスするために WDEK が使用されます。
以下のリストは、管理上の主要な前提条件をまとめたものです:
- 規定 Key Protect.
- Key Protect にお客様 ・ルート・キー(CRK)をインポートするか、 Key Protect で作成してください。
- イメージの暗号化に使用したパスフレーズをカスタマー・ルート鍵でラップ (保護) して、ラップされたデータ暗号鍵 (WDEK) を作成します。
-
Key Protect サービスをプロビジョンします。
Key Protect サービスインスタンスをプロビジョニングすることで、 お客様暗号化に必要な最新の更新プログラムが確実に適用されます。
-
IBM Key Protect にカスタマー・ルート鍵 (CRK) を 作成または インポートします。
鍵素材の作成と暗号化のオプションの検討によって、鍵のインポートについて事前に計画を立ててください。 セキュリティーを強化するため、鍵素材をクラウドに取り込む前にインポート・トークンを使用して暗号化することによって、鍵素材のセキュアなインポートを可能にすることができます。
お客様 (CRK)の状態は、暗号化されたイメージの可用性に直接影響します。 CRKが一時停止、無効化、または破棄された場合、ラップされたデータ暗号化キー(WDEK)をラップ解除することができず、暗号化されたイメージを使用する仮想サーバーインスタンスは起動できなくなります。 詳細については、「 主要な状態と遷移 」を参照してください。
-
カスタマー・ルート鍵 (CRK) を使用して、イメージを LUKS 暗号化で暗号化するときに使用した独自のパスフレーズをラップ、つまり保護します。 イメージの暗号化の例では、パスフレーズ「
abc123」を使用しました。-
WDEKを生成できるように、 Key Protect のCLIプラグインがインストールされていることを確認してください。 詳しくは、 Key Protect CLI プラグインのインストール を参照してください。
-
CRK でラップするための準備として、パスフレーズを Base64 エンコード方式でエンコードします。 「
abc123」を実際のパスフレーズに置き換えて、以下のコマンドを実行してください。 -n パラメーターは、改行文字をエンコードしないようにするために必要です。改行文字があると、ラップされたパスフレーズが機能しなくなります。
echo -n "abc123"|base64この例の場合、以下の出力のような応答が表示されます。
YWJjMTIzibmcloud kp key wrapコマンドを実行して、エンコードしたパスフレーズを CRK でラップします。 暗号化されたイメージの生成に使用されるパスフレーズは、厳密にはデータ暗号化キーではありませんが、 Key Protect では、データのラップおよびアンラップに関してこの用語が使用されています。 Key Protect から返されるデータは、WDEK と呼ばれます。 詳しくは、kp key wrap を参照してください。
ibmcloud kp key wrap KEY_ID -i INSTANCE_ID -p PLAINTEXTここで、 KEY_ID はラッピングに使用するルートキーの ID、 INSTANCE_ID は Key Protect サービスインスタンスを識別するインスタンス ID、 PLAINTEXT はエンコードされたパスフレーズです。 例えば、 YWJjMTIzです。
この例の場合、以下の出力のような応答が表示されます。
Wrapping key... SUCCESS Ciphertext eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=- WDEK の暗号文を保存 (ストレージに永続化) します。 暗号化したイメージを IBM Cloud VPC にインポートするときに、WDEK の暗号文を指定する必要があります。
-
IAM 許可の前提条件
IBM Cloud Identity and Access Managementで必要な許可を作成したことを確認します。
- IBM Cloud Identity and Access Management (IAM)( 承認を作成する )を介して、 Cloud Block Storage (ソースサービス)と お客様の鍵管理サービス (ターゲットサービス)の間で行われます。 この許可によって、データを暗号化するために WDEK を使用することを IBM Cloud のバックプレーンのサービスに許可します。
- Image Service for VPC と IBM Cloud Object Storage の間の IAM 許可を作成したことを確認します。 ソース・サービスとして**「インフラストラクチャー・サービス」を指定します。 リソース・タイプとして「Image Service for VPC」**を指定します。 ターゲット・サービスとして IBM Cloud Object Storage を指定します。 この承認は、VPC用イメージサービスが IBM Cloud Object Storage にあるイメージにアクセスできるようにするためです。 詳しくは、イメージをインポートするための IBM Cloud Object Storage へのアクセス権限の付与を参照してください。
次のステップ
イメージの暗号化が正常に完了し、 Key Protect の設定が行われ、必要なキーが作成されたら、そのイメージを IBM Cloud VPC に インポート できます。 IBM Cloud VPC でイメージを使用できるようになったら、そのイメージを使用してインスタンスをプロビジョンできます。 画像をインポートするために、 IBM Cloud Object Storage へのアクセス権限が付与されている ことを確認してください。
暗号化イメージを使用して新規仮想サーバー・インスタンスをプロビジョンするときには、暗号化についての情報は必要はありません。 ラップされたデータ暗号鍵 (WDEK) およびカスタマー・ルート鍵 (CRK) の CRN は、メタデータとしてイメージと一緒に保管されています。