本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的加密最佳实践 AWS Key Management Service
AWS Key Management Service
(AWS KMS) 可帮助您创建和控制加密密钥以帮助保护您的数据。 AWS KMS 与大多数其他 AWS 服务 可以加密您的数据的软件集成。有关完整列表,请参阅与AWS 服务 集成 AWS 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策略和策略时,请考虑以下几点:
-
密钥政策不是多区域密钥的共享属性,也不会在相关的多区域密钥之间复制或同步。
-
使用
CreateKey
和ReplicateKey
操作创建多区域密钥时,除非在请求中指定了密钥政策,否则将应用默认密钥政策。 -
您可以实现条件键,例如 aws: RequestedRegion,将权限限制为特定的权限 AWS 区域。
-
您可以使用授权来允许对多区域主密钥或副本密钥的权限。但是,单个授权不能用于授予对多个KMS密钥的权限,即使它们是相关的多区域密钥。
-
在使用 AWS KMS 和创建密钥策略时,请考虑以下加密最佳做法和其他安全最佳实践:
-
请遵循以下资源中的建议以获取 AWS KMS 最佳实践:
-
AWS KMS 拨款最佳实践(AWS KMS 文档)
-
IAM策略最佳实践(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 区域 中。
-
仅对需要多区域密钥的主体授予权限,并且仅对需要多区域密钥的任务授予权限。
-