Applies to:SQL Server
Azure SQL Managed Instance
Analytics Platform System (PDW)
データベースを透過的に暗号化するための暗号化キーを作成します。 transparent data encryption (TDE) の詳細については、「Transparent Data Encryption (TDE)を参照してください。
構文
-- 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 以下に設定する必要があります。
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
データベース暗号化キーを暗号化するために使用する暗号化処理方法の名前を指定します。
ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name データベース暗号化キーの暗号化に使用される非対称キーの名前を指定します。 非対称キーを使用してデータベース暗号化キーを暗号化するには、非対称キーが拡張キー管理プロバイダーに存在する必要があります。
解説
透過的なデータ暗号化 (TDE) を使用してデータベースを暗号化する前に、データベース暗号化キーが必要です。 データベースを透過的に暗号化すると、特別にコードを変更することなく、データベース全体がファイル レベルで暗号化されます。 データベース暗号化キーを暗号化する証明書または非対称キーは、 システム データベースに配置する必要があります。
TDE に使われる証明書または非対称キーでは、秘密キーのサイズが 3072 ビットに制限されています。
データベース暗号化ステートメントは、ユーザー データベースでのみ使用できます。
データベース暗号化キーをデータベースからエクスポートすることはできません。 システム、サーバーに対するデバッグアクセス許可を持つユーザー、およびデータベース暗号化キーを暗号化および復号化する証明書にアクセスできるユーザーのみが使用できます。
データベース所有者 (dbo) が変更されたときに、データベース暗号化キーを再生成する必要はありません。
データベース暗号化キーは、SQL Database データベース用に自動的に作成されます。 ステートメントを使用してキーを作成する必要はありません。
アクセス許可
データベースに対する CONTROL 権限と、データベース暗号化キーの暗号化に使用する証明書または非対称キーに対する VIEW DEFINITION 権限が必要です。
例
TDE を使用するその他の例については、Transparent Data Encryption (TDE)、 EKM の使用、および Azure Key Vault (SQL Server) を使用したSQL Serverの TDE の使用に関する情報を参照してください。
A。 データベース暗号化キーを作成する
次の例では、 アルゴリズムを使用してデータベース暗号化キーを作成し、 という証明書で秘密キーを保護します。
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
証明書は同じ名前で、同じバックアップ ファイルから作成する必要があります。 証明書が一致しない場合、復元は暗号化キー エラーで失敗します。
関連するコンテンツ
- Transparent Data Encryption (TDE)
- SQL Server Encryption
- SQL Serverおよびデータベース暗号化キー (データベース エンジン)
- 暗号化階層
- ALTER DATABASE SET オプション (Transact-SQL)
- ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
- DROP DATABASE ENCRYPTION KEY (Transact-SQL)
- sys.dm_database_encryption_keys (Transact-SQL)
- BACKUP CERTIFICATE (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)