Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

13.3. データの暗号化

プロジェクトデータがディスクのどこに保存されていても、あるいはネットワークを通じて転送されていても、実装者にはデータを暗号化するためのオプションがあります。たとえば、以下で説明されている OpenStack ボリューム暗号化機能です。これは、プロバイダーに送信する前にユーザーが自分のデータを暗号化する一般的な推奨事項を上回るものです。

プロジェクトの代わりにデータを暗号化することの重要性は、攻撃者がプロジェクトデータにアクセスできるというプロバイダーによって想定されるリスクに非常に関係します。政府、ポリシー、私的な契約、またはパブリッククラウドプロバイダーの私的な契約に関する法的な要件があります。プロジェクトの暗号化ポリシーを選択する前に、リスク評価と法的アドバイスを取得することを検討してください。

インスタンスまたはオブジェクトごとの暗号化が、降順、プロジェクト、ホスト、およびクラウドアグリゲーションごとよりも優先されます。この推奨事項は、実装の複雑性と困難度とは逆です。現時点で、一部のプロジェクトでは、プロジェクトごとの粗い粒度での暗号化を実装することが困難、または不可能な場合があります。実装者は、プロジェクトデータの暗号化に深刻な考慮事項を与えます。

多くの場合、データの暗号化は、単にキーを廃棄することで、プロジェクトやインスタンスごとのデータを確実に破棄する機能に貢献します。このようにすると、信頼できる安全な方法でこれらのキーを破棄することが非常に重要になります。

ユーザーのデータを暗号化する機会が存在します。

  • Object Storage オブジェクト
  • ネットワークデータ

13.3.1. ボリュームの暗号化

OpenStack のボリューム暗号化機能は、プロジェクトごとにプライバシーをサポートします。以下の機能がサポートされます。

  • Dashboard またはコマンドラインインターフェイスから開始された暗号化されたボリューム種別の作成および使用
  • 暗号化を有効にし、暗号化アルゴリズムやキーサイズなどのパラメーターを選択します。
  • iSCSI パケットに含まれるボリュームデータの暗号化
  • 元のボリュームが暗号化されている場合、暗号化されたバックアップをサポートします。
  • Dashboard には、ボリューム暗号化のステータスが表示されます。ボリュームが暗号化されていること、およびアルゴリズムやキーサイズなどの暗号化パラメーターが含まれます。
  • 鍵管理サービスとのインターフェイス

13.3.2. エフェメラルディスク暗号化

エフェメラルディスク暗号化機能はデータのプライバシーに対処します。エフェメラルディスクは、仮想ホストオペレーティングシステムによって使用される一時的なワークスペースです。暗号化しないと、このディスク上のユーザーの機密情報にアクセスでき、ディスクがアンマウントされた後も痕跡情報が残る可能性があります。次のエフェメラルディスク暗号化機能がサポートされています。

13.3.2.1. 暗号化された LVM エフェメラルディスクの作成と使用

注記

コンピュートサービスは現在、LVM 形式でのエフェメラルディスクの暗号化のみをサポートしています。

コンピュート設定ファイル (/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf) には、ephemeral_storage_encryption セクション内に以下のデフォルトパラメーターがあります。

  • cipher = aes-xts-plain64 - このフィールドは、一時ストレージの暗号化に使用される暗号とモードを設定します。AES-XTS は、特にディスクストレージ用に NIST によって推奨されており、この名前は XTS 暗号化モードを使用した AES 暗号化の省略形です。利用可能な暗号は、カーネルのサポートによって異なります。コマンドラインで cryptsetup benchmark と入力して、使用可能なオプションを確認する (およびベンチマークの結果を確認する) か、/proc/crypto に移動します。
  • enabled = false - 一時的なディスク暗号化を使用するには、オプション enabled = true を設定します。
  • key_size = 512 - key_size = 256 の使用を必要とするバックエンドキーマネージャーからのキーサイズ制限がある可能性があることに注意してください。これは、128 ビットの AES キーサイズのみを提供します。XTS は、AES が必要とする暗号化キーに加えて、独自の微調整キーを必要とします。これは通常、単一の大きなキーとして表現されます。この場合、512 ビット設定を使用すると、256 ビットが AES で使用され、256 ビットが XTS で使用されます。(NIST を参照)

13.3.2.2. キー管理サービスとのやりとり

キー管理サービスは、プロジェクトごとにエフェメラルディスク暗号化キーを提供することで、データの分離をサポートします。セキュリティーを強化するために、エフェメラルディスク暗号化がバックエンドキーストレージでサポートされています。キー管理サービスを使用すると、エフェメラルディスクが不要になったときに、単にキーを削除するだけで、エフェメラルディスクストレージ領域を上書きできます。

13.3.3. Object Storage オブジェクト

Object Storage (swift) は、ストレージノードに保管されているオブジェクトデータのオプション暗号化をサポートします。オブジェクトデータの暗号化は、承認されていないユーザーがディスクへの物理アクセスを取得している場合に、ユーザーのデータが読み取られるリスクを軽減することを目的としています。

保管されているデータの暗号化は、プロキシーサーバー WSGI パイプラインに含まれる可能性のあるミドルウェアにより実装されます。この機能は swift クラスターに内部にあり、API 経由で公開されません。クライアントは、swift サービス内のこの機能によりデータが暗号化されていることを認識しません。内部で暗号化されたデータは swift API 経由でクライアントに返されません。

swift で保管されている間、以下のデータは暗号化されます。

  • オブジェクトコンテンツ (例: オブジェクト PUT 要求ボディーのコンテンツ)。
  • ゼロ以外のコンテンツを持つオブジェクトのエンティティータグ (ETag)。
  • すべてのカスタムユーザーオブジェクトのメタデータ値。たとえば、 PUT または POST リクエストで、X-Object-Meta- の接頭辞が付けられたヘッダーを使用して送信されるメタデータなどです。

上記のリストに含まれていないデータまたはメタデータは暗号化されません。以下に例を示します。

  • アカウント、コンテナー、およびオブジェクト名
  • アカウントおよびコンテナーのカスタムユーザーメタデータの値
  • すべてのカスタムユーザーメタデータ名
  • オブジェクトコンテンツ種別の値
  • オブジェクトサイズ
  • システムメタデータ

13.3.4. Block Storage のパフォーマンスおよびバックエンド

オペレーティングシステムを有効にすると、Intel および AMD プロセッサーの両方で現在利用可能なハードウェアアクセラレーション機能を使用して、OpenStack Volume Encryption のパフォーマンスを強化できます。OpenStack Volume Encryption 機能および OpenStack Ephemeral Disk Encryption 機能の両方は、dm-crypt を使用してボリュームデータを保護します。DM-crypt は、Linux カーネルバージョン 2.6 以降の透過的なディスク暗号化機能です。ハードウェアアクセラレーションを使用する場合、両方の暗号化機能のパフォーマンスの影響は最小限に抑えられます。

13.3.5. ネットワークデータ

コンピュートノードのプロジェクトデータは IPsec または他のトンネルで暗号化される可能性があります。これは、OpenStack では一般的または標準ではありませんが、興味のある実装者が利用可能なオプションです。同様に、ネットワーク上で転送されるため、暗号化されたデータは暗号化された状態のままです。