备份和还原本地数据库的 TDE 证书
您可以备份本地数据库的 TDE 证书,然后将其还原到 RDS for SQL Server。您还可以将 RDS for SQL Server TDE 证书还原到本地数据库实例。
以下过程备份 TDE 证书和私有密钥。私有密钥使用从对称加密 KMS 密钥生成的数据密钥进行加密。
备份本地 TDE 证书
-
使用 Amazon CLI 命令 generate-data-key 生成数据密钥。
aws kms generate-data-key \ --key-id
my_KMS_key_ID
\ --key-spec AES_256输出与以下内容类似。
{ "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==", "Plaintext": "
U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=
", "KeyId": "arn:aws:kms:us-west-2:123456789012
:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33
" }您可以在下一步中使用纯文本输出作为私有密钥密码。
-
备份 TDE 证书,如以下示例所示。
BACKUP CERTIFICATE
myOnPremTDEcertificate
TO FILE = 'D:\tde-cert-backup
.cer' WITH PRIVATE KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key
.pvk', ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0='); -
将证书备份文件保存到 Amazon S3 证书桶。
-
将私有密钥备份文件保存到 S3 证书桶,并在文件的元数据中使用以下标签:
-
密钥 –
x-amz-meta-rds-tde-pwd
-
值 –
CiphertextBlob
值来自生成数据密钥过程,如以下示例所示。AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
-
以下过程将 RDS for SQL Server TDE 证书还原到本地数据库实例。您可以使用证书备份、相应的私有密钥文件和数据密钥在目标数据库实例上复制和还原 TDE 证书。还原的证书由新服务器的数据库主密钥加密。
还原 TDE 证书
-
将 TDE 证书备份文件和私有密钥文件从 Amazon S3 复制到目标实例。有关从 Amazon S3 中复制文件的更多信息,请参阅在 RDS for SQL Server 和 Amazon S3 之间传输文件。
-
使用 KMS 密钥解密输出密码文本,以检索数据密钥的纯文本。密码文本位于私有密钥备份文件的 S3 元数据中。
aws kms decrypt \ --key-id
my_KMS_key_ID
\ --ciphertext-blob fileb://exampleCiphertextFile
| base64 -d \ --output text \ --query Plaintext您可以在下一步中使用纯文本输出作为私有密钥密码。
-
使用以下 SQL 命令还原 TDE 证书。
CREATE CERTIFICATE
myOnPremTDEcertificate
FROM FILE='D:\tde-cert-backup
.cer' WITH PRIVATE KEY (FILE = N'D:\tde-cert-key
.pvk', DECRYPTION BY PASSWORD = 'plain_text_output
');
有关 KMS 解密的更多信息,请参阅《Amazon CLI 命令参考》的 KMS 部分中的解密。
在目标数据库实例上还原 TDE 证书后,您可以使用该证书还原加密的数据库。
注意
您可以使用同一 TDE 证书对源数据库实例上的多个 SQL Server 数据库进行加密。要将多个数据库迁移到目标实例,请将与它们关联的 TDE 证书仅复制到目标实例(仅限一次)。