使用没有 OCI API 网关的 Thales CipherTrust Manager 设置 OCI Hold Your Own Key
简介
本教程提供了在不使用 Oracle Cloud Infrastructure (OCI) API Gateway 选项的情况下,通过 Thales CipherTrust Manager (CTM) 设置“Hold Your Own Key (HYOK)”的分步说明。通过此方法,您可以完全控制加密密钥,同时与支持外部密钥管理的 OCI 服务集成。
我们将介绍整个配置,首先查看网络架构并在 OCI 中设置应用程序集成,然后配置 Thales CipherTrust Manager 以通过专用端点直接与 Oracle Cloud Infrastructure External Key Management Service (OCI External Key Management Service) 通信。该教程还包括创建和注册身份提供者、OCI 租户、外部 Vault 和密钥,以及使用这些外部密钥测试对客户管理的对象存储的访问。
在本教程结束时,您将拥有完全可操作的 HYOK 设置,可以使用 Thales CipherTrust Manager 上托管的外部托管密钥来加密和控制对 OCI 资源的访问,而无需中间 OCI API 网关。
注意:在本教程中,术语 Thales CipherTrust Cloud Key Manager (CCKM) 和 Thales CipherTrust Manager (CTM) 可以互换使用。两者均指同一产品。
本教程基于教程中建立的 technical foundation: Set Up Two Thales CipherTrust Cloud Key Manager Appliances in OCI,Create a Cluster between them,and Configure One as a Certificate Authority 。
如果要实施使用带有 OCI API Gateway 的 Thales CipherTrust Manager 实施自有密钥 (Hold Your Own Key,HYOK) ,请遵循以下教程:在 OCI API Gateway 中使用 CipherTrust Manager 设置 OCI Hold Your Own Key 。
目标
- 任务 1:查看云网络体系结构。
- 任务 2:创建机密资源应用程序和关联的机密客户端应用程序(应用程序集成),并在 OCI 中收集客户端和密钥。
- 任务 3:从 OCI 收集身份域 URL。
- 任务 4:在 Thales CipherTrust Manager 中创建身份提供者。
- 任务 5:在 Thales CipherTrust Manager 中添加 Oracle 租户。
- 任务 6:为 OCI External Key Manager 服务创建专用端点。
- 任务 7:在 Thales CipherTrust Manager 中添加外部 Vault。
- 任务 8:创建 OCI External Key Management Service Vault。
- 任务 9:在 Thales CipherTrust Manager 中添加外部密钥。
- 任务 10:在 OCI 中创建关键引用。
- 任务 11:使用客户管理的密钥创建 OCI Object Storage 存储桶。
- 任务 12:在 Thales CipherTrust Manager 和 OCI 中块和解锁 Oracle 密钥并测试对象存储存储桶可访问性。
下图说明了本教程中设置所有步骤的组件和配置。
任务 1:查看云网络体系结构
在我们深入了解使用 Thales CipherTrust Manager 配置 Hold Your Own Key (HYOK) 的技术步骤之前,必须了解此设置所在的云网络体系结构。
在此场景中,使用了三个 OCI 区域:
- 两个 OCI 区域模拟本地数据中心。这些区域通过 VPN 隧道连接到 OCI,代表混合环境。
- 第三个 OCI 区域表示主 OCI 环境,遵循中心辐射型虚拟云网络 (VCN) 架构。在此设计中:
- hub VCN 托管共享网络服务,例如防火墙。
- 多个请求 VCN 连接到中心并托管各种工作负载。
使用远程对等连接 (Remote Peering Connections,RPC) 在两个模拟的内部部署数据中心之间建立连接。但是,对于本教程,VPN 设置、RPC 配置和中心辐射型 VCN 体系结构详细信息被视为超出范围,不会被覆盖。
-
要在模拟数据中心的 OCI 中设置 VPN 连接,请参阅在两个 OCI 区域之间设置具有静态路由的 Oracle Cloud Infrastructure Site-to-Site VPN 。
-
要在 OCI 区域之间设置 RPC 连接,请参阅在两个租户及其动态路由网关之间设置 RPC 连接。
-
要设置 OCI Hub 和分支 VNC 网络架构,请参阅在 Hub VCN 中使用 pfSense 防火墙路由 Hub 和 Spoke VCN 。
本教程的重点是使用部署在阿姆斯特丹 (AMS) 区域中的 Thales CipherTrust Manager 设置 HYOK,该区域是模拟的内部部署数据中心之一。将从此 Thales CipherTrust Manager 实例执行所有密钥管理操作。
通过外部密钥管理器专用,OCI 可以与外部 Thales CipherTrust Manager 安全通信,并将部署在主 OCI 区域中的一个分支 VCN 中。这可确保 OCI 服务与外部密钥管理器之间的安全直接通信路径,而不会向公共互联网公开流量。
此架构通过在明确定义的安全网络边界内隔离密钥管理,为 OCI 中的敏感工作负载提供强大的安全性和合规性状况。
下图显示了完整的体系结构。
任务 2:创建机密资源应用程序并关联机密客户端应用程序(应用程序集成)并在 OCI 中收集客户端和密钥
要启用 HYOK 与 Thales CipherTrust Manager 的集成,必须在 OCI 和外部密钥管理器之间建立信任。
这是通过在 OCI Identity and Access Management (OCI IAM) 中注册两个关键组件来实现的:机密资源应用程序和机密客户端应用程序。这些功能对于验证和授权 OCI 与 Thales CipherTrust Manager 之间的通信至关重要。
通过此设置,Thales CipherTrust Manager 可以通过 OCI IAM 到 OAuth 2.0 进行验证。机密客户机代表外部密钥管理器执行操作,而机密资源定义了访问和信任配置的范围。如果没有这些组件,OCI 无法验证外部密钥源或安全地与外部密钥源通信。
下图说明了此步骤中的组件和配置设置。
-
登录到 OCI 控制台,导航到身份和安全,然后单击域。
-
单击要用于验证的域。
-
单击集成应用程序和添加应用程序。
-
选择机密应用程序,然后单击启动工作流。
-
输入应用程序名称 (
Resource_App
),然后单击下一步。 -
在 Resource Server configuration(资源服务器配置)部分中,输入以下信息。
- 选中 Configure this application as a resource server now(立即将此应用程序配置为资源服务器)。
- 在主要受众中,输入
https://10.222.10.111/
(AMS CTM1 服务器的 IP 地址)。
-
在添加范围中,输入以下信息。
- 选择添加范围。
- 单击添加。
- 在范围中,输入
oci_ekms
。 - 单击添加。
-
请注意添加的范围
oci_ekms
并向下滚动。 -
在客户机配置部分中,输入以下信息。
- 选择立即将此应用程序配置为客户端。
- 选择客户端身份证明。
- 单击下一步。
-
单击 Skip and do later 以跳过创建 Web 层策略,然后单击 Finish(完成)。
-
转到集成应用程序页。
- 请注意,已创建
Resource_App
集成应用程序。 - 选择
Resource_App
集成应用程序。 - 单击 Actions 下拉菜单。
- 单击激活。
- 请注意,已创建
-
单击 Activate application(激活应用程序)。
-
单击
Resource_App
集成应用程序。 -
向下滚动。
-
复制客户端 ID 并将其存储在记事本上。单击显示密钥以显示客户端密钥。
-
单击复制以复制客户端密钥,并将其存储在记事本上。单击关闭。
-
单击添加应用程序。
-
选择机密应用程序,然后单击启动工作流。
-
输入应用程序名称 (
Client_App
) 并单击下一步。 -
在资源服务器配置中,选择跳过以备后用。
-
在客户机配置中,输入以下信息。
- 选择立即将此应用程序配置为客户端。
- 选择客户端身份证明。
- 向下滚动。
-
在添加范围中,输入以下信息。
- 选择添加资源。
- 选择添加范围。
- 在范围中,输入
Resource_App
。 - 单击添加。
-
请注意添加的资源
Resource_App
并单击下一步。 -
单击 Skip and do later 以跳过创建 Web 层策略,然后单击 Finish(完成)。
-
转到集成应用程序页。
- 请注意,已创建
Client_App
集成应用程序。 - 选择
Client_App
集成应用程序。 - 单击 Actions 下拉菜单。
- 单击激活。
- 请注意,已创建
-
单击 Activate application(激活应用程序)。
-
单击
Client_App
集成应用程序。 -
向下滚动。
-
复制客户端 ID 并将其存储在记事本上。单击显示密钥以显示客户端密钥。
-
单击复制以复制客户端密钥,并将其存储在记事本上。单击关闭。
注:
- 您已收集了
Resource_App
和Client_App
客户端 ID 和客户端密钥。- 请勿混合这两者,并在适当的位置配置它们。
任务 3:从 OCI 收集身份域 URL
要在 OCI 与 Thales CipherTrust Manager 之间启用基于 OAuth 的通信,需要在 Thales CipherTrust Manager 中配置身份提供者期间提供身份域 URL 。
-
转到 OCI 控制台,导航到身份和安全,然后单击域。
-
选择在其中创建机密应用程序的身份域。
-
在域详细信息页中,单击复制以复制域 URL ,并将其存储在记事本上。
任务 4:在 Thales CipherTrust Manager 中创建身份提供者
在此任务中,您将在 Thales CipherTrust 管理器中配置身份提供者。此设置允许 Thales CipherTrust Manager 使用在任务 3 中创建的 OAuth 2.0 身份证明通过 OCI 进行验证。
下图说明了此任务中的组件和配置设置。
-
在 Thales CipherTrust Manager 中,转到 AMS 中的 CTM1,然后单击 Products(产品)和 Cloud Key Manager(云密钥管理器)。
-
单击 KMS 容器和 Oracle Vault ,选择外部 Vault ,然后单击添加身份提供者。
-
在添加身份提供者中,输入以下信息,然后单击添加。
- 输入名称 (
OCI
)。 - 选择 OpenID 配置 URL 作为 Provider Verifier 。
- 输入 OpenID Configuration URL ,即在任务 3 中复制的域 URL。
- 将以下后缀添加到 URL:
.well-known/openid-configuration
。因此,完整的 OpenID 配置 URL 将为:https://idcs-<xxx>.identity.oraclecloud.com:443/.well-known/openid-configuration
。
- 将以下后缀添加到 URL:
- 选择 jwks Protected URL 。
- 输入
Resource_App
集成应用程序的 Client ID(客户端 ID)和 Client Secret(客户端密钥)。
- 输入名称 (
-
请注意,已创建身份提供者。
任务 5:在 Thales CipherTrust Manager 中添加 OCI 租户
在 Thales CipherTrust Manager 中配置身份提供者后,下一个任务是注册 OCI 租户。这允许 Thales CipherTrust Manager 使用以前配置的 OAuth 身份证明代表您的 OCI 环境管理外部 Vault 和密钥。
下图显示了在此任务中设置的组件和配置。
-
首先,我们必须从 OCI 获取租户的名称和 OCID。单击右上角的 profile ,然后单击 Tenancy 。
-
复制租户的名称和租户的 OCID 并将其存储在记事本中。
-
转到 Thales Cloud Key Manager 控制台。
- 单击 KMS 容器。
- 单击 Oracle Vault 。
- 单击租户。
- 单击添加租户。
-
在添加租户中,输入以下信息。
- 选择 Oracle Tenancy (no connection) 作为方法。
- 输入从 OCI 收集的租户的名称。
- 输入从 OCI 收集的租户 OCID 。
- 单击添加。
-
请注意,OCI 租户已添加到 Thales CipherTrust Manager。
任务 6:在 OCI 中为外部密钥管理器服务创建专用端点
要安全地将 OCI 连接到 Thales CipherTrust Manager,而不向公共互联网公开流量,必须为 OCI 外部密钥管理服务创建专用端点。
这可确保 OCI 与 Thales CipherTrust Manager 之间的所有通信都通过受控的专用网络路径进行。
请确保满足以下先决条件:
- Thales CipherTrust Manager 必须通过专用网络设置从 OCI 访问。例如,通过 VPN。
- 确保子网具有路由和安全规则,允许流量进入 Thales CipherTrust Manager 实例。
下图说明了此任务中的组件和配置设置。
-
在 OCI 控制台中,导航到身份和安全,然后单击专用端点。
-
转到专用端点,然后单击创建专用端点。
-
在创建专用端点中,输入以下信息。
- 输入专用端点名称 (
Private-Endpoint-For-Vault
)。 - 选择此专用端点需要位于的 VCN 和子网。
- 输入 Private IP address of the External Key Manager(外部密钥管理器的专用 IP 地址)作为
10.222.10.111
AMS CTM1 服务器的 IP 地址。 - 输入 Port 作为
443
。 - 上载 External Key Management CA bundle ,然后单击 Browse(浏览)。
- 输入专用端点名称 (
-
我们选择了本教程中创建的完整链证书:在 OCI 中设置两个 Thales CipherTrust Cloud Key Manager 设备、在它们之间创建集群以及将一个配置为证书颁发机构,但您也可以仅选择 CA 根证书。单击打开。
-
确保已选择 Thales CipherTrust 管理器的证书、根 CA 或完整链证书。单击创建。
-
请注意,将创建专用端点。现在,单击专用端点。
-
请注意,已配置专用端点的 IP 地址。
任务 7:在 Thales CipherTrust Manager 中添加外部 Vault
实施 OCI 租户和专用端点后,下一个任务是在 Thales CipherTrust Manager 中添加 External Vault 。Thales CipherTrust Manager 中的外部 Vault 是一个逻辑容器,它映射到 OCI 中的外部密钥管理 Vault,使 Thales CipherTrust Manager 能够管理用于 HYOK 加密的密钥。
下图说明了此任务中的组件和配置设置。
-
转到 Thales Cloud 密钥管理器控制台。
- 单击 KMS 容器。
- 单击 Oracle Vault 。
- 选择外部 Vault 。
- 单击添加外部 Vault 。
-
在添加外部 Vault 中,输入以下信息。
- 输入名称 (
OCI
)。 - 选择 Oracle Tenancy (no connection) 作为方法。
- 选择在任务 5 中创建的租户。
- 选择在任务 4 中创建的身份提供者 Issuer 。
- 向下滚动。
- 输入
Client_App
集成应用程序的客户端 ID 。 - 在 Endpoint URL Hostname(端点 URL 主机名)中输入
10.222.10.111
,即 AMS CTM1 服务器的 IP 地址。 - 输入 Port 作为
443
。 - 单击添加。
- 输入名称 (
-
请注意,已配置外部保管库。复制外部 Vault URL 并将其存储在记事本上。
配置后,此 Vault 将成为用于存储 OCI 服务将引用的外部密钥的目标位置。它可以桥接您的 OCI 环境和 CipherTrust 管理的密钥,从而全面控制 HYOK 模型中的加密操作。
任务 8:创建 OCI External Key Management Service Vault
在 Thales CipherTrust Manager 中定义了外部 Vault 后,下一个任务是在 OCI 控制台中创建对应的外部密钥管理 Vault 。
此 OCI Vault 将链接到您的 Thales CipherTrust Manager,OCI 服务将使用外部密钥执行加密和解密操作。
下图说明了此任务中的组件和配置设置。
-
从任务 3 检索域 URL ,您将需要在 OCI 中配置外部密钥 Vault。
-
在 OCI 控制台中,转至身份和安全,然后单击外部密钥管理。
-
单击创建 Vault 。
-
在创建 Vault 中,输入以下信息。
- 输入名称 (
OCI_EKMS_Vault
)。 - 输入 IDCS 账户名称 URL ,即从任务 7 复制的域 URL。因此,完整的 URL 将为:
https://idcs-<xxx>.identity.oraclecloud.com:443/
。 - 输入
Client_App
集成应用程序的 Client ID(客户端 ID)和 Client Application Secret(客户端应用程序密钥)。 - 向下滚动。
- 选择在任务 6 中创建的专用端点。
- 输入在 CTM1 上创建外部 Vault 时从任务 7 复制的外部 Vault URL。
- 单击创建 Vault 。
- 输入名称 (
-
请注意,已创建 Vault。现在,单击 Vault。
-
查看 Vault Details 。
OCI 现在将使用指定的专用端点连接到 Thales CipherTrust Manager。此 Vault 处于活动状态后,它将成为 OCI 与 CCKM 管理的外部密钥进行交互的界面,从而为 OCI Object Storage、OCI Block Volumes 等 OCI 服务提供 HYOK 支持。稍后,我们将使用 OCI Object Storage 执行一些测试。
任务 9:在 Thales CipherTrust Manager 中添加外部关键字
通过在 Thales CipherTrust Manager 中设置外部 Vault 并链接到 OCI,下一个任务是创建或导入 OCI 将用于启用 HYOK 的服务的外部加密密钥。
这些密钥安全地驻留在 Thales CipherTrust Manager 中,由 OCI 通过外部密钥管理界面引用。根据您的组织要求,您可以直接在 Thales CipherTrust Manager 中生成新密钥或导入现有密钥。
下图说明了此任务中的组件和配置设置。
-
转到 Thales Cloud Key Manager 控制台。
- 单击云密钥。
- 单击 Oracle 。
- 单击 Add Key 。
-
在添加 Oracle 密钥中,输入以下信息。
- 选择 Oracle External (HYOK) 。
- 选择在任务 8 中创建的 Thales CipherTrust Manager Vault 。
- 选择 Source(源)为 CipherTrust(本地)。
- 单击下一步。
-
在源关键字中,输入以下信息。
- 选择源密钥材料以成为创建新密钥。
- 输入密钥 Name (
CM_Key
)。 - 单击下一步。
-
在 Configure Oracle Key 中,输入以下信息。
- 输入 Oracle 密钥名称 (
CM_Key
)。 - 单击下一步。
- 输入 Oracle 密钥名称 (
-
单击 Add Key 。
-
单击关闭。
-
记下创建的密钥。
添加密钥后,OCI 将通过外部密钥管理 Vault 提供该密钥。但是,要允许 OCI 服务使用该密钥,您必须在 OCI 控制台中创建密钥参考,我们将在下一个任务中介绍该参考。
注:
- 这些密钥永远不会离开 Thales CipherTrust 管理器。
- OCI 仅向外部密钥管理器发送加密/解密请求,确保始终对密钥材料保持完全控制。
任务 10:在 OCI 中创建密钥引用
外部密钥创建或导入 Thales CipherTrust 管理器后,下一个任务是在 OCI 控制台中创建密钥引用。密钥引用用作指针,允许 OCI 服务通过外部密钥管理 Vault 访问和使用存储在 Thales CipherTrust Manager 中的外部密钥。
下图说明了此任务中的组件和配置设置。
-
转到 Thales Cloud Key Manager 控制台。
- 单击云密钥。
- 单击 Oracle 。
- 单击在任务 9 中创建的密钥。
-
请注意,密钥将具有外部密钥 ID ,请复制此 ID。
-
返回到在任务 9 中创建的 OCI 中的 Vault,然后单击 Vault。
-
向下滚动。
-
单击创建密钥引用。
-
在创建密钥引用中,输入以下信息。
- 输入名称 (
OCI_Key_Reference
)。 - 输入复制的 External Key ID(外部密钥 ID) (Thales CipherTrust Manager) 密钥。
- 单击创建密钥引用。
- 输入名称 (
-
请注意,密钥引用已创建。
OCI 现在会将此密钥引用与 Thales CipherTrust Manager 中管理的外部密钥关联。这使得 OCI Object Storage、OCI Block Volumes 等 OCI 服务能够通过专用端点将加密请求发送到外部密钥。相比之下,关键材料本身完全由您控制。
我们将通过将密钥引用附加到 OCI 对象存储桶来立即测试密钥引用,以验证集成是否按预期工作。
任务 11:使用客户管理的密钥创建 OCI 对象存储桶
您可以使用 OCI 中引用的外部密钥加密资源。在此任务中,我们将创建一个 OCI Object Storage 存储桶,该存储桶使用通过外部密钥管理 Vault 在 Thales CipherTrust Manager 上托管的外部客户管理的密钥。
此设置可确保存储桶中存储的所有对象使用您完全控制的密钥进行加密,从而满足严格的合规性、主权或内部策略要求。
下图说明了此任务中的组件和配置设置。
-
转到 OCI 控制台,导航到存储并单击存储桶。
-
单击创建存储桶。
-
在创建存储桶中,输入以下信息。
- 输入名称 (
OCI_EKMS_Test_Bucket
)。 - 向下滚动。
- 在 Encryption(加密)中,选择 Encrypt using customer-managed keys(使用客户管理的钥匙进行加密)。
- 在 Vault 中,选择在任务 8 中创建的 External Key Management Vault 。
- 在关键字中,选择在任务 10 中创建的关键字参考。
- 单击创建。
- 输入名称 (
-
请注意,已创建存储桶。单击存储桶。
-
您可以向下滚动以上载文件或将其留空。
-
导航到 OCI 控制台的主屏幕或任何其他页面。
创建存储桶后,存储在其中的所有数据都将使用 Thales CipherTrust Manager 管理的外部密钥进行加密。这可确保 OCI 依赖您的关键基础设施进行访问和控制,从而实现完整的“自持密钥”(HYOK) 功能。
假设外部密钥变得不可用(例如,在 Thales CipherTrust Manager 中禁用或阻止)。在这种情况下,将拒绝对存储桶及其内容的访问,从而为您的数据安全状况提供强大的控制点。这是我们将在下一个任务中测试的内容。
任务 12:在 Thales CipherTrust Manager 和 OCI 中块和解锁 Oracle 密钥并测试 OCI 对象存储存储桶可访问性
"Hold Your Own Key"(自持密钥)(HYOK) 模式的主要优势之一是能够对加密密钥保持完全的运行控制,包括随时阻止或取消阻止加密密钥。本节演示如何使用 Thales CipherTrust Manager 通过阻止或取消阻止外部密钥来控制对 Oracle 托管的对象存储桶的访问。
阻止密钥可以有效地限制对使用该密钥加密的任何 OCI 资源的访问,而不会删除密钥或数据。取消阻止将恢复访问。
-
转到 Thales Cloud Key Manager 控制台。
- 单击云密钥。
- 单击 Oracle 。
- 单击 Key(密钥)末尾的三个点。
- 选择块。
-
选择块。
-
请注意,密钥现在在 Thales CipherTrust 管理器中处于已锁定状态。
-
转到 OCI 控制台,导航到 Storage(存储),然后单击 Buckets(时段)。
-
单击在任务 11 中创建的存储桶。
-
请注意,现在发生错误,无法访问存储桶中上载的任何文件。
现在,让我们再次解锁 Thales CipherTrust Manager 中的密钥。
下图说明了此任务中的组件和配置设置。
-
转到 Thales Cloud Key Manager 控制台。
- 单击云密钥。
- 单击 Oracle 。
- 单击 key 末尾的三个点。
- 选择 Unblock 。
-
选择 Unblock 。
-
请注意,密钥现在已在 Thales CipherTrust 管理器中取消阻止。
-
导航回时段详细信息页,或者刷新浏览器(如果仍位于该页)。
-
请注意,解锁时无法重新访问 OCI Object Storage 存储桶。
此功能为紧急响应、法规合规性和数据主权实施提供了强大的机制,可确保您完全控制在 OCI 中访问数据的时间和方式。
后续步骤
在本教程中,我们使用 Thales CipherTrust Manager 完成了 OCI Hold Your Own Key 的设置,而无需依赖 OCI API Gateway 选项。通过按照从配置身份集成和网络到部署外部 Vault 和密钥的步骤,您已启用安全且合规的密钥管理架构,可以在该架构中全面控制加密密钥。
此设置可确保 OCI Object Storage 等 OCI 服务使用外部管理的密钥进行加密操作,而密钥材料完全由您监管。您还可以看到 HYOK 的强大程度,只需在 Thales CipherTrust Manager 中切换密钥状态即可阻止和取消阻止对云资源的访问。
通过不使用 OCI API Gateway,您可以简化架构,同时通过专用网络和基于 OAuth 的身份信任来实施坚定的安全边界。
现在,您可以在生产就绪的 HYOK 实施中支持企业安全策略、法规合规性和数据主权要求,从而全面控制您的云加密策略。
相关链接
确认
- 作者 — Iwan Hoogendoorn(云网络黑带)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Set up an OCI Hold Your Own Key using Thales CipherTrust Manager without OCI API Gateway
G38103-01
Copyright ©2025, Oracle and/or its affiliates.