Transparent Data Encryption (TDE) は、保存データの暗号化と呼ばれる SQL Server および Azure SQL Database データ ファイルを暗号化します。 セキュリティで保護されたシステムの設計、機密資産の暗号化、データベース サーバー周辺のファイアウォールの構築など、データベースをセキュリティで保護するためにいくつかの予防措置を講じてください。 ただし、物理メディア (ドライブやバックアップ テープなど) が盗まれるシナリオでは、悪意のあるユーザーがデータベースを復元またはアタッチしてデータを参照するだけで済みます。 1 つの解決策は、データベース内の機密データを暗号化し、証明書を使用してデータを暗号化するために使用されるキーを保護することです。 これにより、キーを持たないユーザーはデータを使用できなくなりますが、この種の保護は事前に計画する必要があります。
TDE は、データとログ ファイルの I/O 暗号化と複合化をリアルタイムで実行します。 暗号化は、復旧中に、可用性のためのデータベース ブート レコードに格納されるデータベース暗号化キー (DEK) を使用します。 DEK は、サーバーの master データベースに保存されている証明書を使用して保護される対称キーか、EKM モジュールによって保護される非対称キーです。 TDE では、"静止した" データ、つまりデータとログ ファイルが保護されます。 この暗号化は、法律、規制、およびさまざまな業界で確立されているガイドラインの多くに準拠できるようになっています。 これにより、ソフトウェア開発者は、既存のアプリケーションを変更することなく、AES および 3DES 暗号化アルゴリズムを使用してデータを暗号化できます。
重要
TDE では、通信チャネル間での暗号化は提供されません。 通信チャネル間でデータを暗号化する方法の詳細については、「 データベース エンジンへの暗号化接続を有効にする (SQL Server 構成マネージャー)」を参照してください。
関連トピック:
TDE について
データベース ファイルの暗号化は、ページ レベルで実行されます。 暗号化されたデータベース内のページは、ディスクに書き込まれる前に暗号化され、メモリに読み込まれるときに復号化されます。 TDE は、暗号化されたデータベースのサイズを大きくしません。
SQL Database に適用される情報
SQL Database V12 V12 (一部のリージョンではプレビュー) で TDE を使用すると、マスター データベースに格納されているサーバー レベルの証明書が SQL Database によって自動的に作成されます。 SQL Database 上で TDE データベースを移動するには、データベースの暗号化を解除し、データベースを移動してから、移行先の SQL Database で TDE を再度有効にする必要があります。 SQL Database での TDE の詳細な手順については、Azure SQL Database での Transparent Data Encryption に関するページを参照してください。
TDE の状態のプレビューは、SQL Database のバージョン ファミリ V12 が現在一般提供状態であると発表されている地理的リージョンのサブセットでも適用されます。 TDE for SQL Database は、Microsoft が TDE がプレビューから GA に昇格することを発表するまで、実稼働データベースでの使用を意図していません。 SQL Database V12 の詳細については、「 Azure SQL Database の新機能」を参照してください。
SQL Server に適用される情報
セキュリティで保護された後は、正しい証明書を使用してデータベースを復元できます。 証明書の詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。
TDE を有効にする場合は、証明書と証明書に関連付けられている秘密キーをすぐにバックアップする必要があります。 証明書が使用できなくなった場合、またはデータベースを別のサーバーに復元またはアタッチする必要がある場合は、証明書と秘密キーの両方のバックアップが必要です。そうしないと、データベースを開くことができません。 データベースで TDE が有効になっていない場合でも、暗号化証明書を保持する必要があります。 データベースが暗号化されていない場合でも、トランザクション ログの一部は保護されたままであり、データベースの完全バックアップが実行されるまで、一部の操作に証明書が必要になる場合があります。 有効期限を超えた証明書は、TDE を使用してデータを暗号化および復号化するために引き続き使用できます。
暗号化階層
次の図は、TDE 暗号化のアーキテクチャを示しています。 SQL Database で TDE を使用する場合は、データベース レベルの項目 (データベース暗号化キーと ALTER DATABASE の部分) のみがユーザーが構成できます。
Transparent Data Encryption の使用
TDE を使用するには、次の手順に従います。
適用対象: SQL Server。 |
マスター キーを作成します。
マスター キーで保護された証明書を作成または取得します。
データベース暗号化キーを作成し、証明書で保護します。
暗号化を使用するようにデータベースを設定します。
次の例では、 AdventureWorks2012
という名前のサーバーにインストールされた証明書を使用して、 MyServerCert
データベースを暗号化および暗号化解除しています。
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
暗号化および暗号化解除の操作は、SQL Server によってバックグラウンド スレッドでスケジュールされます。 これらの操作の状態は、このトピックで後述する一覧のカタログ ビューと動的管理ビューを使用して表示できます。
注意事項
TDE が有効になっているデータベースのバックアップ ファイルも、データベース暗号化キーを使用して暗号化されます。 このため、このバックアップを復元するときには、データベース暗号化キーを保護している証明書が必要です。 つまり、データベースのバックアップに加えて、データの損失を防ぐために、サーバー証明書のバックアップを維持する必要があります。 証明書が使用できなくなると、データの損失が発生します。 詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。
コマンドと関数
次のステートメントで受け入れるには、データベース マスター キーによって TDE 証明書を暗号化する必要があります。 パスワードのみで暗号化されている場合、ステートメントは暗号化子として拒否します。
重要
証明書を TDE で使用した後にパスワードで保護されるように変更すると、再起動後にデータベースにアクセスできなくなります。
次の表に、TDE コマンドと関数のリンクと説明を示します。
コマンドまたは関数 | 目的 |
---|---|
CREATE DATABASE ENCRYPTION KEY (Transact-SQL) | データベースの暗号化に使用するキーを作成します。 |
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) | データベースの暗号化に使用するキーを変更します。 |
DROP DATABASE ENCRYPTION KEY (Transact-SQL) | データベースの暗号化に使用されたキーを削除します。 |
ALTER DATABASE SET のオプション (Transact-SQL) | TDE を有効にするために使用される ALTER DATABASE オプションについて説明します。 |
カタログ ビューと動的管理ビュー
次の表に、TDE カタログ ビューと動的管理ビューを示します。
カタログ ビューまたは動的管理ビュー | 目的 |
---|---|
sys.databases (Transact-SQL) | データベース情報を表示するカタログ ビュー。 |
sys.certificates (Transact-SQL) | データベース内の証明書を示すカタログ ビュー。 |
sys.dm_database_encryption_keys (Transact-SQL) | データベースで使用される暗号化キーとデータベースの暗号化の状態に関する情報を提供する動的管理ビュー。 |
権限
各 TDE 機能とコマンドには、前述の表で説明した個々のアクセス許可要件があります。
TDE に関連するメタデータを表示するには、証明書に対する VIEW DEFINITION 権限が必要です。
考慮事項
データベース暗号化操作の再暗号化スキャンが進行中の間、データベースに対するメンテナンス操作は無効になります。 データベースのシングル ユーザー モード設定を使用して、メンテナンス操作を実行できます。 詳細については、「 データベースをシングル ユーザー モードに設定する」を参照してください。
sys.dm_database_encryption_keys動的管理ビューを使用して、データベース暗号化の状態を確認できます。 詳細については、このトピックの「カタログ ビューと動的管理ビュー」セクションを参照してください。
TDE では、データベース内のすべてのファイルとファイル グループが暗号化されます。 データベース内のファイル グループが READ ONLY とマークされている場合、データベース暗号化操作は失敗します。
データベース ミラーリングまたはログ配布でデータベースが使用されている場合、両方のデータベースが暗号化されます。 ログ トランザクションは、それらの間で送信されるときに暗号化されます。
重要
データベースが暗号化用に設定されると、新しいフルテキスト インデックスが暗号化されます。 以前に作成したフルテキスト インデックスは、アップグレード中にインポートされ、データが SQL Server に読み込まれた後に TDE に格納されます。 列でフルテキスト インデックスを有効にすると、フルテキスト インデックス作成スキャン中に、その列のデータがプレーン テキストでディスクに書き込まれる可能性があります。 機密の暗号化されたデータにフルテキスト インデックスを作成しないことをお勧めします。
暗号化されたデータは、同等の暗号化されていないデータよりも大幅に圧縮されます。 TDE を使用してデータベースを暗号化した場合、バックアップの圧縮でバックアップ ストレージを大幅に圧縮することはできません。 そのため、TDE とバックアップの圧縮を併用することはお勧めしません。
制約
最初のデータベース暗号化、キーの変更、またはデータベースの暗号化解除中は、次の操作は許可されません。
データベース内のファイル グループからファイルを削除する
データベースの削除
データベースをオフラインにする
データベースのデタッチ
データベースまたはファイル グループを READ ONLY 状態に移行する
CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY、または ALTER DATABASE SET ENCRYPTION というステートメントを実行中に、次の操作は許可されません。
データベース内のファイル グループからファイルを削除する。
データベースの削除。
データベースをオフラインにします。
データベースのデタッチ。
データベースまたはファイル グループを READ ONLY 状態に移行する。
ALTER DATABASE コマンドの使用。
データベースまたはデータベース ファイルのバックアップを開始する。
データベースまたはデータベース ファイルの復元を開始します。
スナップショットの作成。
次の操作または条件は、CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY、または ALTER DATABASE...SET ENCRYPTION ステートメントの実行を妨げます。
データベースは読み取り専用であるか、読み取り専用のファイル グループを持っています。
ALTER DATABASE コマンドが実行されています。
すべてのデータ バックアップが実行されています。
データベースがオフライン状態または復元状態です。
スナップショットが進行中です。
データベースのメンテナンス タスク。
データベース ファイルを作成する場合、TDE が有効になっている場合、ファイルの瞬時初期化は使用できません。
非対称キーを使用してデータベース暗号化キーを暗号化するには、非対称キーが拡張可能なキー管理プロバイダーに存在する必要があります。
透過型データ暗号化とトランザクションログ
データベースで TDE を使用できるようにすると、仮想トランザクション ログの残りの部分が "ゼロアウト" され、次の仮想トランザクション ログが強制的に実行されます。 これにより、データベースが暗号化用に設定された後、トランザクション ログにクリア テキストが残らなくなります。 次の例のように、sys.dm_database_encryption_keys
ビューで encryption_state
列を表示することで、ログ ファイルの暗号化の状態を確認できます。
USE AdventureWorks2012;
GO
/* The value 3 represents an encrypted state
on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO
SQL Server ログ ファイルのアーキテクチャの詳細については、「 トランザクション ログ (SQL Server)」を参照してください。
データベース暗号化キーの変更前にトランザクション ログに書き込まれたすべてのデータは、前のデータベース暗号化キーを使用して暗号化されます。
データベース暗号化キーを 2 回変更した後は、データベース暗号化キーを再度変更する前にログ バックアップを実行する必要があります。
Transparent Data Encryption と tempdb システム データベース
SQL Server のインスタンス上の他のデータベースが TDE を使用して暗号化されている場合、tempdb システム データベースは暗号化されます。 これは、SQL Server の同じインスタンス上の暗号化されていないデータベースのパフォーマンスに影響する可能性があります。 tempdb システム データベースの詳細については、「 tempdb データベース」を参照してください。
透過的なデータの暗号化とレプリケーション
レプリケーションでは、暗号化された形式で TDE 対応データベースからデータが自動的にレプリケートされることはありません。 ディストリビューション データベースとサブスクライバー データベースを保護する場合は、TDE を個別に有効にする必要があります。 スナップショット レプリケーションと、トランザクション レプリケーションとマージ レプリケーションのデータの初期分散は、暗号化されていない中間ファイルにデータを格納できます。たとえば、bcp ファイルなどです。 トランザクション レプリケーションまたはマージ レプリケーション中に、暗号化を有効にして通信チャネルを保護できます。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
Transparent Data Encryption と FILESTREAM DATA
FILESTREAM データは、TDE が有効になっている場合でも暗号化されません。
Transparent Data Encryption と Buffer Pool Extension
データベースが TDE を使用して暗号化されている場合、バッファー プール拡張機能 (BPE) に関連するファイルは暗号化されません。 BPE 関連ファイルには、Bitlocker や EFS などのファイル システム レベルの暗号化ツールを使用する必要があります。
Transparent Data Encryption と In-Memory OLTP
In-Memory OLTP オブジェクトを持つデータベースで TDE を有効にすることができます。 In-Memory OLTP ログ レコードは、TDE が有効になっている場合に暗号化されます。 TDE が有効になっている場合、MEMORY_OPTIMIZED_DATA ファイル グループ内のデータは暗号化されません。
こちらもご覧ください
TDE 保護されたデータベースを別の SQL Server に移動するEKM を使用して TDE を有効にするAzure SQL Database における透過的データ暗号化SQL Server 暗号化SQL Server とデータベース暗号化キー (データベース エンジン)SQL Server データベース エンジンと Azure SQL Database のためのセキュリティセンターFILESTREAM (SQL Server)