CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

データベースを透過的に暗号化するための暗号化キーを作成します。 transparent data encryption (TDE) の詳細については、「Transparent Data Encryption (TDE)を参照してください。

Transact-SQL 構文規則

構文

-- Syntax for SQL Server  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER   
    {  
        CERTIFICATE Encryptor_Name |  
        ASYMMETRIC KEY Encryptor_Name  
    }  
[ ; ]  
-- Syntax for Parallel Data Warehouse  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name   
[ ; ]  

引数

WITH ALGORITHM = { AES_128 |AES_192 |AES_256 |TRIPLE_DES_3KEY }
暗号化キーの暗号化アルゴリズムを指定します。

警告

SQL Server 2016 以降では、AES_128、AES_192、AES_256以外のすべてのアルゴリズムは非推奨とされます。 古いアルゴリズムを使用する場合は (推奨されません)、データベース互換性レベルを 120 以下に設定する必要があります。

サーバー CERTIFICATE Encryptor_Nameによる暗号化
データベース暗号化キーを暗号化するために使用する暗号化処理方法の名前を指定します。

サーバー ASYMMETRIC KEY Encryptor_Nameによる暗号化 データベースの暗号化鍵を暗号化するために使用される非対称鍵の名前を指定します。 非対称キーを使用してデータベース暗号化キーを暗号化するには、非対称キーが拡張キー管理プロバイダーに存在する必要があります。

解説

透過的なデータ暗号化 (TDE) を使用してデータベースを暗号化する前に、データベース暗号化キーが必要です。 データベースを透過的に暗号化すると、特別にコードを変更することなく、データベース全体がファイル レベルで暗号化されます。 データベース暗号化キーを暗号化する証明書または非対称キーは、 master システム データベースに配置する必要があります。

TDE に使われる証明書または非対称キーでは、秘密キーのサイズが 3072 ビットに制限されています。

データベース暗号化ステートメントは、ユーザー データベースでのみ使用できます。

データベース暗号化キーをデータベースからエクスポートすることはできません。 システム、サーバーに対するデバッグアクセス許可を持つユーザー、およびデータベース暗号化キーを暗号化および復号化する証明書にアクセスできるユーザーのみが使用できます。

データベース所有者 (dbo) が変更されたときに、データベース暗号化キーを再生成する必要はありません。

データベース暗号化キーは、SQL Database データベース用に自動的に作成されます。 CREATE DATABASE ENCRYPTION KEY ステートメントを使用してキーを作成する必要はありません。

アクセス許可

データベースに対してCONTROL権限が必要であり、データベースの暗号化鍵を暗号化するために使用される証明書または非対称鍵に対して VIEW DEFINITION権限が必要です。

TDE を使用するその他の例については、Transparent Data Encryption (TDE) EKM の使用、および Azure Key Vault (SQL Server) を使用したSQL Serverの TDE の使用に関する情報を参照してください。

A。 データベース暗号化キーを作成する

次の例では、 AES_256 アルゴリズムを使用してデータベース暗号化キーを作成し、 MyServerCertという名前の証明書で秘密キーを保護します。

USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

B. TDE で暗号化されたデータベースを別のインスタンスに復元する

TDE で暗号化されたデータベースを別のSQL Server インスタンスに復元するには、まず、データベース暗号化キーを保護する証明書をインポートする必要があります。 ソース サーバーから証明書とその秘密キーをバックアップし、データベースを復元する前に、ターゲット インスタンスに証明書を作成します。

ソース サーバーで、証明書をバックアップします。

-- On the SOURCE server
USE master;
GO
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    ENCRYPTION BY PASSWORD = '<strong_password>'
);
GO

ターゲット サーバーで、バックアップ ファイルから証明書を作成し、データベースを復元します。

-- On the TARGET server
USE master;
GO
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    DECRYPTION BY PASSWORD = '<strong_password>'
);
GO

-- Now you can restore the TDE-encrypted database
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Backup\AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO 'D:\Data\AdventureWorks2022.mdf',
     MOVE 'AdventureWorks2022_Log' TO 'D:\Data\AdventureWorks2022.ldf';
GO

Important

証明書は同じ名前で、同じバックアップ ファイルから作成する必要があります。 証明書が一致しない場合、復元は暗号化キー エラーで失敗します。