本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的密钥管理最佳实践 AWS KMS
使用 AWS Key Management Service (AWS KMS) 时,必须做出一些基本的设计决策。其中包括使用集中式还是分散式模式进行密钥管理和访问、要使用的密钥类型以及要使用的密钥存储类型。以下各节可帮助您做出适合您的组织和用例的决策。本节最后介绍禁用和删除 KMS 密钥的重要注意事项,包括为帮助保护数据和密钥而应采取的措施。
选择集中式或分散式模式
AWS 建议您在中使用多个帐户 AWS 账户 ,并将这些帐户作为单个组织进行管理AWS Organizations。在多账户环境中,有两种 AWS KMS keys 主要的管理方法。
第一种方法是去中心化方法,即在使用这些密钥的每个账户中创建密钥。将 KMS 密钥存储在与其保护的资源相同的账户中时,可以更轻松地将权限委托给了解其 AWS 委托人和密钥访问要求的本地管理员。您可以仅使用密钥策略来授权密钥的使用,也可以在 AWS Identity and Access Management (IAM) 中将密钥策略和基于身份的策略结合使用。
第二种方法是集中式方法,即在一个或几个指定的密钥中维护 KMS 密钥 AWS 账户。您允许其他账户仅使用密钥进行加密操作。您可以通过集中式账户管理密钥、密钥的生命周期和权限。您 AWS 账户 允许其他人使用密钥,但不允许其他权限。外部账户无法管理有关密钥生命周期或访问权限的任何内容。这种集中式模式可以帮助最大限度地降低被授权的管理员或用户意外删除密钥或权限升级的风险。
您选择的选项取决于几个因素。选择方法时,请考虑以下几点:
-
您是否有自动或手动配置密钥和资源访问权限的流程? 这包括部署管道和基础设施即代码 (IaC) 模板等资源。这些工具可以帮助您部署和管理多个资源(例如 KMS 密钥、密钥策略、IAM 角色和 IAM 策略) AWS 账户。如果您没有这些部署工具,那么集中式密钥管理方法对您的企业来说可能更易于管理。
-
您是否可以管理所有 AWS 账户 包含使用 KMS 密钥的资源的资源? 如果是这样,集中式模式可以简化管理,无需切换 AWS 账户 到管理密钥。但请注意,仍然必须按账户管理 IAM 角色和用户使用密钥的权限。
-
您是否需要向拥有自己 AWS 账户 和资源的客户或合作伙伴提供使用您的 KMS 密钥的权限? 对于这些密钥,集中式方法可以减轻客户和合作伙伴的管理负担。
-
您是否有通过集中访问或本地访问方法更好地解决的 AWS 资源访问权限要求? 例如,如果不同的应用程序或业务部门负责管理其自身数据的安全性,则最好采用分散的密钥管理方法。
-
您是否超过了的服务资源配额 AWS KMS? 由于这些配额是按比例设置的 AWS 账户,因此分散式模型会将负载分配给各个账户,从而有效地乘以服务配额。
注意
在考虑请求配额时,密钥的管理模式无关紧要,因为这些配额适用于针对密钥提出请求的账户委托人,而不是拥有或管理密钥的账户。
一般而言,我们建议您从去中心化方法开始,除非您可以明确表示需要集中式 KMS 密钥模型。
选择客户托管密钥、 AWS 托管密钥或 AWS 自有密钥
您创建和管理的、用于自己的加密应用程序的 KMS 密钥称为客户托管密钥。 AWS 服务 可以使用客户管理的密钥来加密服务代表您存储的数据。如果您想完全控制密钥的生命周期和使用情况,建议使用客户托管密钥。账户中拥有客户托管密钥将按月收费。此外,使用或管理密钥的请求会产生使用成本。有关更多信息,请参阅AWS KMS
定价
如果您想对数据进行加密,但又不想承担管理密钥的开销或成本,则可以使用AWS 托管密钥。 AWS 服务 这种类型的密钥存在于您的账户中,但只能在某些情况下使用。它只能在您正在操作的 AWS 服务 上下文中使用,并且只能由包含密钥的账户中的委托人使用。您无法对这些密钥的生命周期或权限进行任何管理。有些 AWS 服务 使用 AWS 托管密钥。 AWS 托管密钥别名的格式为aws/<service
code>
。例如,aws/ebs
密钥只能用于加密与密钥相同的账户中的亚马逊弹性区块存储 (Amazon EBS) 卷,并且只能由该账户中的 IAM 委托人使用。 AWS 托管密钥只能由该账户中的用户以及该账户中的资源使用。您不能与其他账户共享使用 AWS 托管密钥加密的资源。如果这是您的用例的限制,我们建议您改用客户托管密钥;您可以与任何其他账户共享该密钥的使用。您无需为账户中存在 AWS 托管密钥而付费,但分配给该密钥的使用将 AWS 服务 向您收取任何使用此类密钥的费用。
AWS 托管密钥是一种传统密钥类型,自 2021 年起不再 AWS 服务 为新密钥创建。取而代之的是,新的(和传统 AWS 服务 的)默认使用AWS 自有密钥来加密您的数据。 AWS 拥有的密钥是 AWS 服务 拥有并管理的 KMS 密钥的集合,用于多个密钥 AWS 账户。尽管这些密钥不在您的账户中 AWS 账户,但 AWS 服务 可以使用这些密钥来保护您账户中的资源。
我们建议您在精细控制最重要的时候使用客户托管的密钥,并在最重要的便利性时使用 AWS 自有密钥。
下表描述了每种密钥类型之间的密钥策略、日志记录、管理和定价差异。有关密钥类型的更多信息,请参阅AWS KMS 概念。
考虑因素 | 客户托管密钥 | AWS 托管密钥 | AWS 拥有的密钥 |
---|---|---|---|
密钥策略 | 完全由客户控制 | 由服务控制;客户可以查看 | 独家控制,只能由加密您的数据 AWS 服务 的人查看 |
日志记录 | AWS CloudTrail 客户跟踪或事件数据存储 | CloudTrail 客户跟踪或事件数据存储 | 客户无法查看 |
生命周期管理 | 客户管理轮换、删除和 AWS 区域 | AWS 服务 管理轮换(每年)、删除和区域 | AWS 服务 管理轮换(每年)、删除和区域 |
定价 | 密钥存在的月费(按小时按比例收费);调用者需支付 API 使用费 | 密钥存在不收费;调用者需支付 API 使用费 | 不向客户收费 |
选择密 AWS KMS 钥库
密钥库是存储和使用加密密钥材料的安全位置。密钥库的行业最佳实践是使用一种名为硬件安全模块 (HSM) 的设备,该设备已通过 NIST联邦信息处理标准 (FIPS) 140 加密模块验证计划的验证
AWS KMS 支持多种密钥存储类型,可在用于创建和管理加密密钥 AWS KMS 时帮助保护您的密钥材料。提供的所有密钥存储选项 AWS KMS 均在 FIPS 140 下持续通过安全等级 3 的验证。它们旨在防止任何人(包括 AWS 操作员)访问您的明文密钥或在未经您许可的情况下使用它们。有关可用密钥库类型的更多信息,请参阅 AWS KMS 文档中的密钥存储。
AWS KMS 标准密钥存储库是大多数工作负载的最佳选择。如果您需要选择其他类型的密钥存储,请仔细考虑监管或其他要求(例如内部)是否要求做出此选择,并仔细权衡成本和收益。
删除和禁用 KMS 密钥
删除 KMS 密钥可能会产生重大影响。在删除不再打算使用的 KMS 密钥之前,请考虑将密钥状态设置为 “已禁用” 是否足够。当密钥被禁用时,它不能用于加密操作。它仍然存在于中 AWS,如果需要,您可以将来重新启用它。禁用的密钥将继续产生存储费用。我们建议您禁用密钥而不是将其删除,直到您确信密钥无法保护任何数据或数据密钥。
重要
删除密钥时必须谨慎计划。如果相应的密钥已被删除,则无法解密数据。 AWS 已删除的密钥在被删除后无法恢复。与中的其他关键操作一样 AWS,您应应用一项政策,限制谁可以安排密钥删除,并要求使用多重身份验证 (MFA) 才能删除密钥。
为帮助防止意外删除密钥, AWS KMS 在DeleteKey
调用执行后,默认的最短等待时间为七天,然后才会删除密钥。您可以将等待时间的最大值设置为 30 天。在等待期间,密钥仍以 “待删除” 状态存储。 AWS KMS 它不能用于加密或解密操作。任何使用处于 “待删除” 状态的密钥进行加密或解密的尝试都将被记录到。 AWS CloudTrail您可以在 CloudTrail 日志中为这些事件设置 Amazon CloudWatch 警报。如果您收到有关这些事件的警报,则可以根据需要选择取消删除过程。在等待期到期之前,您可以将密钥从 “待删除” 状态恢复,然后将其恢复为 “已禁用” 或 “启用” 状态。
要删除多区域密钥,必须先删除副本,然后再删除原始副本。有关更多信息,请参阅删除多区域密钥。
如果您使用的是包含已导入密钥材料的密钥,则可以立即删除导入的密钥材料。这与删除 KMS 密钥有多种不同之处。执行DeleteImportedKeyMaterial
操作时, AWS KMS 会删除密钥材料,密钥状态更改为 “待导入”。删除密钥材料后,密钥将立即无法使用。没有等待期。要再次启用密钥的使用,您需要再次导入相同的密钥材料。KMS 密钥删除的等待期也适用于已导入密钥材料的 KMS 密钥。
如果数据密钥受到 KMS 密钥的保护并且正在被积极使用 AWS 服务,则如果其关联的 KMS 密钥被禁用或其导入的密钥材料被删除,则这些密钥不会立即受到影响。例如,假设使用带有导入材料的密钥通过 SSE- KMS 加密对象。您正在将对象上传到亚马逊简单存储服务 (Amazon S3) 存储桶。在将对象上传到存储桶之前,您需要将材料导入到您的密钥中。上传对象后,您可以从该密钥中删除导入的密钥材料。该对象在存储桶中仍处于加密状态,但在已删除的密钥材料重新导入到密钥中之前,任何人都无法访问该对象。尽管此流程需要精确的自动化才能从密钥中导入和删除密钥材料,但它可以在环境中提供额外的控制级别。
AWS 提供了规范性指导,可帮助您监控和修复(如有必要)KMS 密钥的计划删除。有关更多信息,请参阅监控和修复 AWS KMS 密钥的计划删除。