前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >虚拟机磁盘加密之LUKS

虚拟机磁盘加密之LUKS

作者头像
虚拟化云计算
发布2018-07-23 17:52:34
2K0
发布2018-07-23 17:52:34
举报
文章被收录于专栏:虚拟化云计算

LUKS是一种基于device mapper机制的加密方式。使用加密磁盘前要先mapper映射,映射时需要输入密码,写入和读取磁盘时不需要再输入密码。LUKS可以选择不同的加密算法,也可以开发使用自己的加密算法。本文使用的虚拟机磁盘就是LUKS的加密磁盘。

1. 创建luks格式的加密磁盘

代码语言:javascript
复制
# MYSECRET=`printf %s "123456" | base64`
# qemu-img create -f luks --object secret,data=$MYSECRET,id=sec0,format=base64,qom-type=secret -o key-secret=sec0 encrypt.luks 1G

2. 在本地创建一个秘钥xml secret.xml

代码语言:javascript
复制
<secret ephemeral='no' private='yes'>
    <uuid>7d195d98-6a06-4bb9-a0e9-6a2fde302f31</uuid>
</secret>

注:uuid项可以没有,那么将随机生成一个uuid

3. 定义一个libvirt的secret

代码语言:javascript
复制
# virsh secret-define secret.xml 
Secret 7d195d98-6a06-4bb9-a0e9-6a2fde302f31 created

4. 给secret设置密码值(这里的密码就是给磁盘加密时使用的密码123456)

代码语言:javascript
复制
# virsh secret-set-value 7d195d98-6a06-4bb9-a0e9-6a2fde302f31 $MYSECRET

注:密值是base64的(MYSECRET=`printf %s "123456" | base64`)

注:产生的secret以及密码在/etc/libvirt/secrets/中存在

5. 在虚拟机xml文件的disk段中加入secret

代码语言:javascript
复制
<disk device="disk" type="file">
  <driver name="qemu" type="raw" />
  <source file="/tmp/encrypt.luks" />
  <target bus="virtio" dev="vdb" />
  <encryption format='luks'>
    <secret type='passphrase' uuid='7d195d98-6a06-4bb9-a0e9-6a2fde302f31'/>
  </encryption>
</disk>

6. 启动虚拟机。虚拟启动后就是使用的加密的磁盘。

7. 磁盘加密虚拟机的迁移

在迁移之前要在远程libvirt建立相同的secret。远程建立secret的方式有两种:使用libvrit远程rpc的方式执行secret-define和secret-set-value ,或者直接在目标主机上执行上述过程。

注:

如果不在hypervior层使用secret-set-value进行解密,即在虚拟机xml的disk段中不添加encryption。那就需要到虚拟机中挂载磁盘时输入密码:


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档