使用 GCP KMS (HSM) 的 vSRX 虚拟防火墙 3.0 保护数据
本主题介绍 vSRX 虚拟防火墙 3.0 与 GCP(Google Cloud Platform)密钥管理服务 (KMS) 的集成,以保护机密信息(如必须存储在 FIPS 边界内的私钥)的安全。GCP 为 vSRX 虚拟防火墙 3.0 等应用程序使用的 KMS 提供支持,以保护和管理加密密钥。
概述
Junos 中提供了一个包装库,使 VPN 和其他应用程序(如 mgd)能够与基于云的 KMS 集成并与之通信。此包装器库使用 PKCS#11 API 提供密钥管理服务 (KMS) 的接口。Junos 应用程序使用此包装库并更新了对 GCP 的支持,以便与 KMS 通信。为了支持 PKCS#11 API,GCP 团队为瞻博网络提供了一个库,充当 Junos 应用程序和云 KMS 服务之间的中介。此库作为 vSRX 虚拟防火墙 3.0 Junos 软件包的一部分添加。您无需执行任何操作即可启用库。
启用 KMS 服务后,您需要使用 request security hsm master-encryption-password set plain-text-password
命令指定主加密密钥 (MEK)。 然后,vSRX 虚拟防火墙 3.0 会在 KMS 中创建 RSA 2048 密钥对主绑定密钥 (MBK),并使用 KMS 中的 MBK 加密 MEK。然后,MEK 用作加密静态数据的密钥,例如配置哈希、私钥对文件和主密码文件。
使用 GCP KMS 的 vSRX 虚拟防火墙具有以下限制:
-
vSRX 虚拟防火墙使用管理接口访问 KMS 服务。如果未启用或配置管理接口,则无法从 vSRX 虚拟防火墙使用 KMS 服务。
-
启用 HSM 后,SSL 代理、Sky-ATP、IDP 签名下载或任何其他使用基于证书的连接的模块将不起作用。
-
具有密钥 ID 的 RSA 密钥对只能生成一次。它不能用于其他密钥对以生成或创建请求、已删除的密钥 ID 或其他新密钥请求。
图 1 显示了 vSRX 虚拟防火墙 3.0 中的密钥清单。
支持在 GCP 云 KMS 中生成公钥基础设施 (PKI) 密钥对,并且任何需要所生成密钥对的私钥的请求(如 RSA SIGN)都将发送到 GCP 云 KMS。具体而言,以下操作已卸载到 KMS:
-
在设备上运行的 PKI 守护程序 (PKID) 中创建证书签名请求 (CSR) 期间进行私钥签名。
-
在验证从 PKID 中的 CA 服务器收到的证书期间进行私钥签名。
-
在密钥管理守护程序 (KMD) 进行 IKE 协商期间进行私钥签名,KMD(设备上运行的 IKE 守护程序)。
所有 VPN 应用程序(PKID 和 KMD)都将使用包装库与 KMS 服务通信,以在 RSA 密钥上创建、管理和执行加密操作。
图 2 说明了 VPN 应用程序如何访问 KMS 服务。
您可以使用 GCP KMS 通过 vSRX 虚拟防火墙 3.0 保护静态数据并实现配置完整性。执行本主题中给出的步骤,为 vSRX 虚拟防火墙 3.0 设置 GCP 云 KMS 服务和密钥环。
密钥环是 KMS 服务中的一个组件,Junos 应用程序创建的密钥将驻留在该组件中。密钥环用于整理特定 Google Cloud 营业地点的密钥,并允许您管理对密钥组的访问控制。密钥环的名称在 Google Cloud 项目中不必唯一,但在给定位置必须是唯一的。创建后,无法删除密钥环。钥匙圈不会产生存储成本。
将 GCP KMS 与 vSRX 虚拟防火墙 3.0 集成
启用和设置 vSRX 虚拟防火墙 3.0 以访问 GCP 上的 KMS。
-
在 GCP 中启动 vSRX 虚拟防火墙 3.0 实例。请参阅 在 Google Cloud Platform 上部署 vSRX 虚拟防火墙 和 在 Google Cloud Platform 中部署 vSRX。
-
为 vSRX 虚拟防火墙 3.0 设置 GCP KMS。
在启用 vSRX 虚拟防火墙 3.0 与 KMS 服务通信之前,您需要确保 vSRX 虚拟防火墙 3.0 实例已经过身份验证并有权访问 GCP 云 KMS 服务。要设置 GCP 环境或帐户,请执行以下操作:
-
创建服务帐户。
服务帐号是一种特殊类型的 Google 帐号,用于代表非人类用户(例如虚拟机 (VM),这些用户需要进行身份验证并获得访问 Google API 中数据的授权。
vSRX 虚拟防火墙 3.0 使用 GCP 提供的 PKCS#11 库访问云 KMS 服务。库使用服务帐户使用服务帐户凭据进行身份验证。
-
要创建新的服务帐户以用于 vSRX 虚拟防火墙 3.0 以访问云 KMS,请参阅
身份验证入门。如果您已有服务帐户,请参阅 作为服务帐户进行身份验证。
-
为服务账户创建 IAM 角色以启用对 vSRX 虚拟防火墙 3.0 实例的访问。
设置服务账户后,向账户授予一个或多个具有以下 IAM 权限的角色:
-
cloudkms.cryptoKeys.list on all configure KeyRings.
-
cloudkms.cryptoKeyVersions.list on all CryptoKeys in each Configuration KeyRing。
-
cloudkms.cryptoKeyVersions.viewPublicKey,用于所有已配置的密钥圈中包含的所有非对称密钥。
-
cloudkms.cryptoKeyVersions.use to Decrypt 或 cloudkms.cryptoKeyVersions.use 对要用于解密或签名的任何密钥进行签名。
-
cloudkms.cryptoKeys.create 如果您打算创建密钥。
-
cloudkms.cryptoKeyVersions.destroy 如果您打算销毁密钥。
您还可以使用下面列出的预定义 IAM 角色组来授予服务账户所需的权限。有关与上述每个组关联的角色的详细信息,请参阅 权限和角色。
-
-
从 GUI 或使用 GCP CLI 将 IAM 角色附加到 vSRX 虚拟防火墙 3.0 实例。
如上所述,创建服务账户并授予所需的 IAM 角色后,您可以使用此服务账户创建新的 vSRX 虚拟防火墙 3.0 实例,也可以将现有的 vSRX 虚拟防火墙 3.0 实例设置为使用该服务账户。
有关更多信息,请参阅 为实例创建和启用服务帐户。
创建钥匙圈
为 vSRX 虚拟防火墙 3.0 实例授予与 KMS 通信所需的访问权限后,您需要创建密钥环,这是 KMS 服务中的一个组件,vSRX 虚拟防火墙 3.0 创建的密钥将驻留在该组件中。
密钥环可以使用 gcloud 或从控制台创建。有关详细信息,请参阅 创建密钥环
.此外,GCP KMS 不允许使用之前已使用和创建的 ID 创建密钥。GCP KMS 也不允许删除现有密钥和创建另一个同名密钥。
注意:可以在一个特定区域、双区域或多区域位置创建密钥环。位置是指将在其中保存密钥的数据中心。如果使用一个特定区域键,则仅位于该位置。对于双区域,密钥将复制到其他区域,这同样意味着多区域位置。有关更多信息,请参阅 云 KMS 位置。
创建密钥环后,请记下密钥环的资源 ID,因为使用 CLI 输入到 vSRX 虚拟防火墙 3.0 时需要该资源 ID。vSRX 虚拟防火墙 3.0 上的 GCP PKCS#11 KMS 库将使用此资源 ID 与 KMS 通信。在密钥环中创建的密钥名称可以包含字母、数字、下划线 (_) 和连字符 (-)。
-
-
-
使用命令提供
request security hsm set gcp project <name_of_project> location <location_of_key_ring> key-ring <name_of_key_ring>
GCP 密钥环资源信息。有关更多信息,请参阅 获取云 KMS 资源 ID -
启用 KMS 服务后,您需要使用 vSRX 虚拟防火墙 3.0 上的命令指定
request security hsm master-encryption-password set plain-text-password
主加密密钥 (MEK)。指定 MEK 后,vSRX 虚拟防火墙 3.0 将在 KMS 中创建 RSA 2048 密钥对 (MBK),并使用 KMS 中的主绑定密钥 (MBK) 加密 MEK。然后,MEK 用作加密静态数据的密钥,例如配置哈希、私钥对文件和主密码文件。
-
更改主加密密码。
如果要更改主加密密码,则可以从操作模式运行
request security hsm master-encryption-password set plain-text-password
命令:注意:建议在更改主加密密码时不要进行任何配置更改。
系统检查是否已配置主加密密码。如果配置了主加密密码,则系统会提示您输入当前的主加密密码。
输入的主加密密码将根据当前主加密密码进行验证,以确保这些主加密密码匹配。如果验证成功,系统将提示您以纯文本形式输入新的主加密密码。系统将要求您输入密钥两次以验证密码。
然后,系统继续使用新的主加密密码重新加密敏感数据。您必须等待此重新加密过程完成,然后才能再次尝试更改主加密密码。
如果加密的主加密密码文件丢失或损坏,系统将无法解密敏感数据。系统只能通过以明文形式重新导入敏感数据并重新加密来恢复。
-
使用命令检查
show security hsm status
HSM 状态以检查 KMS 是否已启用且可访问,还显示正在使用的密钥环的资源 ID、主绑定密钥 (MBK) 和主加密密钥 (MEK) 状态。
验证 HSM 的状态
显示安全 HSM 状态
语法
show security hsm status
发布信息
在 Junos OS 19.4R1 版中引入的命令。
描述
显示硬件安全模块 (HSM) 的当前状态。您可以使用此 show security hsm status
命令检查 HSM 的状态、主绑定密钥、主加密密码和云供应商详细信息。
选项
此命令没有选项。
所需权限级别
安全
输出字段
表 1 列出了命令 show security hsm status
的输出字段。
字段名称 |
字段说明 |
---|---|
|
指定是启用还是禁用 HSM。 |
|
显示 HSM 的主绑定密钥状态,无论是否在 HSM 中创建。HSM 生成加密密钥并对其进行加密,以便这些密钥只能由 HSM 解密。此过程称为绑定。每个 HSM 都有一个主绑定密钥,也称为存储根密钥。 |
|
显示主加密配置状态,无论是否设置。配置的加密数据和哈希由使用 Microsoft 密钥保管库 (HSM) 服务的 vSRX 虚拟防火墙保护。 |
|
显示特定于云供应商的详细信息。 |
示例输出
显示安全 HSM 状态(vSRX 虚拟防火墙最初启动但未启用 GCP KMS 功能时输出的 HSM 状态命令)
user@host> show security hsm status
HSM Status: Accessible: no Master Binding Key: not-created Master Encryption Key: not-configured
显示安全 HSM 状态(与 GCP KMS 成功集成后的 HSM 状态命令输出)
user@host> show security hsm status
HSM Status: Accessible: yes Master Binding Key: not-created Master Encryption Key: not-configured GCP Key Ring: projects/example-project-98765/locations/us-central1/keyRings/example-ring
请求安全 HSM 主加密密码
语法
request security hsm master-encryption-password set plain-text-password
发布信息
在 Junos OS 19.4R1 版中引入的命令。
描述
使用此命令设置或替换密码(纯文本)。
选项
plain-text-password | 设置或替换密码(纯文本)。 |
所需权限级别
维护
输出字段
输入此命令时,系统会提供有关请求状态的反馈。
示例输出
请求安全 HSM 主加密密码设置纯文本密码
user@host> request security hsm master-encryption-password set plain-text-password
Enter new master encryption password: Repeat new master encryption password: Binding password with HSM Master encryption password is bound to HSM Encoding master password .. Successfully encoded master password Deleting all previous local certificates, keypairs and certificate requests