我想要在我的 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,请执行以下操作:
- 请确认 TDE 受数据库实例当前的数据库引擎版本支持。
- 为 RDS for SQL Server 启用 TDE。
- 加密数据库中的数据。
**注意:**当您在选项组中添加 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 证书上的前提条件。