AWS KMS key 管理
Amazon RDS 自动与 AWS Key Management Service(AWS KMS)集成以进行密钥管理。Amazon RDS 使用信封加密。有关信封加密的更多信息,请参阅 AWS Key Management Service 开发人员指南中的信封加密。
您可以使用两种类型的 AWS KMS 密钥来加密数据库实例。
要管理用于 Amazon RDS 加密数据库实例的 KMS 密钥,您可以使用 AWS KMS 控制台
授权使用客户托管密钥
RDS 在加密操作中使用客户托管密钥时,其代表创建或更改 RDS 资源的用户执行操作。
要使用客户托管密钥创建 RDS 资源,用户必须具有对客户托管密钥调用以下操作的权限:
-
kms:CreateGrant
-
kms:DescribeKey
您可以在密钥策略中指定这些所需权限,或者在密钥策略允许的情况下在 IAM 策略中指定这些权限。
提示
为遵循最小特权原则,请不要允许对 kms:CreateGrant
拥有完全访问权限。而是仅当 AWS 服务代表用户创建授权时,才使用 kms:ViaService 条件密钥来支持用户对 KMS 密钥创建授权。
您可以通过各种方式使 IAM 策略更严格。例如,如果您要支持将客户自主管理型密钥仅用于源自 RDS 的请求,请将 kms:ViaService 条件密钥与 rds.
值结合使用。此外,您可以使用Amazon RDS 加密上下文中的密钥或值作为使用客户托管密钥进行加密的条件。<region>
.amazonaws.com
有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的允许其他账户中的用户使用 KMS 密钥和 AWS KMS 中的密钥策略。
Amazon RDS 加密上下文
当 RDS 使用您的 KMS 密钥时,或者当 Amazon EBS 代表 RDS 使用 KMS 密钥时,服务会指定加密上下文。加密上下文是 AWS KMS 用于确保数据完整性而使用的额外的身份验证数据 (AAD)。在为加密操作指定加密上下文时,该服务必须为解密操作指定同一加密上下文。否则,解密将失败。加密上下文还将写至您的 AWS CloudTrail
至少,Amazon RDS 始终将数据库实例 ID 将用于加密上下文,如以下 JSON 格式的示例所示:
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
此加密上下文可以帮助您确定使用您的 KMS 密钥的数据库实例。
当您的 KMS 密钥用于特定的数据库实例和特定的 Amazon EBS 卷时,数据库实例 ID 和 Amazon EBS 卷 ID 将用于加密上下文,如以下 JSON 格式的示例所示:
{ "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ", "aws:ebs:id": "vol-ad8c6542" }