备份和还原本地数据库的 TDE 证书 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

备份和还原本地数据库的 TDE 证书

您可以备份本地数据库的 TDE 证书,然后将其还原到 RDS for SQL Server。您还可以将 RDS for SQL Server TDE 证书还原到本地数据库实例。

以下过程备份 TDE 证书和私有密钥。私有密钥使用从对称加密 KMS 密钥生成的数据密钥进行加密。

备份本地 TDE 证书
  1. 使用 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" }

    您可以在下一步中使用纯文本输出作为私有密钥密码。

  2. 备份 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=');
  3. 将证书备份文件保存到 Amazon S3 证书桶。

  4. 将私有密钥备份文件保存到 S3 证书桶,并在文件的元数据中使用以下标签:

    • 密钥 – x-amz-meta-rds-tde-pwd

    • 值 – CiphertextBlob 值来自生成数据密钥过程,如以下示例所示。

      AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==

以下过程将 RDS for SQL Server TDE 证书还原到本地数据库实例。您可以使用证书备份、相应的私有密钥文件和数据密钥在目标数据库实例上复制和还原 TDE 证书。还原的证书由新服务器的数据库主密钥加密。

还原 TDE 证书
  1. 将 TDE 证书备份文件和私有密钥文件从 Amazon S3 复制到目标实例。有关从 Amazon S3 中复制文件的更多信息,请参阅在 RDS for SQL Server 和 Amazon S3 之间传输文件

  2. 使用 KMS 密钥解密输出密码文本,以检索数据密钥的纯文本。密码文本位于私有密钥备份文件的 S3 元数据中。

    aws kms decrypt \ --key-id my_KMS_key_ID \ --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \ --output text \ --query Plaintext

    您可以在下一步中使用纯文本输出作为私有密钥密码。

  3. 使用以下 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 证书仅复制到目标实例(仅限一次)。