SQL Server データ暗号化(TDE)有効化時の注意すべき挙動

前提

  • SQL Server 2017
  • 暗号化方式はTransparent Data Encryption (TDE)

データ暗号化(TDE)時の注意すべき挙動

データ暗号化(TDE)は以下手順で実施します。ここは特に問題なし。
透過的なデータ暗号化 (TDE) | Microsoft Docs

USE master;
GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012 SET ENCRYPTION ON;
GO  

 

この最後の 「ALTER DATABASE AdventureWorks2012 SET ENCRYPTION ON;」で暗号化を有効化しているのですが、このコマンドは暗号化の完了と非同期であり、コマンド完了=暗号化完了ではないようです。暗号化の完了はステータスから判断する必要がありますので注意が必要です。

データ暗号化(TDE)完了の確認方法

以下SQLにて暗号化ステータスを確認できます。

SELECT encryption_state FROM sys.dm_database_encryption_keys
WHERE database_id = 'データベースID

暗号化の有効化時のステータスの遷移は以下のようになります。

1:暗号化されていない
 ↓
暗号化の有効化
 ↓
2:暗号化中
 ↓
3:暗号化 ※これで暗号化が完了 

ちなみに暗号化の無効化時のステータスの遷移は以下のようになります。
ステータスの遷移は以下のようになります。

3:暗号化
 ↓
暗号化の無効化
 ↓
5:暗号化解除中
 ↓
1:暗号化されていない ※これで暗号化の無効化が完了

sys.dm_database_encryption_keysシステム動的管理ビューの詳細は以下参照。
sys.dm_database_encryption_keys (TRANSACT-SQL) | Microsoft Docs