Stratis在其官方网站上描述为“易于使用的Linux本地存储管理”,本文以Red Hat Enterprise Linux 8及Fedora系统为例,说明初步使用Stratis加密的方法。当前Stratis 2.1版引入了对加密的支持,现在教您开始使用Stratis进行加密。
先决条件 加密需要Stratis 2.1或更高版本,本文中的示例使用的是Fedora 33发行版,也适合在Red Hat中。另外,Stratis 2.1在Fedora 33的最终发行版中提供。参考安装Fedora 33指导:附Fedora 33安装全过程截图。 您还需要至少一个可用的块设备来创建加密池,下面显示的示例在具有5GB虚拟磁盘驱动器(/dev/vdb)的KVM虚拟机上完成。
在内核密钥环中创建密钥 Linux内核密钥环用于存储加密密钥。使用stratis key set命令在内核密钥环中设置密钥,您必须指定从何处读取密钥。要从标准输入中读取键,请使用–capture-key选项。要从文件中检索密钥,请使用–keyfile-path <file>选项。最后一个参数是键说明,稍后在创建加密的Stratis池时将使用它。 例如,要使用描述pool1key创建一个密钥,并从标准输入中读取该密钥,您将输入: # stratis key set --capture-key pool1key Enter desired key data followed by the return key: 该命令提示我们键入密钥数据/密码,然后在内核密钥环中创建密钥。 要验证是否创建了密钥,请运行stratis密钥列表: # stratis key list Key Description pool1key 这验证了pool1key已创建。请注意,这些键不是持久性的。如果重新启动主机,则需要再次提供密钥,然后才能访问加密的Stratis池。 如果您有多个加密池,则它们可以具有单独的密钥,也可以共享相同的密钥。 也可以使用以下keyctl命令查看这些键: # keyctl get_persistent @s # keyctl show
创建加密的Stratis池 现在已经为Stratis创建了密钥,下一步是创建加密的Stratis池,只能在创建池时对池进行加密,当前无法加密现有池。 使用stratis pool create命令创建一个池,添加–key-desc和您在上一步中提供的键描述(pool1key),这将向Stratis发出信号,表明应该使用提供的密钥对池进行加密。下面的示例在/dev/vdb上创建Stratis池,并将其命名为pool1,确保在系统上指定一个空设备/可用设备: # stratis pool create --key-desc pool1key pool1 /dev/vdb 您可以使用stratis pool list命令验证是否已创建该池: # stratis pool list
在上面显示的示例输出中,~Ca表示已禁用缓存(代字号使属性无效),Cr表示启用加密。请注意,缓存和加密是互斥的,这两个功能不能同时启用。 接下来,创建一个文件系统。下面的示例演示了如何创建一个名为filesystem1的文件系统,将其安装在/filesystem1挂载点以及在新文件系统中创建一个测试文件: # stratis filesystem create pool1 filesystem1 # mkdir /filesystem1 # mount /stratis/pool1/filesystem1 /filesystem1 # cd /filesystem1 # echo "this is a test file" > testfile
重新启动后访问加密池 重新启动后,您会注意到Stratis不再显示您的加密池或其阻止设备: # stratis pool list Name Total Physical Properties # stratis blockdev list Pool Name Device Node Physical Size Tier 要访问加密池,请首先使用与先前使用的相同的密钥描述和密钥数据/密码重新创建密钥: # stratis key set --capture-key pool1key Enter desired key data followed by the return key: 接下来,运行stratis pool unlock命令,并验证您现在可以看到该池及其阻止设备: # stratis pool unlock # stratis pool list # stratis blockdev list
接下来,挂载文件系统并确认您可以访问之前创建的测试文件: # mount /stratis/pool1/filesystem1 /filesystem1/ # cat /filesystem1/testfile this is a test file
使用系统单元文件在启动时自动解锁Stratis池 引导时可以自动解锁Stratis池,而无需手动干预。但是,包含密钥的文件必须可用。在某些环境中,将密钥存储在文件中可能是安全问题。 下面显示的systemd单元文件提供了一种在启动时解锁Stratis池并挂载文件系统的简单方法。参考Systemd入门教程。 首先使用以下命令创建密钥文件,确保将密码短语替换为您之前输入的相同密钥数据/密码短语: # echo -n passphrase > /root/pool1key 确保该文件仅可由root读取: # chmod 400 /root/pool1key # chown root:root /root/pool1key 在/etc/systemd/system/stratis-filesystem1.service中创建一个systemd单元文件,其内容如下: [Unit] Description = stratis mount pool1 filesystem1 file system After = stratisd.service [Service] ExecStartPre=sleep 2 ExecStartPre=stratis key set --keyfile-path /root/pool1key pool1key ExecStartPre=stratis pool unlock ExecStartPre=sleep 3 ExecStart=mount /stratis/pool1/filesystem1 /filesystem1 RemainAfterExit=yes [Install] WantedBy = multi-user.target 接下来,启用服务,使其在引导时运行: # systemctl enable stratis-filesystem1.service 现在重新启动,并验证Stratis池已被自动解锁并且其文件系统已安装。
相关主题 |