将你自己的密钥用于现有 Elastic Cloud 部署

作者:来自 Elastic Alex Chalkias

在运行中的部署中直接添加客户管理的加密密钥,无需重新创建部署。

对于现有部署,现在可以在 Elastic Cloud Hosted 上正式发布使用自带密钥(Bring your own key - BYOK)。你可以通过 Elastic Cloud 控制台或 API,向已经运行的部署添加客户管理的加密密钥,无需重新创建部署,而且整个过程中部署始终保持可访问状态。此前,只能在创建部署时设置密钥,这意味着如果之后出现密钥管理要求,就需要进行部署迁移。

在本系列前面的文章中,我们介绍了静态数据加密的基础概念,并分别介绍了如何通过 AWS KMS、Azure Key Vault 和 Google Cloud KMS,将你自己的密钥用于 Elastic Cloud Hosted 部署。当时的范围仅限于新部署。现在,我们扩大了范围,将现有部署也纳入其中,以提升易用性。本文将介绍发生了哪些变化、就地迁移是如何工作的,以及在对生产环境部署进行加密之前需要考虑哪些因素。

为什么此前 BYOK 需要新建部署

客户管理的密钥对于拥有大量既有部署,并且受到合规要求约束的组织来说最为重要。这些合规要求通常会明确规定由谁持有密钥,以及密钥被撤销的速度。金融服务和公共部门是最典型的例子。

而这些组织恰恰也是 "重新创建你的部署" 这一要求构成重大障碍的组织。这种方式确实可行,而且很多客户也确实采用了这种方式。但它会将一个安全决策变成一次迁移,需要重新指向新的端点,并协调切换。

因此,BYOK 虽然有效,但影响范围有限。

BYOK 如何用于现有部署

现在,你可以在正在运行的 Elastic Cloud Hosted 部署上启用 BYOK。Elastic Cloud 会应用一次计划变更,将每个实例替换为加密实例,并利用 Elasticsearch 原生分片分配机制迁移你的数据,然后移除旧实例。在重新加密期间,你的部署仍然可以访问。这与其他配置变更使用的是相同的计划变更机制,因此无需另外预订维护窗口。

所有支持新部署的密钥管理服务在这里同样适用:AWS KMS、Azure Key Vault 和 Google Cloud KMS。迁移完成后,该部署的行为与从第一天开始就使用 BYOK 创建的部署完全相同。你在 KMS 中执行的密钥轮换会自动生效,而撤销密钥仍然是你的紧急控制手段。撤销密钥后,Elastic Cloud 最迟会在 30 分钟内锁定部署的数据目录。在锁定期间,部署会保留其所有数据,但既无法读取也无法写入;在 KMS 中恢复密钥 访问权限 后,部署即可恢复在线。如果始终无法恢复访问权限,那么这些数据最终会按照预期被加密销毁。

迁移完成后,部署的 found-snapshots 仓库会指向一个使用你的密钥加密的新存储桶,此后创建的每个快照都会存储在那里。迁移之前创建的快照仍保留在原始存储桶中,并且无法再通过该仓库访问。该存储桶之后是保留还是回收取决于你的数据层,但无论哪种情况,你的快照历史都会从头开始。在开始之前,请阅读下面的注意事项。

前置条件

  • 在你的云服务提供商的 KMS 中拥有一个由你控制的密钥 ,并配置允许 Elastic Cloud 使用该密钥的访问策略。本系列前面的文章分别针对 AWS KMS、Azure Key Vault 和 Google Cloud KMS 逐步介绍了这一过程。对于现有部署,密钥创建方式没有任何变化。

  • Enterprise 订阅 ------ 与新部署使用 BYOK 时适用的资格要求相同。如果你的部署中没有显示此选项,请联系 Elastic Support。

  • 与你的部署使用相同云服务提供商的密钥,并且该密钥需要在部署运行的每个区域中都可用。AWS 部署需要 AWS KMS 密钥,Azure 部署需要 Azure Key Vault 密钥,Google Cloud 部署需要位于部署所在区域的单区域密钥环中的 Cloud KMS 密钥。不接受多区域密钥环。

  • 不存在在冷阶段或冻结阶段将 found-snapshots 指定为快照仓库的索引生命周期管理策略。 如果存在此类策略,迁移会在开始之前被拒绝。由于 found-snapshots 是每个 Elastic Cloud Hosted 集群默认获得的仓库,因此被此检查拦截的部署数量可能比你预期的更多。该检查读取的是策略本身,而不是使用这些策略的索引,因此,即使某个策略已经定义但尚未使用,也会阻止你执行此操作。运行 GET _ilm/policy,然后查看 phases.cold.actions.searchable_snapshot.snapshot_repository,或者查看冻结阶段对应的配置,即可了解当前情况。

使用你的密钥加密现有部署

密钥准备就绪后,你可以在 Elastic Cloud 控制台中通过以下三个步骤完成迁移:

  1. 进入你的部署的 Security 页面。

  2. 在 Encryption at rest 下,选择 Manage encryption key。

  3. 输入你的密钥标识符:AWS 使用 ARN,Azure 使用密钥标识符,Google Cloud 使用资源 ID,然后保存更改。

部署 Security 页面,其中包含 Encryption at rest 部分和侧滑面板

包含密钥标识符字段的 Manage customer key 侧滑面板

Elastic Cloud 随后会应用计划变更,对你的数据和快照进行加密。部署的 Overview 页面会在迁移运行期间对其进行跟踪,并报告目前已有多少个实例完成重新加密;单个实例完成后会显示 Encrypted 标记。如果你想查看底层的计划步骤,横幅会提供指向 Activity 页面的链接。

Overview 页面显示 "Configuration change in progress" 横幅以及每个实例的重新加密进度

你也可以通过 Elastic Cloud API 执行此操作。如果你要在一组部署中推广 BYOK,这是更好的方式。现有部署使用专用端点 POST /api/v1/deployments/{deployment_id}/byok-migration,并在请求正文中提供你的密钥标识符。产品文档介绍了该操作所需的角色、返回的错误,以及如何轮询操作是否完成。

在部署上设置客户管理的密钥后,你无法编辑或删除该密钥。所有 BYOK 部署都适用这一点,无论部署最初创建时就使用了密钥,还是后来迁移为使用密钥。更改或删除密钥的功能计划在未来版本中提供。

开始之前的注意事项

  • 在配置为高可用性的部署上执行此操作,也就是说,使用两个或更多可用区,并且具有副本。高可用性并非强制要求,但迁移会在每个原始实例被其加密替换实例接管后将其移除,因此对于没有副本的部署,在分片迁移期间,每个分片都只有一个副本。在单可用区部署中,唯一的 Elasticsearch 节点以及因此由其担任的主节点也必须被替换,因此可能会出现短暂的中断。

  • 你的快照历史不会被保留。 迁移完成后,found-snapshots 会指向新的加密存储桶,而迁移之前创建的快照将无法再通过该仓库访问。计划会自动将一个新的快照保存到加密存储桶中,作为最后一步,因此你无需自行创建快照。如果你的保留或合规义务依赖于迁移前的快照,请在开始之前处理这些快照,因为这是迁移完成后无法撤销的部分。

  • 先在较小的部署上尝试此过程,并确认集群在迁移后运行正常,然后再处理任何关键业务部署。

  • 让加密过程运行至完成。 如果中途取消变更,部署将处于部分加密状态,你需要联系 Elastic Support 来完成加密。

  • 预计超大型部署需要一定时间,可能需要数小时甚至超过一天,尤其是在数据量大约超过 1 TB 时。

  • 预留云服务提供商账户中的数据传输成本。 对于 Elasticsearch 8.x 及更高版本的部署,预计这些成本会较低。

验证和故障排除

你可以在部署的 Security 页面确认加密状态。在 Encryption at rest 下选择 Manage encryption key,此时应该会列出你的密钥标识符。

如果部署因 Elastic Cloud 无法访问你的密钥而变得无法访问,则前面文章中的故障排除步骤保持不变。恢复密钥或其访问策略后,部署就会恢复运行。

开始在你的部署上使用 BYOK

BYOK 不再是部署第一天就必须做出的决定。如果你拥有 Enterprise 订阅的 Elastic Cloud Hosted 部署,现在就可以直接使用你自己的密钥对其进行加密,无需重新创建任何内容。

从部署的 Security 页面开始,并参阅产品文档了解完整详情。如果你是首次设置密钥,本系列前面的文章介绍了 AWS KMS、Azure Key Vault 和 Google Cloud KMS 的端到端配置。

常见问题

我可以在现有的 Elastic Cloud 部署上启用 BYOK 吗?

可以。你可以从部署的 Security 页面或通过 Elastic Cloud API,向正在运行的 Elastic Cloud Hosted 部署添加客户管理的加密密钥。此前,BYOK 只能在创建新部署时进行配置。此功能现已正式发布,并且需要 Enterprise 订阅。

在现有部署上启用 BYOK 会导致停机吗?

在重新加密期间,你的部署仍然可以访问。Elastic Cloud 会一次替换一个实例,将数据迁移到加密的替换实例后再移除原始实例,因此不会发生大规模 中断 ,尽管对于大型部署而言,该过程可能运行数小时或数天。请在配置为高可用性的部署上执行此操作:在单可用区部署中,唯一的 Elasticsearch 节点必须被替换,因此可能会出现短暂的中断。

支持哪些密钥管理服务?

AWS KMS、Azure Key Vault 和 Google Cloud KMS。KMS 必须与部署所在的云服务提供商匹配,并且密钥必须在部署使用的每个区域中都可用。例如,托管在 AWS 上的部署需要 AWS KMS 密钥。

启用 BYOK 后,现有快照会发生什么?

新的快照会使用你的密钥进行加密。现有快照不会被迁移:迁移完成后,found-snapshots 会指向新的加密存储桶,而在此之前创建的快照将无法再通过该仓库访问。计划完成时,会自动将一个新的快照保存到加密存储桶中。如果你的保留或合规义务涉及迁移前的快照,请在开始之前处理这些快照。

以后可以更改或删除客户管理的密钥吗?

目前还不可以。在部署上设置客户管理的密钥后,无法编辑或删除该密钥。无论部署是在创建时使用密钥,还是后来迁移为使用密钥,这一规则都适用。完全支持在你的 KMS 中进行密钥轮换。更改为其他密钥的功能计划在未来版本中提供。

本文中描述的任何功能或特性的发布和时间安排均由 Elastic 自行决定。任何当前尚未提供的功能或特性可能不会按时交付,或者可能不会交付。

原文:BYOK for existing Elastic Cloud deployments is now GA | Elastic Blog

相关推荐
IT大白鼠14 小时前
搜索系列 · 第 06 篇——避坑汇总:经典生产问题
elasticsearch·nosql
IT大白鼠17 小时前
搜索系列 · 第 07 篇——调优实战:写入、查询与监控
elasticsearch·nosql
Elasticsearch1 天前
检查 100 个候选项,而不是 1000 万个文档:更快速的 Elasticsearch kNN 过滤
elasticsearch
Elasticsearch1 天前
当 AI agent 群集出现时,银行能跟上吗?
elasticsearch
Sayai2 天前
Elasticsearch 日志检索 DSL 实战:时间范围查询、字段去重、分钟级统计与最新日志获取
大数据·运维·elasticsearch·搜索引擎·日志分析
阿狗童鞋2 天前
Elasticsearch实战指南
大数据·elasticsearch·搜索引擎
IT大白鼠2 天前
搜索系列 · 第 04 篇——部署实操:内网集群落地
运维·elasticsearch·nosql
Elastic 中国社区官方博客2 天前
使用 Jev 作为 search reranker:基准测试与实现方法
大数据·运维·elasticsearch·全文检索
Elasticsearch2 天前
签名、密封、交付:使用 Vault 和 cert-manager 进行 ECK 证书管理
elasticsearch