2.7. Block Storage 服务(cinder)卷加密
卷加密有助于提供基本数据保护,以防卷后端被入侵,或阻止了正确的数据。计算和块存储服务都集成,以允许实例读取访问和使用加密卷。您必须部署 Barbican 以利用卷加密。
- 基于文件的卷(如 NFS)不支持卷加密。
- 卷加密只支持 LUKS1 而不是 LUKS2。
- 不支持将未加密的卷恢复到相同大小的加密卷,因为加密卷需要额外的空间来存储加密数据。有关加密未加密的卷的更多信息,请参阅 加密未加密的卷。
卷加密通过卷类型应用。有关加密卷类型的详情,请查看 第 2.7.2 节 “使用 CLI 配置块存储服务卷加密”。
2.7.1. 使用仪表板配置块存储服务卷加密 复制链接链接已复制到粘贴板!
要创建加密的卷,首先需要 加密的卷类型。加密卷类型涉及设置它应使用的供应商类、密码和密钥大小。
先决条件
- 成功安装 undercloud。如需更多信息,请参阅 Installing director on the undercloud Director Installation and Usage。
- 成功部署 overcloud。如需更多信息,请参阅 Director 安装和使用中的使用 CLI 工具创建基本 overcloud。
- 访问 Red Hat OpenStack Platform (RHOSP) Dashboard (horizon)。有关更多信息,请参阅 Overcloud 部署输出 Director 安装和使用。
流程
- 在仪表板中作为 admin 用户,选择 Admin > Volumes > Volume Types。
- 在要加密的卷的 Actions 列中,选择 Create Encryption 来启动 Create Volume Type Encryption 向导。
在这里,配置卷类型加密的 提供程序、控制位置、Cipher 和 Key Size 设置。Description 列描述了每个设置。
重要以下列表的值是 提供程序、Cipher 和 Key Size 唯一支持的选项。
-
为 Provider 输入
luks。 -
为 Cipher 输入
aes-xts-plain64。 -
为 Key Size 输入
256。
-
为 Provider 输入
- 单击 Create Volume Type Encryption。
具有加密卷类型后,您可以调用它来自动创建加密的卷。有关创建卷类型的更多信息,请参阅 第 2.3.2 节 “创建并配置卷类型”。具体来说,从 Create Volume 窗口中的 Type 下拉列表中选择加密卷类型。
要通过 CLI 配置加密的卷类型,请参阅 第 2.7.2 节 “使用 CLI 配置块存储服务卷加密”。
您还可以重新配置加密卷类型的加密设置。
- 从卷类型的 Actions 列中选择 Update Encryption 来启动 Update Volume Type Encryption 向导。
- 在 Project > Compute > Volumes 中,检查 Volumes 表中的 Encrypted 列,以确定卷是否加密。
- 如果卷加密,点该列中的 Yes 来查看加密设置。
2.7.2. 使用 CLI 配置块存储服务卷加密 复制链接链接已复制到粘贴板!
要创建加密的卷,首先需要 加密的卷类型。加密卷类型涉及设置它应使用的供应商类、密码和密钥大小。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
- 成功部署 overcloud。如需更多信息,请参阅使用 CLI 工具创建基本 overcloud。
流程
创建卷类型:
cinder type-create encrypt-type
$ cinder type-create encrypt-typeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置密码、密钥大小、控制位置和供应商设置:
cinder encryption-type-create --cipher aes-xts-plain64 --key-size 256 --control-location front-end encrypt-type luks
$ cinder encryption-type-create --cipher aes-xts-plain64 --key-size 256 --control-location front-end encrypt-type luksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建加密的卷:
cinder --debug create 1 --volume-type encrypt-type --name DemoEncVol
$ cinder --debug create 1 --volume-type encrypt-type --name DemoEncVolCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如需更多信息,请参阅使用 OpenStack Key Manager 管理机密 指南。
2.7.3. 自动删除卷镜像加密密钥 复制链接链接已复制到粘贴板!
当块存储服务(glance)上传到镜像服务(glance)时,块存储服务(cinder)会在密钥管理服务(barbican)中创建一个加密密钥。这会在加密密钥和存储的镜像之间创建一个 1:1 个关系。
加密密钥删除可防止密钥管理服务无限度地消耗资源。Block Storage、Key Management 和 Image 服务会自动管理加密卷的密钥,包括删除密钥。
块存储服务会自动为卷镜像添加两个属性:
-
cinder_encryption_key_id- Key Management 服务为特定镜像的加密密钥的标识符。 -
cinder_encryption_key_deletion_policy- 告知镜像服务的策略是否删除与此镜像关联的密钥。
这些属性的值会自动分配。为避免意外数据丢失,请不要调整这些值。
当您创建卷镜像时,块存储服务会将 cinder_encryption_key_deletion_policy 属性设置为 on_image_deletion。当您删除卷镜像时,如果 cinder_encryption_key_deletion_policy 等于 on_image_deletion,则镜像服务会删除对应的加密密钥。
红帽不推荐手动操作 cinder_encryption_key_id 或 cinder_encryption_key_deletion_policy 属性。如果您使用 cinder_encryption_key_id 值标识的加密密钥用于任何其他目的,则可能会破坏数据丢失。