データベースのセキュリティは、企業や組織にとって最も重要な課題の一つです。特に、個人情報や機密情報を扱う場合、不正アクセスやデータ漏洩のリスクを低減するためにデータの暗号化が求められます。
SQL ServerにはTransparent Data Encryption(TDE)という強力な暗号化機能があり、データベースファイル全体を暗号化できます。
本記事では、TDEの仕組みや設定方法、暗号化キーの管理方法について詳しく解説します。
SQL Serverのデータ暗号化の重要性
企業や組織がデータを保護する必要がある理由は以下の通りです。
- 個人情報や財務データの保護
企業が顧客の個人情報や財務データを扱う場合、不正アクセスから守る必要があります。 - コンプライアンス(法規制)への対応
GDPRやHIPAAなどの国際的な法規制に準拠するため、データの暗号化が求められることが多いです。 - データ漏洩時のリスク軽減
もしデータベースが不正にコピーされた場合でも、暗号化されていればデータを読み取ることができません。
Transparent Data Encryption(TDE)とは?
TDE(Transparent Data Encryption)は、SQL Serverで提供されているデータベース暗号化技術の一つです。
TDEの特徴
- 透過的(Transparent)な暗号化
ユーザーやアプリケーションに影響を与えず、データを自動的に暗号化します。 - パフォーマンスへの影響が少ない
データの読み書き時に暗号化・復号が行われますが、一般的な処理では大きな影響を受けません。 - バックアップデータも暗号化
暗号化されたデータベースのバックアップは自動的に暗号化されるため、安全性が向上します。
TDEの仕組み
TDEは以下の暗号化キーを利用してデータを保護します。
- データベース暗号化キー(DEK: Database Encryption Key)
- 各データベースごとに生成されるキー。
- データの暗号化・復号に使用される。
- サーバー証明書(Certificate)
- DEKを暗号化するための証明書。
- SQL Serverインスタンスごとに管理される。
- データベースマスターキー(DMK: Database Master Key)
- サーバー証明書を暗号化するためのキー。
- マスターキーが適切に保護されていれば、証明書も安全に管理できる。
TDEの設定手順
TDEを有効化する手順は次の通りです。
①データベースマスターキー(DMK)の作成
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongPassword123!';
GO
データベースマスターキーはサーバー証明書の暗号化に使用されるため、安全なパスワードを設定しましょう。
②サーバー証明書の作成
CREATE CERTIFICATE TDE_Cert
WITH SUBJECT = 'TDE Database Encryption Certificate';
GO
証明書はデータベース暗号化キー(DEK)を暗号化するために使用されます。
③データベース暗号化キー(DEK)の作成
USE YourDatabase;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE TDE_Cert;
GO
AES_256は強力な暗号化アルゴリズムの一つで、データベースを安全に保護できます。
④TDEの有効化
ALTER DATABASE YourDatabase
SET ENCRYPTION ON;
GO
このコマンドを実行すると、データベースの暗号化が開始されます。
⑤暗号化状態の確認
SELECT db.name, db.is_encrypted
FROM sys.databases AS db
WHERE db.name = 'YourDatabase';
is_encrypted が 1 なら暗号化が有効になっています。
TDEのバックアップと復元
TDEを使用すると、バックアップデータも自動的に暗号化されます。復元時には証明書が必要になります。
証明書のバックアップ
BACKUP CERTIFICATE TDE_Cert
TO FILE = 'C:\Backup\TDE_Cert.bak'
WITH PRIVATE KEY (
FILE = 'C:\Backup\TDE_CertKey.pvk',
ENCRYPTION BY PASSWORD = 'BackupPassword123!'
);
証明書のバックアップは、データベースの復元時に必須なので、安全な場所に保存してください。
データベースのバックアップ
BACKUP DATABASE YourDatabase
TO DISK = 'C:\Backup\YourDatabase.bak';
データベースの復元(証明書が必要)
証明書がないと復元できないため、先に証明書をインポートします。
CREATE CERTIFICATE TDE_Cert
FROM FILE = 'C:\Backup\TDE_Cert.bak'
WITH PRIVATE KEY (
FILE = 'C:\Backup\TDE_CertKey.pvk',
DECRYPTION BY PASSWORD = 'BackupPassword123!'
);
その後、データベースを復元できます。
RESTORE DATABASE YourDatabase
FROM DISK = 'C:\Backup\YourDatabase.bak';
演習問題と解答例
問題1: TDEの設定手順
次のSQLスクリプトの空欄を埋めて、TDEを有効化する手順を完成させてください。
-- 1. ______________ を作成
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongPassword123!';
-- 2. ______________ を作成
CREATE CERTIFICATE MyTDECert
WITH SUBJECT = 'TDE Certificate';
-- 3. ______________ を作成
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = ______________
ENCRYPTION BY SERVER CERTIFICATE MyTDECert;
-- 4. ______________ を有効化
ALTER DATABASE MyDatabase SET ENCRYPTION ON;
解答例
-- 1. データベースマスターキーを作成
-- 2. サーバー証明書を作成
-- 3. データベース暗号化キー(DEK)を作成
-- 4. TDEを有効化
まとめ
TDEはSQL Serverのデータベースを安全に保護する重要な暗号化機能です。
データベースの暗号化を適切に設定し、バックアップやキー管理をしっかり行うことで、セキュリティを強化できます。