暗号化カスタム・イメージの作成
IBM Cloud® Virtual Private Cloud インフラの要件を満たす qcow2 カスタム・イメージがあれば、それを暗号化することができます。 以下の手順では、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 にアップロードします。
- 鍵管理サービスをプロビジョンし、カスタマー・ルート鍵 (CRK) を作成してから、パスフレーズをその CRK でラップすることで、ラップされたデータ暗号化鍵 (WDEK) を生成します。
- IBM Cloud Object Storage からイメージをインポートし、WDEK をデータ暗号化に使用できるように、必要な IBM Cloud Identity and Access Management の権限を持っていることを確認してください。
- IBM Cloud VPC にイメージをインポートします。 IBM Cloud Object Storage の場所、KMS に保管されている CRK、および WDEK の暗号文を指定する必要があります。
イメージを暗号化する
このステップでは、QEMUを使用して独自のパスフレーズを指定し、カスタムイメージをLUKS暗号化で暗号化します。
暗号化するカスタム・イメージは、IBM Cloud VPC インフラストラクチャーのカスタム・イメージの要件を満たしている必要があります。 以下のトピックで、画像の準備要件が完了していることを確認してください:
暗号化タスクを完了するには、 QEMU バージョン 2.12 以降がインストールされている必要があります。
この QEMU の暗号化手順を実行するには、Linux または Windows オペレーティング・システムを使用する必要があります。 マックOSには対応していません。
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 VPC にインポートするには、キー管理サービスが必要です。 カスタマー・ルート鍵 (CRK) とラップされたデータ暗号鍵 (WDEK) も必要です。 WDEKは、あなたがCRKで包んだ画像を暗号化するために使用したパスフレーズです。 暗号化イメージを使用する仮想サーバー・インスタンスを始動すると、暗号化イメージにアクセスするために WDEK が使用されます。
非推奨 Hyper Protect Crypto Services は非推奨。 顧客は既存のインスタンスを2027年3月20日まで使用できる。 詳細は の非推奨 IBM Cloud Hyper Protect Crypto Services を参照。 継続的な保護のために、既存の暗号化キーを Dedicated Key Protect インスタンスに移行することをご検討ください。 詳しくは マイグレーションガイドを ご覧ください。
以下のリストは、キーマネジメントの前提条件をまとめたものである:
- サポートされる鍵管理サービス Key Protect または Hyper Protect Crypto Services をプロビジョンします。
- カスタマー・ルート鍵 (CRK) を鍵管理サービスにインポートするか、または鍵管理サービス内で作成します。
- イメージの暗号化に使用したパスフレーズをカスタマー・ルート鍵でラップ (保護) して、ラップされたデータ暗号鍵 (WDEK) を作成します。
以下のサンプル・ステップは Key Protect に固有のものですが、全体的なフローは Hyper Protect Crypto Services にも適用されます。 Hyper Protect Crypto Services を使用している場合は、Hyper Protect Crypto Services 情報で対応する手順を参照してください。
-
Key Protect サービスをプロビジョンします。
Key Protect サービス・インスタンスをプロビジョニングすることで、 お客様暗号化に必要な最新のアップデートが含まれていることを確認できます。
-
IBM Key Protect にカスタマー・ルート鍵 (CRK) を 作成または インポートします。
鍵素材の作成と暗号化のオプションの検討によって、鍵のインポートについて事前に計画を立ててください。 セキュリティーを強化するため、鍵素材をクラウドに取り込む前にインポート・トークンを使用して暗号化することによって、鍵素材のセキュアなインポートを可能にすることができます。
-
カスタマー・ルート鍵 (CRK) を使用して、イメージを LUKS 暗号化で暗号化するときに使用した独自のパスフレーズをラップ、つまり保護します。 イメージの暗号化の例では、パスフレーズ「
abc123」を使用しました。-
WDEK を生成できるように、 Key Protect CLI プラグインがインストールされていることを確認してください。 詳しくは、 Key Protect CLI プラグインのインストール を参照してください。
-
CRK でラップするための準備として、パスフレーズを Base64 エンコード方式でエンコードします。 「
abc123」を実際のパスフレーズに置き換えて、以下のコマンドを実行してください。 -n パラメーターは、改行文字をエンコードしないようにするために必要です。改行文字があると、ラップされたパスフレーズが機能しなくなります。echo -n "abc123"|base64この例の場合、以下の出力のような応答が表示されます。
YWJjMTIz -
ibmcloud kp key wrapコマンドを実行して、エンコードしたパスフレーズを CRK でラップします。 暗号化された画像を生成するために使用されるパスフレーズは、厳密にはデータ暗号化キーではないが、 Key Protect、ラップとアンラップのデータに対して使用される用語である。 Key Protect から返されるデータは、WDEK と呼ばれます。 詳しくは、kp key wrap を参照してください。ibmcloud kp key wrap KEY_ID -i INSTANCE_ID -p PLAINTEXTKEY_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 を指定します。 この認証は、イメージ・サービス for VPC が IBM Cloud Object Storage のイメージにアクセスできるようにするためのものです。 詳しくは、イメージをインポートするための IBM Cloud Object Storage へのアクセス権限の付与を参照してください。
次のステップ
イメージの暗号化に成功し、KMS がセットアップされ、必要な鍵が作成されたら、 IBM Cloud VPC にイメージを インポート することができます。 IBM Cloud VPC でイメージを使用できるようになったら、そのイメージを使用してインスタンスをプロビジョンできます。 イメージをインポートするための IBM Cloud Object Storage へのアクセス権限が付与されている ことを確認します。
暗号化イメージを使用して新規仮想サーバー・インスタンスをプロビジョンするときには、暗号化についての情報は必要はありません。 ラップされたデータ暗号鍵 (WDEK) およびカスタマー・ルート鍵 (CRK) の CRN は、メタデータとしてイメージと一緒に保管されています。