KVM虚拟机磁盘加密
最近在找虚拟机磁盘加密的资料,发现网上资料还是比较少,在这里汇总一下。之前qcow2格式的磁盘默认加密方式似乎已经不再支持,官方推荐luks或dm-crypt加密。$ man qemu-img...Use of qcow / qcow2 encryption is thus strongly discouraged.Users are recommended to use an alte...
最近在找虚拟机磁盘加密的资料,发现网上资料还是比较少,在这里汇总一下。
之前qcow2格式的磁盘默认加密方式似乎已经不再支持,官方推荐luks或dm-crypt加密。
$ man qemu-img
...
Use of qcow / qcow2 encryption is thus strongly discouraged.
Users are recommended to use an alternative encryption
technology such as the Linux dm-crypt / LUKS system.
...
1.创建新的luks虚拟磁盘(若选择1则跳过2)
- 创建luks格式磁盘,data为要设置的磁盘密码。luks好像不支持空洞模式,申请的空间大小会完全预分配。(如有错误,欢迎指正。)
$ qemu-img create -f luks --object secret,data=123456,id=sec0 -o key-secret=sec0 demo.luks 10G
2.从已有qcow2磁盘镜像转换(若选择2则忽略1)
- 有一个qcow2的镜像,且是shutdown状态
- 新建一个luks镜像,并且与上述qcow2相等大小
$ qemu-img create -f luks --object secret,data=123456,id=sec0 \
-o key-secret=sec0 demo.luks 10G
- 将qcow2转换为luks
$ qemu-img convert --target-image-opts --object secret,data=123456,id=sec0 \
-f qcow2 demo.qcow2 -n driver=luks,file.filename=demo.luks,key-secret=sec0
3.在本地创建一个秘钥xml secret.xml
此处uuid可以通过qemu-img info demo.luks
查看
修改uuid
<secret ephemeral='no' private='yes'>
<uuid>fbae4c81-0d6c-4ed1-9e73-581eb8b7131f</uuid>
</secret>
4. 定义密钥文件
$ virsh secret-define secret.xml
Secret fbae4c81-0d6c-4ed1-9e73-581eb8b7131f created
5. 给secret设置密码值
(这里的密码就是给磁盘加密时使用的密码123456)
$ virsh secret-set-value 7d195d98-6a06-4bb9-a0e9-6a2fde302f31 $MYSECRET
注:密值是base64的(MYSECRET=printf %s "123456" | base64
)
注:产生的secret以及密码在/etc/libvirt/secrets/中存在
6. 复制虚拟机xml文件,在disk段中加入secret
默认kvm虚拟机配置文件目录/etc/libvirt/qemu/
如果是从cdrom引导项就启用加密,则需要修改boot引导设备
7. 定义、启动虚拟机
启动虚拟机。虚拟启动后就是使用的加密的磁盘
$ virsh define file.xml
$ virsh start domain
附:通过qemu-system-x86_64启动虚拟机
- 通过qemu-system-x86_64可以创建qcow2格式的磁盘,并采用luks加密
$ qemu-img create --object secret,id=sec0,data=123456 -f qcow2 \
-o encrypt.format=luks,encrypt.key-secret=sec0 base.qcow2 10G
- 通过qemu-system-x86_64安装虚拟机,可通过vnc安装。
qemu-system-x86_64 --object secret,id=sec0,data=123456 \
-drive driver=qcow2,file.filename=base.qcow2,encrypt.key-secret=sec0 \
-cdrom ./iso/ubuntu-16.04.6-desktop-amd64.iso \
-boot d -m 1024 -enable-kvm -vnc :1
此处应有通过virt-install
安装加密磁盘的虚拟机的命令,博主暂时没有找到可用的命令,如果有可用的virt-install安装方案,欢迎留言!!!
参考文章
https://cloud.tencent.com/developer/article/1162145
https://libvirt.org/formatstorageencryption.html#StorageEncryption
http://blog.leanote.com/post/7wlnk13/%E5%88%9B%E5%BB%BAKVM%E8%99%9A%E6%8B%9F%E6%9C%BA
https://bugzilla.redhat.com/show_bug.cgi?id=1406803
https://bugzilla.redhat.com/show_bug.cgi?id=1575578
更多推荐
所有评论(0)