Encryption at rest in Elastic Cloud: Bring your own key with AWS KMS
TL;DR · AI 摘要
Elastic Cloud通过AWS KMS实现BYOK静态加密,提供自定义密钥管理方案,需升级至企业版并配置IAM策略。
核心要点
- BYOK功能需升级至Elastic Cloud企业订阅版本
- AWS KMS密钥需为对称单区域或跨区域副本密钥
- 部署后需手动提供密钥ARN或别名至Elastic Cloud
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Elastic Cloud AWS KMS BYOK集成
- 架构
- 密钥管理流
- 数据加密流程
- 实施步骤
- 企业版升级
- KMS密钥创建
- IAM策略配置
- 安全策略
- 密钥轮换
- 权限控制
- 审计验证
金句 / Highlights
值得收藏与分享的关键句。
BYOK功能仅对Elastic Cloud企业版开放,需提前升级订阅
跨区域部署需使用多区域副本密钥,单区域密钥仅支持同区域部署
自定义快照仓库不会自动继承密钥加密,需单独配置加密策略
Elastic Cloud 中的静态数据加密:使用 AWS KMS 自带密钥 | Elastic 博客
Elastic Cloud 中的静态数据加密:使用 AWS KMS 自带密钥
作者:
Jonathan Simon
Alex Chalkias
Udayasimha Theepireddy
2024 年 8 月 1 日
- 在 Twitter 上分享 在 Twitter 上分享
- 在 LinkedIn 上分享 在 LinkedIn 上分享
- 在 Facebook 上分享 在 Facebook 上分享
- 通过电子邮件分享 通过电子邮件分享
- 打印本页 打印
在本系列的上一篇博客中,我们解析了静态数据加密的基础概念,并向您介绍了 Elastic Cloud 的“自带密钥”(BYOK)功能,该功能允许您使用云服务提供商的 KMS 服务管理的加密密钥进行静态数据加密。在掌握这些知识的基础上,本文将深入探讨如何使用 AWS KMS 密钥和 Elastic Cloud 部署实现静态数据加密的技术细节,为您敏感数据提供安全合规的存储环境。
我们将首先介绍该方案的架构及其前提条件,然后探讨如何创建 AWS KMS 密钥并将其应用于 Elastic Cloud 托管部署,以实现对静态数据和快照的加密。此外,我们还将展示如何验证您的配置,以及如何实施额外的安全策略,例如密钥轮换和撤销。
Elastic Cloud 与 AWS KMS 集成
架构
下图展示了 Elastic Cloud 如何与 AWS KMS 集成,为您的应用提供使用您自定义 KMS 密钥加密的托管堆栈部署。
前提条件
- 获取您的密钥:要使用 BYOK 功能,您需要一个由您控制的密钥。您需要在 AWS KMS 账户中设置该密钥。创建对称单区域密钥或多区域复制密钥。该密钥必须在您部署加密的每个区域中可用。您可以使用同一密钥加密多个部署,尽管安全最佳实践建议每个部署使用不同的密钥。稍后,您需要向 Elastic Cloud 提供该密钥或密钥别名的 Amazon 资源名称(ARN)。目前我们支持以下密钥材料来源类型:
- KMS:AWS 创建的密钥材料
- External:导入的密钥材料
- External Key Store (XKS):通过 AWS XKS 代理提供的密钥材料
- 升级到企业版:BYOK 功能仅在企业订阅级别可用。这意味着如果您在 AWS 上使用 Elastic,可以使用自己的密钥加密数据。其他云服务提供商将在后续提供此功能。
注意:如果您使用自定义快照存储库而不是 Elastic Cloud 的默认存储库,您的快照将不会自动使用您的密钥进行加密。不过,文件系统本身仍会加密存储在磁盘上的数据。
- 访问控制:创建 AWS 身份和访问管理(IAM)策略以控制对 Elastic 集群的访问。
创建和配置 AWS KMS 密钥
要开始创建密钥流程,请前往 AWS 控制台的 KMS 服务。点击 创建密钥。
在密钥创建流程的第 1 步,点击 下一步。
在密钥创建流程的第 2 步,为密钥输入一个别名,然后点击 下一步。
在第 3 步,您可以选择添加密钥管理员。点击 下一步。
在第 4 步,您可以选择添加密钥用户。点击 下一步。
点击 完成 以创建 KMS 密钥。
点击 查看密钥 以查看新创建密钥的详细信息。
开始更新密钥以将 Elastic 添加到密钥策略的过程。在密钥策略部分点击 切换到策略视图。
点击“编辑”以修改密钥策略。
复制以下代码并粘贴到现有密钥策略中。这是一个单独语句,而非完整策略。有效的密钥策略还需要包含Version属性、Statement数组,以及允许管理密钥的语句。如果需要查看完整示例,请参阅产品文档中的示例。
,
{
"Sid": "ElasticKeyAccess",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GetKeyRotationStatus",
"kms:GenerateDataKey",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"aws:PrincipalOrgPaths": "o-ygducmlz12/r-e5t3/ou-e5t3-fzpdq76p/ou-e5t3-ysfcmd95/ou-e5t3-hwt05su3/*"
}
}
}复制到剪贴板
更新后的密钥策略应类似如下所示。请注意PrincipalOrgPaths是一个固定值,指向Elastic租户。点击“保存更改”。
现在您的KMS密钥已准备就绪,点击“别名”选项卡以访问密钥别名。
复制密钥别名ARN。将其保存在安全位置,供后续步骤使用。
将AWS KMS密钥与Elastic Cloud集成
现在您可以创建一个使用刚刚创建的AWS KMS密钥的新Elastic部署。首先登录到Elastic Cloud控制台。
更新:您现在也可以将客户管理密钥添加到现有部署中。请参阅《将密钥添加到现有Elastic Cloud部署》。
登录控制台后,点击“创建部署”按钮。
为您的部署输入名称,并选择Amazon Web Services作为云服务提供商。
然后展开“高级设置”部分,启用“使用客户管理的加密密钥”选项。粘贴之前步骤中复制的AWS KMS密钥别名ARN。点击“创建部署”。
部署现已创建,并使用指定密钥进行加密。
更新:您现在也可以在不重新创建部署的情况下,将客户管理密钥添加到正在运行的部署中。请参阅《将密钥添加到现有Elastic Cloud部署》。
验证与故障排除
在Elasticsearch服务控制台中,您可以检查托管部署是否已使用指定密钥正确加密。为此,请通过左侧导航菜单选择“安全”进入部署的“安全”页面。
在“静态加密”部分选择“管理加密密钥”。
您应该在“AWS KMS密钥ARN”字段中看到之前复制的AWS KMS密钥别名ARN。
密钥轮换与撤销
使用AWS KMS密钥加密的Elastic Cloud托管部署也支持AWS KMS密钥安全策略和功能,如密钥轮换和密钥撤销。密钥轮换可降低因密钥泄露导致的数据泄露风险。密钥撤销是一种额外的安全措施,通过禁用/删除密钥或修改密钥的IAM策略,终止通过泄露密钥访问加密数据的权限。
AWS KMS密钥默认在一年后自动轮换,但此轮换周期可以自定义。必要时也可以在AWS中手动轮换KMS密钥。Elastic会无缝处理AWS KMS密钥轮换,确保您的Elastic Cloud部署中的数据始终保持加密状态,并可通过最新的AWS KMS密钥访问。
如果当前密钥 ever 被泄露,您可以在 AWS KMS 中手动撤销该密钥。这是一种用于安全事件的“破窗”操作。密钥被撤销后 30 分钟内,Elastic Cloud 将锁定部署的数据目录并提示您删除部署。如果您意外撤销了密钥,可以恢复该密钥。密钥恢复后,部署将恢复运行。
结论
您现在已了解如何在 AWS 上运行的 Elastic 部署中使用 BYOK(自带密钥)进行加密的完整流程。首先创建了 AWS KMS 密钥,并为其配置了 Elastic 管理和轮换密钥凭证所需的策略设置。然后创建了一个 Elastic Cloud 部署,使用该密钥对部署中的数据进行加密。
在本系列的下一篇文章中,我们将介绍如何通过 Azure Key Vault 为运行在 Microsoft Azure 上的 Elastic Cloud 部署实现“自带密钥”。
立即亲自尝试。使用您自己的 AWS KMS 密钥创建 Elastic Cloud 部署,从而提升 Elastic Cloud 部署的整体安全性。您可以在产品文档中找到有关 Elastic Cloud 和 AWS KMS 的更多信息。
本文中描述的任何功能或功能的发布和时间安排均由 Elastic 单独决定。任何当前不可用的功能可能无法按时或根本不会交付。