如何在我的 RDS for SQL Server 实例中关闭或启用 TDE 以及如何排查与其相关的常见错误?

上次更新日期:2022 年 10 月 13 日

我想要在我的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 实例选项组中包括或删除透明数据加密(TDE)选项。或者,我已经关闭或启用 TDE,但现在在 RDS for SQL Server 实例中遇到了与 TDE 相关的错误。如何解决这些错误?

简短描述

TDE 通过加密数据库的物理文件(例如数据(.mdf 和 .ndf))和事务日志文件(.ldf)来保护静态数据。启用 TDE 后,TempDB 会自动加密,并且所有用户定义的数据库均使用 TempDB 来存储或处理临时对象。

解决方法

启用 TDE

要在您的实例中启用 TDE,请执行以下操作:

  1. 请确认 TDE 受数据库实例当前的数据库引擎版本支持
  2. 为 RDS for SQL Server 启用 TDE
  3. 加密数据库中的数据

注意:当您在选项组中添加 TDE 选项并将其与数据库实例关联时,将会自动创建证书。如果您修改已关联的选项组并向其中添加 TDE 选项,也会自动创建证书。您不必在数据库实例上手动创建 TDE 证书。

关闭 TDE

有关如何关闭 TDE 的信息,请参阅为 RDS for SQL Server 关闭 TDE

注意:关闭数据库上的 TDE 后,必须重新启动数据库实例才能删除 TempDB 加密。

常见错误排查

错误:“Cannot find server certificate with thumbprint '0x56CCEA7170BD5AFB02EB08C674XXXXXXXXXXXXXX'.RESTORE DATABASE is terminating abnormally.”(“无法找到指纹为‘0x56CCEA7170BD5AFB02EB08C674XXXXXXXXXXXXXX’的证书。RESTORE DATABASE 异常终止。”)

将包含 TDE 加密源数据库的备份文件恢复到 RDS for SQL Server 实例而不是原始 SQL Server 实例时,会出现此错误。要恢复数据库,必须将源 SQL Server 实例的 TDE 证书导入到目标 RDS for SQL Server 数据库实例。

有关备份和恢复 TDE 证书的更多信息,请参阅以下内容:

错误 - Msg 50000, Level 16, State 1, Procedure msdb.dbo.rds_restore_tde_certificate, Line 91 [Batch Start Line 0] TDE 证书恢复在多可用区数据库实例上不受支持。

在多可用区数据库实例上恢复 TDE 证书时,会出现此错误。多可用区数据库实例不支持 TDE 证书备份和恢复。

有关更多信息,请参阅备份和恢复 RDS for SQL Server 上的 TDE 证书中的限制

为避免出现此错误,请在数据库实例上关闭多可用区部署。然后,在 RDS 数据库实例上恢复 TDE 证书。

错误 - 任务执行已开始。任务已中止。在 S3 元数据中找不到私钥密码。

从 Amazon Simple Storage Service(Amazon S3)存储桶导入用户 TDE 证书且私钥中的元数据不正确时,将会出现此错误。

要解决此问题,请在您的 S3 证书存储桶中更新私钥备份文件元数据中的以下标签:

错误 - 任务已终止。验证 S3 存储桶安全性时出错。关联的 IAM 角色无权访问指定的 S3 存储桶。

使用缺少所需权限的 AWS Identity and Access Management(IAM)角色备份或恢复 TDE 证书时,将会出现此错误。

要解决此问题,请验证 IAM 角色既是 AWS Key Management Service(AWS KMS)密钥的用户又是管理员。除了 SQL Server 本地备份和恢复所需的权限外,IAM 角色还需要以下权限:

  • S3 存储桶资源上的 s3:GetBucketACL、s3:GetBucketLocation 和 s3:ListBucket
  • * 资源上的 s3:ListAllMyBuckets

有关更多信息,请参阅备份和恢复 RDS for SQL Server 上的 TDE 证书上的前提条件


这篇文章对您有帮助吗?


您是否需要账单或技术支持?