Transparent Data Encryption (TDE)Transparent Data Encryption (TDE)

Transparent Data Encryption (TDE) は、 SQL ServerSQL ServerAzure SQL データベースAzure SQL Database のデータ ファイルを暗号化します。これは保存データの暗号化と呼ばれます。Transparent Data Encryption (TDE) encrypts SQL ServerSQL Server and Azure SQL データベースAzure SQL Database data files, known as encrypting data at rest. データベースをセキュリティで保護するために、安全なシステムの設計、機密資産の暗号化、データベース サーバーに対するファイアウォールの構築などの予防策を講じることができます。You can take several precautions to help secure the database such as designing a secure system, encrypting confidential assets, and building a firewall around the database servers. ただし、物理メディア (ドライブやバックアップ テープなど) が盗まれた場合は、悪意のある人物によってデータベースが復元またはアタッチされ、データが参照されるおそれがあります。However, in a scenario where the physical media (such as drives or backup tapes) are stolen, a malicious party can just restore or attach the database and browse the data. 解決策の 1 つは、データベース内の機密データを暗号化し、データの暗号化に使用されるキーを証明書で保護することです。One solution is to encrypt the sensitive data in the database and protect the keys that are used to encrypt the data with a certificate. これにより、キーを持たない人物によるデータの使用を防止できますが、このような保護は事前に計画する必要があります。This prevents anyone without the keys from using the data, but this kind of protection must be planned in advance.

TDE では、データとログ ファイルの暗号化および暗号化解除がリアルタイムの I/O で実行されます。TDE performs real-time I/O encryption and decryption of the data and log files. 暗号化にはデータベース暗号化キー (DEK) が使用されます。これは、復旧時に使用できるようにデータベース ブート レコードに保存されます。The encryption uses a database encryption key (DEK), which is stored in the database boot record for availability during recovery. DEK は、サーバーの master データベースに保存されている証明書を使用して保護される対称キーか、EKM モジュールによって保護される非対称キーです。The DEK is a symmetric key secured by using a certificate stored in the master database of the server or an asymmetric key protected by an EKM module. TDE では、"静止した" データ、つまりデータとログ ファイルが保護されます。TDE protects data "at rest", meaning the data and log files. この暗号化は、法律、規制、およびさまざまな業界で確立されているガイドラインの多くに準拠できるようになっています。It provides the ability to comply with many laws, regulations, and guidelines established in various industries. これによりソフトウェア開発者は、既存のアプリケーションを変更することなく、AES および 3DES 暗号化アルゴリズムを使用してデータを暗号化できます。This enables software developers to encrypt data by using AES and 3DES encryption algorithms without changing existing applications.

重要

TDE では、通信チャネル全体を暗号化することはできません。TDE does not provide encryption across communication channels. 通信チャネル全体でデータを暗号化する方法の詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。For more information about how to encrypt data across communication channels, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

関連項目:Related topics:

TDE についてAbout TDE

データベース ファイルの暗号化は、ページ レベルで実行されます。Encryption of the database file is performed at the page level. 暗号化されたデータベースのページは、ディスクに書き込まれる前に暗号化され、メモリに読み込まれるときに暗号化解除されます。The pages in an encrypted database are encrypted before they are written to disk and decrypted when read into memory. TDE では、暗号化されたデータベースのサイズが増えることはありません。TDE does not increase the size of the encrypted database.

SQL DatabaseSQL Database に該当する情報Information applicable to SQL DatabaseSQL Database

TDE を SQL Database V12SQL Database V12 V12 (一部のリージョンではプレビュー版) と一緒に使用すると、マスター データベースに格納されるサーバー レベルの証明書が SQL DatabaseSQL Databaseによって自動的に作成されます。When using TDE with SQL Database V12SQL Database V12 V12 (Preview in some regions) the server-level certificate stored in the master database is automatically created for you by SQL DatabaseSQL Database. SQL DatabaseSQL Database で TDE データベースを移動するには、データベースの暗号化を解除してデータベースを移動し、移動先の SQL DatabaseSQL Databaseで TDE を再度有効にする必要があります。To move a TDE database on SQL DatabaseSQL Database you must decrypt the database, move the database, and then re-enable TDE on the destination SQL DatabaseSQL Database. SQL DatabaseSQL Databaseでの TDE に関する詳細な手順については、「 Transparent Data Encryption with Azure SQL Database」を参照してください。For step-by-step instructions for TDE on SQL DatabaseSQL Database, see Transparent Data Encryption with Azure SQL Database.

TDE のプレビューの状態は、 SQL DatabaseSQL Database のバージョン ファミリ V12 が現在一般提供の段階にあると発表されている地理的リージョンのサブセットにおいても適用されます。The preview of status of TDE applies even in the subset of geographic regions where version family V12 of SQL DatabaseSQL Database is announced as now being in general availability status. TDE がプレビューから GA に昇格されたことを SQL DatabaseSQL Database が発表するまで、 MicrosoftMicrosoft 用の TDE の実稼働データベースでの使用は想定されていません。TDE for SQL DatabaseSQL Database is not intended for use in production databases until MicrosoftMicrosoft announces that TDE is promoted from preview to GA. SQL DatabaseSQL Database V12 の詳細については、「 Azure SQL Database の新機能」をご覧ください。For more information about SQL DatabaseSQL Database V12, see What's new in Azure SQL Database.

SQL ServerSQL Server に該当する情報Information applicable to SQL ServerSQL Server

セキュリティで保護されたデータベースは、正しい証明書を使用することで復元できます。After it is secured, the database can be restored by using the correct certificate. 証明書の詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。For more information about certificates, see SQL Server Certificates and Asymmetric Keys.

TDE を有効にしたら、証明書とそれに関連付けられた秘密キーを直ちにバックアップする必要があります。When enabling TDE, you should immediately back up the certificate and the private key associated with the certificate. 証明書が使用できなくなった場合、またはデータベースを別のサーバーに復元またはアタッチする必要がある場合に、証明書と秘密キーの両方のバックアップが必要です。これらのバックアップがない場合は、データベースを開けません。If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database. 暗号化証明書は、データベースで TDE を無効にした場合でも保持する必要があります。The encrypting certificate should be retained even if TDE is no longer enabled on the database. データベースが暗号化されていない場合でも、トランザクション ログの一部はまだ保護されたままである場合があるため、データベースの完全バックアップが実行されるまでは、一部の操作では証明書が必要な場合があります。Even though the database is not encrypted, parts of the transaction log may still remain protected, and the certificate may be needed for some operations until the full backup of the database is performed. 有効期限の日付を過ぎた証明書であっても、TDE によりデータを暗号化および暗号化解除できる場合があります。A certificate that has exceeded its expiration date can still be used to encrypt and decrypt data with TDE.

暗号化階層Encryption Hierarchy

TDE 暗号化のアーキテクチャを次の図に示します。The following illustration shows the architecture of TDE encryption. SQL DatabaseSQL Databaseで TDE を使用する場合に、ユーザーによって構成可能なのは、データベース レベルの項目 (データベース暗号化キーと ALTER DATABASE の部分) のみです。Only the database level items (the database encryption key and ALTER DATABASE portions are user-configurable when using TDE on SQL DatabaseSQL Database.

トピックで説明された階層を表示Displays the hierarchy described in the topic.

Transparent Data Encryption の使用Using Transparent Data Encryption

TDE を使用するには、次の手順を実行します。To use TDE, follow these steps.

適用対象: SQL ServerSQL ServerApplies to: SQL ServerSQL Server.
  • マスター キーを作成します。Create a master key

  • マスター キーで保護された証明書を作成または取得します。Create or obtain a certificate protected by the master key

  • データベース暗号化キーを作成し、証明書で保護します。Create a database encryption key and protect it by the certificate

  • 暗号化を使用するようにデータベースを設定します。Set the database to use encryption

次の例では、 AdventureWorks2012 という名前のサーバーにインストールされた証明書を使用して、 MyServerCertデータベースを暗号化および暗号化解除しています。The following example illustrates encrypting and decrypting the AdventureWorks2012 database using a certificate installed on the server named 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 ServerSQL Serverによってバックグラウンド スレッドでスケジュールされます。The encryption and decryption operations are scheduled on background threads by SQL ServerSQL Server. これらの操作の状態は、この後の一覧に示すカタログ ビューおよび動的管理ビューを使用して確認できます。You can view the status of these operations using the catalog views and dynamic management views in the list that appears later in this topic.

注意事項

TDE が有効になっているデータベースのバックアップ ファイルも、データベース暗号化キーを使用して暗号化されます。Backup files of databases that have TDE enabled are also encrypted by using the database encryption key. このため、このバックアップを復元するときには、データベース暗号化キーを保護している証明書が必要です。As a result, when you restore these backups, the certificate protecting the database encryption key must be available. つまり、データの損失を防ぐには、データベースをバックアップするだけでなく、サーバー証明書のバックアップも確実に保守する必要があります。This means that in addition to backing up the database, you have to make sure that you maintain backups of the server certificates to prevent data loss. 証明書が使用できなくなると、データの損失が発生します。Data loss will result if the certificate is no longer available. 詳細については、「 SQL Server Certificates and Asymmetric Keys」を参照してください。For more information, see SQL Server Certificates and Asymmetric Keys.

コマンドと関数Commands and Functions

TDE の証明書を次に示すステートメントで処理できるようにするには、この証明書をデータベース マスター キーで暗号化する必要があります。The TDE certificates must be encrypted by the database master key to be accepted by the following statements. パスワードだけで暗号化された証明書は、ステートメントで暗号化機能として受け付けられません。If they are encrypted by password only, the statements will reject them as encryptors.

重要

TDE で使用された証明書をパスワードで保護するように変更すると、再起動後にデータベースにアクセスできなくなります。Altering the certificates to be password-protected after they are used by TDE will cause the database to become inaccessible after a restart.

次の表に、TDE のコマンドと関数の説明とリンクを示します。The following table provides links and explanations of TDE commands and functions.

コマンドまたは関数Command or function 用途Purpose
CREATE DATABASE ENCRYPTION KEY (Transact-SQL)CREATE DATABASE ENCRYPTION KEY (Transact-SQL) データベースの暗号化に使用されるキーを作成します。Creates a key that is used to encrypt a database.
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)ALTER DATABASE ENCRYPTION KEY (Transact-SQL) データベースの暗号化に使用されるキーを変更します。Changes the key that is used to encrypt a database.
DROP DATABASE ENCRYPTION KEY (Transact-SQL)DROP DATABASE ENCRYPTION KEY (Transact-SQL) データベースの暗号化に使用されたキーを削除します。Removes the key that was used to encrypt a database.
ALTER DATABASE SET のオプション (Transact-SQL)ALTER DATABASE SET Options (Transact-SQL) TDE を有効にするために使用される ALTER DATABASE オプションについて説明します。Explains the ALTER DATABASE option that is used to enable TDE.

カタログ ビューと動的管理ビューCatalog Views and Dynamic Management Views

次の表に、TDE のカタログ ビューと動的管理ビューを示します。The following table shows TDE catalog views and dynamic management views.

カタログ ビューまたは動的管理ビューCatalog view or dynamic management view 目的Purpose
sys.databases (Transact-SQL)sys.databases (Transact-SQL) データベース情報を表示するカタログ ビューCatalog view that displays database information.
sys.certificates (Transact-SQL)sys.certificates (Transact-SQL) データベース内の証明書を表示するカタログ ビューCatalog view that shows the certificates in a database.
sys.dm_database_encryption_keys (Transact-SQL)sys.dm_database_encryption_keys (Transact-SQL) データベースで使用されている暗号化キー、およびデータベースの暗号化の状態に関する情報を表示する動的管理ビューDynamic management view that provides information about the encryption keys used in a database, and the state of encryption of a database.

アクセス許可Permissions

TDE の各機能とコマンドには、上の表で説明されているように、個別の権限要件があります。Each TDE feature and command has individual permission requirements, described in the tables shown earlier.

TDE に関係するメタデータを表示するには、証明書に対する VIEW DEFINITION 権限が必要です。Viewing the metadata involved with TDE requires the VIEW DEFINITION permission on the certificate.

考慮事項Considerations

データベース暗号化操作の再暗号化スキャンが実行されている間は、データベースに対するメンテナンス操作が無効になります。While a re-encryption scan for a database encryption operation is in progress, maintenance operations to the database are disabled. メンテナンス操作を実行するには、データベースに対してシングル ユーザー モード設定を使用します。You can use the single user mode setting for the database to perform the maintenance operation. 詳細については、「 データベースをシングル ユーザー モードに設定する」を参照してください。For more information, see Set a Database to Single-user Mode.

データベースの暗号化の状態を確認するには、sys.dm_database_encryption_keys 動的管理ビューを使用します。You can find the state of the database encryption using the sys.dm_database_encryption_keys dynamic management view. 詳細については、このトピックの「カタログ ビューと動的管理ビュー」を参照してください。For more information, see the "Catalog Views and Dynamic Management Views"section earlier in this topic).

TDE では、データベース内のすべてのファイルとファイル グループが暗号化されます。In TDE, all files and filegroups in the database are encrypted. データベースに READ ONLY とマークされているファイル グループがあると、データベースの暗号化操作は失敗します。If any filegroups in a database are marked READ ONLY, the database encryption operation will fail.

データベースがデータベース ミラーリングまたはログ配布で使用されている場合は、両方のデータベースが暗号化されます。If a database is being used in database mirroring or log shipping, both databases will be encrypted. トランザクション ログは、2 つのデータベースの間で送信されるときに暗号化されます。The log transactions will be encrypted when sent between them.

重要

データベースを暗号化の対象として設定すると、新しいフルテキスト インデックスが暗号化されるようになります。Any new full-text indexes will be encrypted when a database is set for encryption. 以前に作成されたフルテキスト インデックスは、アップグレード時にインポートされ、データが SQL ServerSQL Serverに読み込まれると TDE で暗号化されます。Previously-created full-text indexes will be imported during upgrade and they will be in TDE after the data is loaded into SQL ServerSQL Server. 列でフルテキスト インデックスを有効にすると、フルテキスト インデックス スキャンの実行時に、その列のデータがプレーンテキストでディスクに書き込まれる可能性があります。Enabling a full-text index on a column can cause that column's data to be written in plain text onto the disk during a full-text indexing scan. 暗号化された機密データにはフルテキスト インデックスを作成しないことをお勧めします。We recommend that you do not create a full-text index on sensitive encrypted data.

暗号化されたデータは、暗号化されていない同等のデータより、圧縮比率が大幅に下がります。Encrypted data compresses significantly less than equivalent unencrypted data. TDE を使用してデータベースを暗号化した場合、バックアップの圧縮によってバックアップ ストレージが大幅に圧縮されることはありません。If TDE is used to encrypt a database, backup compression will not be able to significantly compress the backup storage. したがって、TDE とバックアップの圧縮を併用することはお勧めしません。Therefore, using TDE and backup compression together is not recommended.

制限Restrictions

最初のデータベース暗号化、キー変更、またはデータベースの暗号化解除の実行中は、次の操作を実行できません。The following operations are not allowed during initial database encryption, key change, or database decryption:

  • データベース内のファイル グループからのファイルの削除Dropping a file from a filegroup in the database

  • データベースの削除Dropping the database

  • データベースのオフライン化Taking the database offline

  • データベースのデタッチDetaching a database

  • データベースまたはファイル グループの READ ONLY 状態への移行Transitioning a database or filegroup into a READ ONLY state

CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY、または ALTER DATABASE...SET ENCRYPTION の各ステートメントの実行中は、次の操作を実行できません。The following operations are not allowed during the CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, or ALTER DATABASE...SET ENCRYPTION statements.

  • データベース内のファイル グループからのファイルの削除Dropping a file from a filegroup in the database.

  • データベースの削除。Dropping the database.

  • データベースのオフライン化Taking the database offline.

  • データベースのデタッチDetaching a database.

  • データベースまたはファイル グループの READ ONLY 状態への移行Transitioning a database or filegroup into a READ ONLY state.

  • ALTER DATABASE コマンドの使用Using an ALTER DATABASE command.

  • データベースまたはデータベース ファイルのバックアップの開始Starting a database or database file backup.

  • データベースまたはデータベース ファイルの復元の開始Starting a database or database file restore.

  • スナップショットの作成Creating a snapshot.

次の操作または状況が発生すると、CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY、または ALTER DATABASE...SET ENCRYPTION の各ステートメントを実行できなくなります。The following operations or conditions will prevent the CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, or ALTER DATABASE...SET ENCRYPTION statements.

  • データベースが読み取り専用であるか、読み取り専用のファイル グループを含んでいる。The database is read-only or has any read-only file groups.

  • ALTER DATABASE コマンドが実行されている。An ALTER DATABASE command is executing.

  • データ バックアップが実行されている。Any data backup is running.

  • データベースがオフラインまたは復元中である。The database is in an offline or restore condition.

  • スナップショットが実行されている。A snapshot is in progress.

  • データベース メンテナンス タスク。Database maintenance tasks.

データベース ファイルを作成する際には、TDE が有効になっているとファイルの瞬時初期化を使用できません。When creating database files, instant file initialization is not available when TDE is enabled.

非対称キーでデータベース暗号化キーを暗号化するには、非対称キーが拡張キー管理プロバイダーに存在している必要があります。In order to encrypt the database encryption key with an asymmetric key, the asymmetric key must reside on an extensible key management provider.

Transparent Data Encryption とトランザクション ログTransparent Data Encryption and Transaction Logs

データベースで TDE の使用を有効にすると、仮想トランザクション ログの残りの部分が "ゼロ設定" され、強制的に次の仮想トランザクション ログに移行します。Enabling a database to use TDE has the effect of "zeroing out" the remaining part of the virtual transaction log to force the next virtual transaction log. これにより、データベースが暗号化対象として設定された後にトランザクション ログにクリア テキストが残らないことが保証されます。This guarantees that no clear text is left in the transaction logs after the database is set for encryption. ログ ファイルの暗号化の状態を確認するには、次の例のように encryption_state ビュー内の sys.dm_database_encryption_keys 列を表示します。You can find the status of the log file encryption by viewing the encryption_state column in the sys.dm_database_encryption_keys view, as in this example:

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 ServerSQL Server のログ ファイル アーキテクチャの詳細については、「トランザクション ログ (SQL Server)」を参照してください。For more information about the SQL ServerSQL Server log file architecture, see The Transaction Log (SQL Server).

データベース暗号化キーを変更する前にトランザクション ログに書き込まれたデータは、以前のデータベース暗号化キーで暗号化されます。All data written to the transaction log before a change in the database encryption key will be encrypted by using the previous database encryption key.

データベース暗号化キーを 2 回変更した後は、データベース暗号化キーを再度変更する前に、ログ バックアップを実行する必要があります。After a database encryption key has been modified twice, a log backup must be performed before the database encryption key can be modified again.

Transparent Data Encryption と tempdb システム データベースTransparent Data Encryption and the tempdb System Database

tempdb システム データベースは、 SQL ServerSQL Server インスタンス上の他のデータベースが TDE を使用して暗号化されると暗号化されます。The tempdb system database will be encrypted if any other database on the instance of SQL ServerSQL Server is encrypted by using TDE. この場合、同じ SQL ServerSQL Serverインスタンス上にある暗号化されないデータベースのパフォーマンスに影響が生じることがあります。This might have a performance effect for unencrypted databases on the same instance of SQL ServerSQL Server. tempdb システム データベースの詳細については、「 tempdb データベース」を参照してください。For more information about the tempdb system database, see tempdb Database.

Transparent Data Encryption とレプリケーションTransparent Data Encryption and Replication

レプリケーションでは、TDE が有効になっているデータベースのデータが暗号化された形式で自動的にレプリケートされることはありません。Replication does not automatically replicate data from a TDE-enabled database in an encrypted form. ディストリビューション データベースとサブスクライバー データベースを保護する場合は、TDE を個別に有効にする必要があります。You must separately enable TDE if you want to protect the distribution and subscriber databases. スナップショット レプリケーションでは、トランザクション レプリケーションとマージ レプリケーションへの最初のデータ ディストリビューションと同様に、暗号化されていない中間ファイル (bcp ファイルなど) にデータを格納できます。Snapshot replication, as well as the initial distribution of data for transactional and merge replication, can store data in unencrypted intermediate files; for example, the bcp files. トランザクション レプリケーションまたはマージ レプリケーション時に、暗号化を有効にして通信チャネルを保護することができます。During transactional or merge replication, encryption can be enabled to protect the communication channel. 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

Transparent Data Encryption と FILESTREAM データTransparent Data Encryption and FILESTREAM DATA

FILESTREAM データは TDE が有効になっている場合でも暗号化されません。FILESTREAM data is not encrypted even when TDE is enabled.

Transparent Data Encryption とバッファー プール拡張機能Transparent Data Encryption and Buffer Pool Extension

バッファー プール拡張機能 (BPE) に関連するファイルは、データベースが TDE を使用して暗号化される場合でも暗号化されません。Files related to buffer pool extension (BPE) are not encrypted when database is encrypted using TDE. BPE 関連のファイルについては、Bitlocker や EFS などのファイル システム レベルの暗号化ツールを使用する必要があります。You must use file system level encryption tools like Bitlocker or EFS for BPE related files.

Transparent Data Encryption とインメモリ OLTPTransparent Data Encryption and In-Memory OLTP

TDE は、インメモリ OLTP オブジェクトを含むデータベースで有効にすることができます。TDE can be enabled on a database that has In-Memory OLTP objects. TDE が有効な場合、インメモリ OLTP ログ レコードが暗号化されます。In-Memory OLTP log records are encrypted if TDE is enabled. MEMORY_OPTIMIZED_DATA ファイル グループのデータは、TDE が有効な場合は暗号化されません。Data in a MEMORY_OPTIMIZED_DATA filegroup is not encrypted if TDE is enabled.

関連項目See Also

TDE で保護されたデータベースを別の SQL Server に移動する Move a TDE Protected Database to Another SQL Server
EKM を使用して TDE を有効にする Enable TDE Using EKM
Azure SQL Database での Transparent Data Encryption Transparent Data Encryption with Azure SQL Database
SQL Server の暗号化 SQL Server Encryption
SQL Server とデータベースの暗号化キー (データベース エンジン) SQL Server and Database Encryption Keys (Database Engine)
SQL Server データベース エンジンと Azure SQL Database のセキュリティ センター Security Center for SQL Server Database Engine and Azure SQL Database
FILESTREAM (SQL Server)FILESTREAM (SQL Server)