Barbican

概述

Barbican 是一个 REST API,专为安全存储、配置和管理密钥等信息而设计,例如密码、加密密钥和 X.509 证书。它的目标是在所有环境中都可用,包括大型短暂云。

Barbican 与多个 OpenStack 功能集成,无论是直接集成还是作为 Castellan 的后端。

Barbican 通常用作密钥管理系统,以支持诸如镜像签名验证、卷加密等用例。这些用例在 用例 中有详细说明。

Barbican 基于角色的访问控制

待定

密钥存储后端

密钥管理器服务具有插件架构,允许部署者将密钥存储在一个或多个密钥存储中。密钥存储可以是基于软件的,例如软件令牌,也可以是硬件设备,例如硬件安全模块 (HSM)。本节描述了当前可用的插件,并讨论了每个插件的安全态势。插件通过 /etc/barbican/barbican.conf 配置文件中的设置启用和配置。

有两种类型的插件:加密插件和密钥存储插件。

加密插件

加密插件将密钥作为加密的 blob 存储在 Barbican 数据库中。在密钥存储时调用插件进行加密,在密钥检索时调用插件进行解密。当前有两种类型的存储插件可用:简单加密插件和 PKCS#11 加密插件。

简单加密插件

简单加密插件默认在 barbican.conf 中配置。此插件使用单个对称密钥 (KEK - 或“密钥加密密钥”),该密钥以明文形式存储在 barbican.conf 文件中,用于加密和解密所有密钥。该插件被认为是一种不太安全的选项,仅适用于开发和测试,因为主密钥以明文形式存储在配置文件中,因此不建议在生产部署中使用。

PKCS#11 加密插件

PKCS#11 加密插件可用于使用 PKCS#11 协议与硬件安全模块 (HSM) 接口。密钥由项目特定的密钥加密密钥 (KEK) 加密(并在检索时解密)。KEK 由主 KEK (MKEK) 保护(加密)。MKEK 与 HMAC 位于 HSM 中。由于每个项目使用不同的 KEK,并且由于 KEK 以加密形式存储在数据库中(而不是配置文件中的明文),因此 PKCS#11 插件比简单加密插件更安全。它是 Barbican 部署中最常用的后端。

密钥存储插件

密钥存储插件与安全的存储系统接口,以将密钥存储在这些系统中。有三种类型的密钥存储插件:KMIP 插件、Dogtag 插件和 Vault 插件。

KMIP 插件

密钥管理互操作性协议 (KMIP) 密钥存储插件用于与启用了 KMIP 的设备(例如硬件安全模块 (HSM))进行通信。密钥直接存储在启用了 KMIP 的设备中,而不是存储在 Barbican 数据库中。Barbican 数据库维护对密钥位置的引用,以便以后检索。该插件可以配置为使用用户名和密码,或使用客户端证书向启用了 KMIP 的设备进行身份验证。此信息存储在 Barbican 配置文件中。

Dogtag 插件

Dogtag 密钥存储插件用于与 Dogtag 进行通信。Dogtag 是 Red Hat 证书系统的上游项目,这是一个 Common Criteria/FIPS 认证的 PKI 解决方案,包含一个证书管理器 (CA) 和一个密钥恢复机构 (KRA),用于安全存储密钥。KRA 将密钥作为加密的 blob 存储在其内部数据库中,主加密密钥存储在基于软件的 NSS 安全数据库中,或存储在硬件安全模块 (HSM) 中。基于软件的 NSS 数据库配置为不希望使用 HSM 的部署提供了一个安全的选项。KRA 是 FreeIPA 的一个组件,因此可以配置插件与 FreeIPA 服务器一起使用。有关如何将 Barbican 与 FreeIPA 设置在一起的更详细说明,请参见 以下博客文章

Vault 插件

Vault 是 Hashicorp 开发的密钥存储,用于安全访问密钥和其他对象,例如 API 密钥、密码或证书。Vault 为任何密钥提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。Vault 的企业版本还允许与 HSM 集成以进行自动解封,提供 FIPS KeyStorage 和熵增强。但是,Vault 插件的缺点是不支持多租户,因此所有密钥都将存储在相同的 Key/Value 密钥引擎挂载点下。

威胁分析

Barbican 团队与 OpenStack 安全项目合作,对最佳实践 Barbican 部署进行了安全审查。安全审查的目的是识别服务设计和架构中的弱点和缺陷,并提出控制或修复措施以解决这些问题。

Barbican 威胁分析确定了八个安全发现和两个改进 Barbican 部署安全的建议。这些结果可以在 安全分析仓库 中查看,以及 Barbican 架构图和架构描述页面。