このセクションでは、オブジェクトストレージ( Cinder )のボリュームを暗号化する方法について紹介します。ボリュームを暗号化するためには、鍵管理サービス( Barbican )がインストールされている必要があります。

暗号化ボリュームタイプの作成

admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。

[root@controller ~]# . openrc/admin-openrc 
[root@controller ~]# 

暗号化するためのボリュームタイプを作成します。 – – encryption-provider luks ( Linux Unified Key Setup )を指定します。また、暗号化を実行する場所を指定するには、 – – encryption-control-location を使用します。encryption-control-location には、front-end または end-front を指定します。

[root@controller ~]# openstack volume type create --encryption-provider luks \
>   --encryption-cipher aes-xts-plain64 --encryption-key-size 256 --encryption-control-location front-end ENCRYPT
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
| Field       | Value                                                                                                                                         |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
| description | None                                                                                                                                          |
| encryption  | cipher='aes-xts-plain64', control_location='front-end', encryption_id='f3303a96-7c60-4da1-9a45-7dc44afeb5ea', key_size='256', provider='luks' |
| id          | 47bcc566-c43d-4563-be67-5ad02f67cee2                                                                                                          |
| is_public   | True                                                                                                                                          |
| name        | ENCRYPT                                                                                                                                       |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
[root@controller ~]# 

暗号化されたボリュームの作成

暗号化ボリュームを作成します。ここでは、1GBのボリュームを作成しています。

[root@controller ~]# openstack volume create --size 1 --type ENCRYPT 'encrypted volume'
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2019-02-17T08:16:49.000000           |
| description         | None                                 |
| encrypted           | True                                 |
| id                  | b2d268a2-0792-4fca-a296-25c6620c91c3 |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | encrypted volume                     |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | ENCRYPT                              |
| updated_at          | None                                 |
| user_id             | d899029d484b4245afe48e5bafe2edb8     |
+---------------------+--------------------------------------+
[root@controller ~]# 

管理者以外のユーザーで秘密をBarbicanに保存し暗号化ボリュームを作成できるようにするために、ユーザーに作成の役割を付与します。管理者以外のユーザーでも暗号化ボリュームを作成するためには、役割の付与が必要となります。

[root@controller ~]# openstack role add --project myproject --user myuser creator
[root@controller ~]# 

暗号化しないボリュームの作成

ここでは、暗号化されたボリュームと暗号化していないボリュームの違いを確認するために、暗号化しないボリュームを作成します。

[root@controller ~]# openstack volume create --size 1 'unencrypted volume'
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2019-02-17T08:18:45.000000           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | aef47c63-7dc7-4f40-905d-66aaecb546b4 |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | unencrypted volume                   |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | None                                 |
| updated_at          | None                                 |
| user_id             | d899029d484b4245afe48e5bafe2edb8     |
+---------------------+--------------------------------------+
[root@controller ~]# 

ボリューム暗号化の動作確認

作成したボリュームをマウントする仮想マシンに割り当てるOpenStack のネットワークを確認しておきます。

[root@controller ~]# openstack network list
+--------------------------------------+--------------+--------------------------------------+
| ID                                   | Name         | Subnets                              |
+--------------------------------------+--------------+--------------------------------------+
| 2769f828-ae94-4934-8b63-eb5a7a139b73 | local_area_2 | 812d8088-e027-452b-b006-3124bbee81c2 |
| 43f15c29-76d3-479d-9df0-0b2de354713e | local_area_3 | 04360fb4-82c6-43f5-a448-a7a72e218d36 |
| 538e6f7f-7cf2-4aac-a71c-925a64af82e8 | local area 1 | 955d14b8-c4c0-4c22-bda2-e07a33f11eb8 |
| a07ede34-eb96-470e-97a8-6dd6917ba18d | provider     | b80414a4-b901-4b5d-a030-b144e49733ca |
| d5a64b49-d892-4157-bed1-101e2c2e2233 | local area 2 | 8170af31-d0bd-4731-9005-a4d81a164767 |
| d8d35733-1299-40eb-8383-23b471adcd94 | local_area_1 | 9083cf5c-4f70-400d-b3ae-5154b6dd8f83 |
+--------------------------------------+--------------+--------------------------------------+
[root@controller ~]# 

作成したボリュームをマウントする仮想マシンに割り当てるOpenStack のキーペアを確認しておきます。

[root@controller ~]# openstack keypair list
+------------+-------------------------------------------------+
| Name       | Fingerprint                                     |
+------------+-------------------------------------------------+
| admin-key  | a6:b9:a3:1b:08:79:bb:3a:35:c0:81:ab:fc:07:6e:dc |
| magnum-key | 00:44:e0:17:b5:0a:e0:99:5f:d1:1e:e6:84:9d:5d:2a |
+------------+-------------------------------------------------+
[root@controller ~]# 

作成したボリュームをマウントする仮想マシンに割り当てるOpenStack のセリティグループを確認しておきます。

[root@controller ~]# openstack security group list
+--------------------------------------+-----------------+--------------------------------------+----------------------------------+------+
| ID                                   | Name            | Description                          | Project                          | Tags |
+--------------------------------------+-----------------+--------------------------------------+----------------------------------+------+
| 1165d0be-53fd-4034-8310-efb534ed584c | default         | デフォルトセキュリティグループ       |                                  | []   |
| 198603ee-a82d-4b57-b0b1-e7c142743f52 | lbaas           |                                      | 257bcb40994f44a1b2740dba5200d6c4 | []   |
| 45d5ac9f-7c3e-441d-81b3-600f02371707 | database        |                                      | b9644b0689c4469baa45f9acb009d860 | []   |
| 4ce6461c-af7a-44aa-9d50-a446e93f3ad7 | my_security_gp1 |                                      | b9644b0689c4469baa45f9acb009d860 | []   |
| 5aa1b2c3-76f8-4d7f-b610-d325b4af05c1 | wildfly         |                                      | 257bcb40994f44a1b2740dba5200d6c4 | []   |
| 606dfa8d-42d9-4103-9bee-ac74f6ea5e22 | wildfly         |                                      | b9644b0689c4469baa45f9acb009d860 | []   |
| 7075eae9-38e2-40df-bb48-bed509061a9f | my_security_1   |                                      | 257bcb40994f44a1b2740dba5200d6c4 | []   |
| 949ef0c5-d158-46c4-9697-0701b029ae83 | default         | デフォルトセキュリティグループ       | 257bcb40994f44a1b2740dba5200d6c4 | []   |
| a06aba09-af87-46f2-8b36-885d7d8cd1b0 | default         | デフォルトセキュリティグループ       | faf1bcc101eb4c9d84198768deca78ce | []   |
| a72ef77e-99c2-40e4-a86f-e2baaebb4605 | default         | デフォルトセキュリティグループ       | b9644b0689c4469baa45f9acb009d860 | []   |
| d7c34b4f-9b17-4f12-a7dd-6a136200c7ab | Lbaas           | ロードバランサのセキュリティグループ | b9644b0689c4469baa45f9acb009d860 | []   |
| fe25bf1f-58de-4d0e-9f4d-5ed0370bfde6 | default         | デフォルトセキュリティグループ       | cfe83bbcacb94f2ebde2ab55e998dff2 | []   |
+--------------------------------------+-----------------+--------------------------------------+----------------------------------+------+
[root@controller ~]# 

作成したボリュームをマウントする仮想マシンに割り当てるOpenStack のフレーバーを確認しておきます。

[root@controller ~]# openstack flavor list
+--------------------------------------+----------+------+------+-----------+-------+-----------+
| ID                                   | Name     |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+----------+------+------+-----------+-------+-----------+
| 0                                    | m1.nano  |   64 |    1 |         0 |     1 | True      |
| 102                                  | micro    | 1024 |   10 |         0 |     1 | True      |
| 202                                  | m1.small | 1024 |   30 |         0 |     1 | True      |
| 203                                  | m3.small | 2048 |   40 |         0 |     2 | False     |
| 3ae783ce-0d6c-4899-943b-6b9b0a4ffb9f | m2.small | 2048 |   10 |         0 |     1 | False     |
+--------------------------------------+----------+------+------+-----------+-------+-----------+
[root@controller ~]# 

作成したボリュームをマウントする仮想マシンに割り当てるOpenStack のイメージを確認しておきます。

[root@controller ~]# openstack image list
+--------------------------------------+---------------------------------+--------+
| ID                                   | Name                            | Status |
+--------------------------------------+---------------------------------+--------+
| fd476c96-73a7-4ce3-8074-841c4aced097 | CentOS-7-x86_4                  | active |
| dd690ce6-e572-43e4-a8a7-9e64cb96f9d0 | Fedora-Cloud-Atomic-22-20150521 | active |
| 48662894-bdd4-4123-ac24-3792db1af15d | centos7-minimal                 | active |
| 6b95a861-2df2-4ce7-b238-5cb5194f87c8 | cirros                          | active |
| 61b50435-3256-41d2-b08e-e63313019cbd | db_1_20190104                   | active |
| a07d0c37-bde8-4e4b-a367-d7165eedecfa | java_1_20190101                 | active |
| a183e04a-8247-4d41-8644-2491a8a32cfa | server_1-20181223               | active |
| b7fd17ac-07e1-47f9-8775-a83810a8e57e | server_1-20181223               | active |
| 00d317ac-bee6-4e33-a8ed-8c1f3255f7d6 | server_snap                     | active |
| 6bd37fc4-10eb-4fb7-b8bd-960becd0822f | snap                            | active |
+--------------------------------------+---------------------------------+--------+
[root@controller ~]# 

作成したボリュームをマウントする仮想マシンを作成します。

[root@controller ~]# openstack server create --image CentOS-7-x86_4 --flavor micro \
>  --nic net-id=d8d35733-1299-40eb-8383-23b471adcd94 --security-group my_security_1 \
>  --key-name admin-key TESTVM
+-------------------------------------+-------------------------------------------------------+
| Field                               | Value                                                 |
+-------------------------------------+-------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                |
| OS-EXT-AZ:availability_zone         |                                                       |
| OS-EXT-SRV-ATTR:host                | None                                                  |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                  |
| OS-EXT-SRV-ATTR:instance_name       |                                                       |
| OS-EXT-STS:power_state              | NOSTATE                                               |
| OS-EXT-STS:task_state               | scheduling                                            |
| OS-EXT-STS:vm_state                 | building                                              |
| OS-SRV-USG:launched_at              | None                                                  |
| OS-SRV-USG:terminated_at            | None                                                  |
| accessIPv4                          |                                                       |
| accessIPv6                          |                                                       |
| addresses                           |                                                       |
| adminPass                           | L5JSRMGWpK5y                                          |
| config_drive                        |                                                       |
| created                             | 2019-02-17T08:30:25Z                                  |
| flavor                              | micro (102)                                           |
| hostId                              |                                                       |
| id                                  | d6489da3-18ac-421d-ab84-fce3df60dee4                  |
| image                               | CentOS-7-x86_4 (fd476c96-73a7-4ce3-8074-841c4aced097) |
| key_name                            | admin-key                                             |
| name                                | TESTVM                                                |
| progress                            | 0                                                     |
| project_id                          | 257bcb40994f44a1b2740dba5200d6c4                      |
| properties                          |                                                       |
| security_groups                     | name='7075eae9-38e2-40df-bb48-bed509061a9f'           |
| status                              | BUILD                                                 |
| updated                             | 2019-02-17T08:30:25Z                                  |
| user_id                             | d899029d484b4245afe48e5bafe2edb8                      |
| volumes_attached                    |                                                       |
+-------------------------------------+-------------------------------------------------------+
[root@controller ~]# 

仮想マシンにマウントするためのボリュームを確認します。ここでは、先程作成した 暗号化したボリューム( encrypted volume )と 暗号化していないボリューム( unencrypted volume )が確認できます。

[root@controller ~]# openstack volume list
+--------------------------------------+----------------------------------+-----------+------+-------------+
| ID                                   | Name                             | Status    | Size | Attached to |
+--------------------------------------+----------------------------------+-----------+------+-------------+
| aef47c63-7dc7-4f40-905d-66aaecb546b4 | unencrypted volume               | available |    1 |             |
| b2d268a2-0792-4fca-a296-25c6620c91c3 | encrypted volume                 | available |    1 |             |
| 045c26a9-87b7-46be-8f93-392b0ffd06fd | server_3                         | available |   10 |             |
| a255ddef-d670-465e-9396-fb90235880f8 |                                  | available |   10 |             |
| dcb00afa-b0f5-440e-9001-518c431f966b | CentOS-7-x86_64-Minimal-1804_iso | available |    3 |             |
+--------------------------------------+----------------------------------+-----------+------+-------------+
[root@controller ~]# 

仮想マシンに暗号化したボリューム( encrypted volume )と 暗号化していないボリューム( unencrypted volume )をマウントします。

[root@controller ~]# openstack server add volume --device /dev/vdb TESTVM 'unencrypted volume'
[root@controller ~]# openstack server add volume --device /dev/vdc TESTVM 'encrypted volume'
[root@controller ~]#