第 5 课。 (可选)使用 TDE 加密数据库

作为可选步骤,可以加密新创建的数据库。 透明数据加密(TDE)对数据和日志文件执行实时 I/O 加密和解密。 此类加密使用数据库加密密钥(DEK),该密钥存储在数据库启动记录中,以便在恢复期间可用性。 有关详细信息,请参阅 透明数据加密(TDE) 并将 受 TDE 保护的数据库移到另一个 SQL Server

本课程假定你已完成以下步骤:

  • 你有一个 Azure 存储帐户。

  • 已在 Azure 存储帐户下创建了容器。

  • 已在具有读取、写入和列表权限的容器上创建了策略。 还生成了 SAS 密钥。

  • 已在源计算机上创建了 SQL Server 凭据。

  • 你已按照第 4 课中所述的步骤创建数据库。

如果要加密数据库,请执行以下步骤:

  1. 在源计算机中,在查询窗口中修改并运行以下语句:

    
    -- Create a master key and a server certificate   
    USE master   
    GO   
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MySQLKey01';   
    GO   
    CREATE CERTIFICATE MySQLCert WITH SUBJECT = 'SQL - Azure Storage Certification'   
    GO   
    -- Create a backup of the server certificate in the master database.   
    -- Store TDS certificates in the source machine locally.   
    BACKUP CERTIFICATE MySQLCert   
    TO FILE = 'C:\certs\MySQLCert.CER'   
    WITH PRIVATE KEY   
    (   
    FILE = 'C:\certs\MySQLPrivateKeyFile.PVK',   
    ENCRYPTION BY PASSWORD = 'MySQLKey01'   
    );  
    
    
  2. 然后,按照以下步骤在源计算机中加密新数据库:

    
    -- Switch to the new database.   
    -- Create a database encryption key, that is protected by the server certificate in the master database.    
    -- Alter the new database to encrypt the database using TDE.   
    USE TestDB1;   
    GO   
    -- Encrypt your database   
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER CERTIFICATE MySQLCert   
    GO   
    
    ALTER DATABASE TestDB1   
    SET ENCRYPTION ON   
    GO  
    
    

若要了解数据库的加密状态及其关联的数据库加密密钥,请运行以下语句:

  
SELECT * FROM sys.dm_database_encryption_keys;   
GO  
  

有关本课程中使用的 Transact-SQL 语句的详细信息,请参阅 CREATE DATABASE(SQL Server Transact-SQL)ALTER DATABASE(Transact-SQL)CREATE MASTER KEY(Transact-SQL)CREATE CERTIFICATE(Transact-SQL)sys.dm_database_encryption_keys(Transact-SQL)。

下一课:

第 6 课:将数据库从本地源计算机迁移到 Azure 中的目标计算机