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