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