第 3 章 将 OpenStack Key Manager (barbican)与硬件安全模块(HSM)设备集成
将您的 Red Hat OpenStack Platform 部署与硬件安全模块(HSM)设备集成,以使用基于硬件的加密处理来提高安全状况。当您计划 OpenStack Key Manager 与 HSM 设备集成时,您必须选择一个受支持的加密类型和 HSM 设备,设置常规备份,并查看可能影响部署的任何其他信息或限制。
3.1. 将 OpenStack Key Manager (barbican)与 Atos HSM 集成
要将 PKCS#11 后端与您的 Trustway Proteccio Net HSM 设备集成,请使用参数创建一个配置文件,以使用 HSM 连接 barbican。您可以通过在 atos_hsms
参数下列出两个或多个 HSM 来启用 HA。
规划
默认情况下,HSM 最多可以有 32 个并发连接。如果您超过这个数字,您可能会遇到 PKCS#11 客户端中的内存错误。您可以计算连接数量,如下所示:
-
每个控制器都有一个
barbican-api
和一个barbican-worker
进程。 -
每个 Barbican API 进程通过
N
Apache worker 执行 - (其中N
默认为 CPU 的数量)。 - 每个 worker 都有一个到 HSM 的连接。
每个 barbican-worker
进程都有一个与数据库的连接。您可以使用 BarbicanWorkers
heat 参数定义每个 API 进程的 Apache worker 数量。默认情况下,Apache worker 的数量与 CPU 数量匹配。
例如,如果您有三个控制器,每个控制器都有 32 个内核,则每个控制器上的 Barbican API 使用 32 个 Apache worker。因此,一个控制器会消耗所有 32 HSM 连接。为避免此争用,请限制为每个节点配置的 Barbican Apache worker 的数量。在本例中,将 BarbicanWorkers
设置为 10
,以便所有三个控制器都能够为每个 HSM 进行 10 个并发连接。
前提条件
- 为 Atos HSM 提供厂商软件的受密码保护的 HTTPS 服务器
File | Example | 由提供 |
---|---|---|
Proteccio 客户端软件 ISO 镜像文件 | Proteccio1.09.05.iso | HSM Vendor |
SSL 服务器证书 | proteccio.CRT | HSM 管理员 |
SSL 客户端证书 | client.CRT | HSM 管理员 |
SSL 客户端密钥 | client.KEY | HSM 管理员 |
流程
为 Barbican 创建
configure-barbican.yaml
环境文件并添加以下参数:parameter_defaults BarbicanSimpleCryptoGlobalDefault: false BarbicanPkcs11CryptoGlobalDefault: true BarbicanPkcs11CryptoLogin: ******** BarbicanPkcs11CryptoSlotId: 1 ATOSVars: atos_client_iso_name: Proteccio1.09.05.iso atos_client_iso_location: https://user@PASSWORD:example.com/Proteccio1.09.05.iso atos_client_cert_location: https://user@PASSWORD:example.com/client.CRT atos_client_key_location: https://user@PASSWORD:example.com/client.KEY atos_hsms: - name: myHsm1 server_cert_location: https://user@PASSWORD:example.com/myHsm1.CRT ip: 192.168.1.101 - name: myHsm2 server_cert_location: https://user@PASSWORD:example.com/myHsm2.CRT ip: ip: 192.168.1.102
注意atos_hsms
参数取代了os_hsm_ip_address
和atos_server_cert_location
的参数,这些参数将在以后的版本中被删除。表 3.2. Heat 参数 参数 值 BarbicanSimpleCryptoGlobalDefault
这是一个布尔值,用于确定
simplecrypto
是否为全局默认值。BarbicanPkcs11GlobalDefault
这是一个布尔值,用于确定
PKCS#11
是否为全局默认值。BarbicanPkcs11CryptoSlotId
Barbican 使用的虚拟 HSM 的插槽 ID。
ATOSVars
atos_client_iso_name
Atos 客户端软件 ISO 的文件名。这个值必须与
atos_client_iso_location
参数的 URL 中的文件名匹配。atos_client_iso_location
URL,包括用户名和密码,用于指定 Proteccio 客户端软件 ISO 镜像的 HTTPS 服务器位置。
atos_client_cert_location
指定 SSL 客户端证书的 HTTPS 服务器位置的 URL,包括用户名和密码。
atos_client_key_location
指定 SSL 客户端密钥的 HTTPS 服务器位置的 URL,包括用户名和密码。这必须是上述客户端证书的匹配密钥。
atos_hsms
指定 HSM 的名称、证书位置和 IP 地址的一个或多个 HSM 列表。当您在此列表中包含多个 HSM 时,Barbican 为负载平衡和高可用性配置 HSM。
在部署命令中包含自定义
configure-barbican.yaml
,barbican.yaml
和针对 ATOS 的barbican-backend-pkcs11-atos.yaml
环境文件,以及与部署相关的任何其他环境文件:$ openstack overcloud deploy \ --timeout 100 \ --templates /usr/share/openstack-tripleo-heat-templates \ --stack overcloud \ --libvirt-type kvm \ --ntp-server clock.redhat.com \ -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/templates/config_lvm.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network/network-environment.yaml \ -e /home/stack/templates/hostnames.yml \ -e /home/stack/templates/nodes_data.yaml \ -e /home/stack/templates/extra_templates.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/barbican-backend-pkcs11-atos.yaml \ -e /home/stack/templates/configure-barbican.yaml \ --log-file overcloud_deployment_with_atos.log
验证
创建测试 secret:
$ openstack secret store --name testSecret --payload 'TestPayload' +---------------+------------------------------------------------------------------------------------+ | Field | Value | +---------------+------------------------------------------------------------------------------------+ | Secret href | https://192.168.123.163/key-manager/v1/secrets/4cc5ffe0-eea2-449d-9e64-b664d574be53 | | Name | testSecret | | Created | None | | Status | None | | Content types | None | | Algorithm | aes | | Bit length | 256 | | Secret type | opaque | | Mode | cbc | | Expiration | None | +---------------+------------------------------------------------------------------------------------+
检索您刚才创建的 secret 的有效负载:
openstack secret get https://192.168.123.163/key-manager/v1/secrets/4cc5ffe0-eea2-449d-9e64-b664d574be53 --payload +---------+-------------+ | Field | Value | +---------+-------------+ | Payload | TestPayload | +---------+-------------+