第12章 OpenStack ストレージサービスの暗号化と検証
Red Hat OpenStack Services on OpenShift (RHOSO) のサービスストレージサービスの暗号鍵をセキュアに保管するために、Key マネージャー (barbican) サービスを使用できます。
12.1. Block Storage (cinder) ボリュームの暗号化 リンクのコピーリンクがクリップボードにコピーされました!
Key マネージャー (barbican) サービスを使用して、Block Storage (cinder) 暗号鍵を管理できます。この設定は、LUKS を使用して、インスタンスに接続されているディスク (ブートディスクを含む) を暗号化します。キー管理はユーザーに対して透過的です。暗号化を使用して新しいボリュームを作成すると、Block Storage はボリュームの対称鍵シークレットを生成し、それを Key マネージャーサービスに保存します。インスタンスを起動 (または暗号化されたボリュームを接続) すると、Compute サービス (nova) が Key マネージャーサービスから鍵を取得し、そのシークレットを Libvirt シークレットとしてローカルに保存します。
暗号化を使用して Block Storage ボリュームを作成する場合は、luks 暗号化プロバイダー、aes-xts-plain64 暗号化暗号を使用し、キーサイズを 256 にする必要があります。
手順
暗号化を使用するボリュームタイプを作成します。
openstack volume type create \ --encryption-provider nova.volume.encryptors.luks.LuksEncryptor \ --encryption-cipher aes-xts-plain64 \ --encryption-key-size 256 \ --encryption-control-location front-end LuksEncryptor-256出力例
+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | description | None | | encryption | cipher='aes-xts-plain64', control_location='front-end', encryption_id='9df604d0-8584-4ce8-b450-e13e6316c4d3', key_size='256', provider='nova.volume.encryptors.luks.LuksEncryptor' | | id | 78898a82-8f4c-44b2-a460-40a5da9e4d59 | | is_public | True | | name | LuksEncryptor-256 | +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+新しいボリュームを作成し、
LuksEncryptor-256設定を使用するように指定します。openstack volume create --size 1 --type LuksEncryptor-256 'Encrypted-Test-Volume'出力例
+---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2018-01-22T00:19:06.000000 | | description | None | | encrypted | True | | id | a361fd0b-882a-46cc-a669-c633630b5c93 | | migration_status | None | | multiattach | False | | name | Encrypted-Test-Volume | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | LuksEncryptor-256 | | updated_at | None | | user_id | 0e73cb3111614365a144e7f8f1a972af | +---------------------+--------------------------------------+生成されたシークレットは、Key Manager バックエンドに自動的にアップロードされます。
Key Manager シークレット UUID を取得します。この値は、
encryption_key_idフィールドに表示されます。openstack --os-volume-api-version 3.64 volume show Encrypted-Test-Volume出力例
+------------------------------+-------------------------------------+ |Property |Value | +------------------------------+-------------------------------------+ |attached_servers |[] | |attachment_ids |[] | |availability_zone |nova | |bootable |false | |cluster_name |None | |consistencygroup_id |None | |created_at |2022-07-28T17:35:26.000000 | |description |None | |encrypted |True | |encryption_key_id |0944b8a8-de09-4413-b2ed-38f6c4591dd4 | |group_id |None | |id |a0b51b97-0392-460a-abfa-093022a120f3 | |metadata | | |migration_status |None | |multiattach |False | |name |vol | |os-vol-host-attr:host |hostgroup@tripleo_iscsi#tripleo_iscsi| |os-vol-mig-status-attr:migstat|None | |os-vol-mig-status-attr:name_id|None | |os-vol-tenant-attr:tenant_id |a2071ece39b3440aa82395ff7707996f | |provider_id |None | |replication_status |None | |service_uuid |471f0805-072e-4256-b447-c7dd10ceb807 | |shared_targets |False | |size |1 | |snapshot_id |None | |source_volid |None | |status |available | |updated_at |2022-07-28T17:35:26.000000 | |user_id |ba311b5c2b8e438c951d1137333669d4 | |volume_type |LUKS | |volume_type_id |cc188ace-f73d-4af5-bf5a-d70ccc5a401c | +------------------------------+-------------------------------------+Key Manager サービスを使用して、ディスク暗号鍵が存在することを確認します。次の例では、Key Manager シークレット UUID は前の例の出力の
cryptography_key_idと一致 し、タイムスタンプは LUKS ボリュームの作成時刻と一致します。openstack secret list出力例
+------------------------------------------------------------------------------------+------+---------------------------+--------+-------------------------------------------+-----------+------------+-------------+------+------------+ | Secret href | Name | Created | Status | Content types | Algorithm | Bit length | Secret type | Mode | Expiration | +------------------------------------------------------------------------------------+------+---------------------------+--------+-------------------------------------------+-----------+------------+-------------+------+------------+ | https://192.168.123.169:9311/v1/secrets/0944b8a8-de09-4413-b2ed-38f6c4591dd4 | None | 2018-01-22T02:23:15+00:00 | ACTIVE | {u'default': u'application/octet-stream'} | aes | 256 | symmetric | None | None | +------------------------------------------------------------------------------------+------+---------------------------+--------+-------------------------------------------+-----------+------------+-------------+------+------------+新しいボリュームを既存のインスタンスに接続します。
$ openstack server add volume testInstance Encrypted-Test-Volume