15.9. 使用 libvirt secret 保护 iSCSI 存储池
可以使用 virsh
配置用户名和密码参数,来保护 iSCSI 存储池的安全。您可以在定义池之前或之后配置它,但必须启动池才能使验证设置生效。
以下提供了使用 libvirt
secret 保护基于 iSCSI 的存储池的说明。
如果在创建 iSCSI 目标时定义了 user_ID
和 密码
,则需要这个流程。
先决条件
- 确保您已创建了一个基于 iSCSI 的存储池。如需更多信息,请参阅 使用 CLI 创建基于 iSCSI 的存储池。
流程
创建具有质询握手身份验证协议(CHAP)用户名的 libvirt secret 文件。例如:
<secret ephemeral='no' private='yes'> <description>Passphrase for the iSCSI example.com server</description> <usage type='iscsi'> <target>iscsirhel7secret</target> </usage> </secret>
使用
virsh secret-define
命令定义 libvirt secret:# virsh secret-define secret.xml
使用
virsh secret-list
命令验证 UUID:# virsh secret-list UUID Usage -------------------------------------------------------------- 2d7891af-20be-4e5e-af83-190e8a922360 iscsi iscsirhel7secret
使用
virsh secret-set-value
命令,为上一步输出中的 UUID 分配 secret。这样可保证 CHAP 用户名和密码位于由 libvirt 控制的 secret 列表中。例如:# virsh secret-set-value --interactive 2d7891af-20be-4e5e-af83-190e8a922360 Enter new value for secret: Secret value set
使用
virsh edit
命令在存储池的 XML 文件中添加一个身份验证条目,并添加<auth>
元素,指定authentication type
、username
和secret usage
。例如:<pool type='iscsi'> <name>iscsirhel7pool</name> <source> <host name='192.0.2.1'/> <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/> <auth type='chap' username='_example-user_'> <secret usage='iscsirhel7secret'/> </auth> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
注意<auth>
子元素位于虚拟机的<pool>
和<disk>
XML 元素的不同位置。对于<pool>
,<auth>
在<source>
元素中指定,这描述了在哪里查找池源,因为身份验证是某些池源(iSCSI 和 RBD)的属性。对于是域子元素的<disk>
,对 iSCSI 或 RBD 磁盘的身份验证是磁盘的一个属性。另外,磁盘的<auth>
子元素与存储池的 <auth> 子元素不同。<auth username='redhat'> <secret type='iscsi' usage='iscsirhel7secret'/> </auth>
要激活更改,激活存储池。如果池已启动,停止并重启存储池:
# virsh pool-destroy iscsirhel7pool # virsh pool-start iscsirhel7pool