AWS KMS key 管理 - Amazon Aurora

AWS KMS key 管理

Amazon Aurora 自动与 AWS Key Management Service(AWS KMS)集成以进行密钥管理。Amazon Aurora 使用信封加密。有关信封加密的更多信息,请参阅 AWS Key Management Service 开发人员指南中的信封加密

您可以使用两种类型的 AWS KMS 密钥来加密数据库集群

  • 要完全控制 KMS 密钥,您必须创建客户托管密钥。有关客户托管密钥的更多信息,请参阅 AWS Key Management Service 开发人员指南中的客户托管密钥

  • AWS 托管式密钥 是由与 AWS KMS 集成的 AWS 服务代表您在账户中创建、管理和使用的 KMS 密钥。默认情况下,RDS AWS 托管式密钥(aws/rds)用于加密。您无法管理、轮换或删除 RDS AWS 托管式密钥。有关 AWS 托管式密钥 的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的 AWS 托管式密钥

要管理用于 Amazon Aurora 加密数据库集群的 KMS 密钥,您可以使用 AWS KMS 控制台中的 AWS Key Management Service(AWS KMS)、AWS CLI 或 AWS KMS API。要查看利用 AWS 托管式或客户托管密钥执行的每个操作的审计日志,请使用 AWS CloudTrail。有关密钥轮换的更多信息,请参阅轮换 AWS KMS 密钥

授权使用客户托管密钥

Aurora 在加密操作中使用客户自主管理型密钥时,其代表创建或更改 Aurora 资源的用户执行操作。

要使用客户自主管理型密钥创建 Aurora 资源,用户必须具有对客户自主管理型密钥调用以下操作的权限:

  • kms:CreateGrant

  • kms:DescribeKey

您可以在密钥策略中指定这些所需权限,或者在密钥策略允许的情况下在 IAM 策略中指定这些权限。

提示

为遵循最小特权原则,请不要允许对 kms:CreateGrant 拥有完全访问权限。而是仅当 AWS 服务代表用户创建授权时,才使用 kms:ViaService 条件密钥来支持用户对 KMS 密钥创建授权。

您可以通过各种方式使 IAM 策略更严格。例如,如果您要支持将客户自主管理型密钥仅用于源自 Aurora 的请求,请将 kms:ViaService 条件密钥rds.<region>.amazonaws.com 值结合使用。此外,您可以使用Amazon RDS 加密上下文中的密钥或值作为使用客户托管密钥进行加密的条件。

有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的允许其他账户中的用户使用 KMS 密钥AWS KMS 中的密钥策略

Amazon RDS 加密上下文

Aurora 使用您的 KMS 密钥时,或者当 Amazon EBS 代表 Aurora 使用 KMS 密钥时,服务会指定加密上下文。加密上下文是 AWS KMS 用于确保数据完整性而使用的额外的身份验证数据 (AAD)。在为加密操作指定加密上下文时,该服务必须为解密操作指定同一加密上下文。否则,解密将失败。加密上下文还将写至您的 AWS CloudTrail 日志中,以帮助您了解为什么使用给定的 KMS 密钥。您的 CloudTrail 日志可能包含多个描述 KMS 密钥使用情况的条目,但每个日志条目中的加密上下文可以帮助您确定该特定使用的原因。

至少,Aurora 始终将数据库集群 ID 用于加密上下文,如以下 JSON 格式的示例所示:

{ "aws:rds:dbc-id": "cluster-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }

此加密上下文可以帮助您确定使用您的 KMS 密钥的数据库集群

当您的 KMS 密钥用于特定的数据库集群和特定的 Amazon EBS 卷时,数据库集群 ID 和 Amazon EBS 卷 ID 将用于加密上下文,如以下 JSON 格式的示例所示:

{ "aws:rds:dbc-id": "cluster-BRG7VYS3SVIFQW7234EJQOM5RQ", "aws:ebs:id": "vol-ad8c6542" }