Одной
из полезных опций работы с блочными
устройствами является их шифрование.
Настройка шифрования томов требуется
со стороны двух служб: Nova и Cinder. Сделать
это можно при помощи общего секрета или
при помощи сервиса управления ключами
Barbican. Пойдем по пути использования
общего секрета. Нужно иметь в виду, что
если он скомпрометирован, то злоумышленник
получит доступ ко всем зашифрованным
томам.
Зададим
ключ на узле Cinder и всех вычислительных
узлах:
[root@compute ~]# crudini --set /etc/nova/nova.conf keymgr fixed_key 123456789 [root@compute ~]# systemctl restart openstack-nova-compute [root@controller ~]# crudini --set /etc/cinder/cinder.conf keymgr fixed_key 123456789 [root@controller ~]# systemctl restart openstack-cinder-volume
Нам
необходимо создать новый тип тома.
Назовем его LUKS, поскольку для шифрования
будет использоваться соответствующая
спецификация:
$ source keystonerc_admin $ cinder type-create LUKS +--------------------------------------+------+-------------+-----------+ | ID | Name | Description | Is_Public | +--------------------------------------+------+-------------+-----------+ | 7d5d38a3-ce84-4dfb-b184-74fed0309cef | LUKS | - | True | +--------------------------------------+------+-------------+-----------+
Следующим
шагом нужно создать тип шифрования:
$ cinder encryption-type-create --cipher aes-xts-plain64 --key_size 512 --control_location front-end LUKS nova.encryptors.luks.LuksEncryptor +----------------+------------------------------------+-----------------+----------+------------------+ | Volume Type ID | Provider | Cipher | Key Size | Control Location | +----------------+------------------------------------+-----------------+----------+------------------+ | 7d5d38a3-ce8.. | nova.encryptors.luks.LuksEncryptor | aes-xts-plain64 | 512 | front-end | +----------------+------------------------------------+-----------------+----------+------------------+
Теперь
у нас все готово для создания зашифрованного
тома. Обратите внимание на свойство
encrypted при выводе команды:
$ source keystonerc_demo $ cinder create --display-name myvolumeEncr --volume-type LUKS 1 +---------------------------------------+--------------------------------------+ | Property | Value | +---------------------------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2015-12-23T09:21:43.000000 | | description | None | | encrypted | True | | id | 21cc946b-51ea-4806-adc1-46d42113af14 | | metadata | {} | | multiattach | False | | name | myvolumeEncr | | os-vol-tenant-attr:tenant_id | eca00feab38e4aa5b462bd31af0b9dca | | os-volume-replication:driver_data | None | | os-volume-replication:extended_status | None | | replication_status | disabled | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | user_id | 924c18c923654d7c930bcb1044580d8b | | volume_type | LUKS | +---------------------------------------+--------------------------------------+