的加密最佳实践 AWS Key Management Service - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的加密最佳实践 AWS Key Management Service

AWS Key Management Service (AWS KMS) 可帮助您创建和控制加密密钥以帮助保护您的数据。 AWS KMS 与大多数其他 AWS 服务 可以加密您的数据的软件集成。有关完整列表,请参阅与AWS 服务 集成 AWS KMS。 AWS KMS 还与集成 AWS CloudTrail ,以记录您的KMS密钥的使用情况,以满足审计、监管和合规需求。

KMS密钥是中的主要资源 AWS KMS,也是加密密钥的逻辑表示形式。有三种主要的KMS密钥类型:

  • 客户管理的密KMS钥是您创建的密钥。

  • AWS 托管密KMS钥是代表您在账户中 AWS 服务 创建的密钥。

  • AWS 拥有的密KMS钥是 AWS 服务 拥有和管理的密钥,用于多个密钥 AWS 账户。

有关密钥类型的更多信息,请参阅 Customer keys and AWS keys

在中 AWS Cloud,策略用于控制谁可以访问资源和服务。例如,在 AWS Identity and Access Management (IAM) 中,基于身份的策略定义用户、用户组或角色的权限,基于资源的策略附加到资源(例如 S3 存储桶),并定义允许哪些委托人访问、支持的操作以及必须满足的任何其他条件。与IAM策略类似, AWS KMS 使用密钥策略来控制对KMS密钥的访问。每个KMS密钥必须有一个密钥策略,并且每个密钥只能有一个密钥策略。在定义允许或拒绝访问KMS密钥的策略时,请注意以下几点:

  • 您可以控制客户托管密钥的密钥策略,但不能直接控制 AWS 托管密钥或 AWS 自有密钥的密钥策略。

  • 密钥策略允许授予对内 AWS KMS API呼叫的精细访问权限。 AWS 账户除非密钥策略明确允许,否则您不能使用IAM策略来允许访问密KMS钥。未经密钥策略许可,IAM允许权限的策略无效。有关更多信息,请参阅允许IAM策略允许访问KMS密钥

  • 未经密钥IAM策略的相应许可,您可以使用策略拒绝访问客户托管的密钥。

  • 在为多区域密钥设计密钥IAM策略和策略时,请考虑以下几点:

    • 密钥政策不是多区域密钥的共享属性,也不会在相关的多区域密钥之间复制或同步。

    • 使用 CreateKeyReplicateKey 操作创建多区域密钥时,除非在请求中指定了密钥政策,否则将应用默认密钥政策

    • 您可以实现条件键,例如 aws: RequestedRegion,将权限限制为特定的权限 AWS 区域。

    • 您可以使用授权来允许对多区域主密钥或副本密钥的权限。但是,单个授权不能用于授予对多个KMS密钥的权限,即使它们是相关的多区域密钥。

在使用 AWS KMS 和创建密钥策略时,请考虑以下加密最佳做法和其他安全最佳实践:

  • 请遵循以下资源中的建议以获取 AWS KMS 最佳实践:

  • 根据职责分离最佳实践,为管理密钥的人员和使用密钥的人员维护不同的身份:

    • 创建和删除密钥的管理员角色不能使用密钥。

    • 某些服务可能只需要加密数据,不应被授予使用密钥解密数据的能力。

  • 密钥政策应始终遵循最低权限模式。请勿kms:*用于IAM或密钥策略中的操作,因为这会授予委托人管理和使用密钥的权限。

  • 使用密钥策略中的 k ms: ViaService 条件密钥,将客户托管密钥的使用限制在特定 AWS 服务 范围内。

  • 如果您可以在密钥类型之间进行选择,则首选客户管理的密钥,因为它们提供了最精细的控制选项,包括以下选项:

  • AWS KMS 必须明确拒绝向未经批准的委托人授予管理和 AWS KMS 修改权限,并且允许语句中不应存在任何未经授权的委托人的修改权限。有关更多信息,请参阅用于 AWS Key Management Service的操作、资源和条件键

  • 为了检测未经授权的KMS密钥使用情况,请在中实现-kms-acti AWS Config ons和 iam-customer-policy-blockediam-inline-policy-blocked-kms-actions规则。这可以防止委托人对所有 AWS KMS 资源使用解密操作。

  • 在中实施服务控制策略 (SCPs), AWS Organizations 以防止未经授权的用户或角色直接通过命令或通过控制台删除KMS密钥。有关更多信息,请参阅SCPs用作预防性控制措施(AWS 博客文章)。

  • 在日志中 CloudTrail 记录 AWS KMS API通话。这会记录相关的事件属性,例如,发出了哪些请求、发出请求的源 IP 地址以及发出请求的人。有关更多信息,请参阅使用记录 AWS KMS API通话 AWS CloudTrail

  • 如果您使用加密上下文,则它不应包含任何敏感信息。 CloudTrail 将加密上下文存储在纯文本JSON文件中,任何有权访问包含该信息的 S3 存储桶的人都可以查看这些文件。

  • 在监控客户管理的密钥的使用情况时,配置事件以在检测到特定操作时通知您,如密钥创建、更新客户管理的密钥政策或导入密钥材料。此外,还建议您实施自动响应,例如禁用密钥的 AWS Lambda 函数,或者根据您的组织策略执行任何其他事件响应操作。

  • 对于特定方案,如合规性、灾难恢复或备份,建议使用多区域密钥。多区域密钥的安全属性与单区域密钥有很大不同。授权创建、管理和使用多区域密钥时,以下建议适用:

    • 只允许主体将多区域密钥复制到需要它们的 AWS 区域 中。

    • 仅对需要多区域密钥的主体授予权限,并且仅对需要多区域密钥的任务授予权限。