SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Database の TDE サポート (プレビュー) について

one comment

Build 2015 で SQL Database の TDS サポート (プレビュー) が発表され、さっそく TDE の利用ができるようになっています。

ざっくりとではありますが触ってみたいと思います。
詳細な情報については、
Transparent Data Encryption (TDE)
Transparent Data Encryption with Azure SQL Database
が参考になります。
最初の情報が TDE 全体としての情報、次の情報が SQL Database における TDE についての情報となります。
# 現状は英語版の情報のみとなります。

Build 2015 であった、DB 関連の他のアップデートについては、
Microsoft Announces Azure SQL Database elastic database, Azure SQL Data Warehouse, Azure Data Lake
Three major data platform announcements at Build, including Azure Data Lake
Full-Text Search is now available for preview in Azure SQL Database
から追えるかと思います。

また、TDE とフルテキスト検索のサポートにより What’s new in SQL Database V12 の情報も更新されています。

TDE は透過的データ暗号化の機能となりますので、機能を有効化すれば、利用者は暗号化されていることを意識せずに、アプリケーションの変更なく、データベースの内容 (データ / ログ / バックアップ) を暗号化された状態で利用することができます。

The SQL Database transparent data encryption (preview) helps protect against the threat of malicious activity by performing real-time encryption and decryption of the database, associated backups, and transaction log files at rest without requiring changes to the application.

TDE では、暗号化のための証明書 (キー) を使用します。
SQL Server の場合は個別で作成する必要があり、キーを Azure の Key Vault に格納しておくことができましたが、SQL Database の場合は、ビルトインで組み込まれている証明書 (90 日で自動的に更新される) を使用する形で暗号化を行う形になるため、証明書の管理が不要 (実際にはできない、Key Vault との連携もできない) となっています。

SQL Database では、SQL Server 標準のバックアップやデータベースのファイル (mdf/ldf/ndf) は直接入手することができないため、データベースのファイルの漏えい時の対策としてというよりは、データベース使用時の要件として「暗号化が行われていること」という条件が入っている場合に担保ができるようになるという感じでしょうか。

 

■TDE の有効化


現状は、プレビューですのでサブスクリプション単位にプレビューの使用条件を許諾する必要があります。

使用条件を許諾すると DB 単位で TDE を有効化することができます。
ポータルから有効にする場合は以下の画面ですね。

image

TDE は T-SQL からも有効にすることができます。
T-SQL で有効にする場合は、以下のように暗号化キーの作成から実施する必要があります。
# ポータルで作成した場合には、自動的に暗号化キーの作成も実施されています。

暗号化に使用するキーですが「##MS_TdeCertificate##」で固定となるようですね。

CREATE DATABASE ENCRYPTION KEY 
WITH ALGORITHM = AES_256 
ENCRYPTION BY SERVER CERTIFICATE ##MS_TdeCertificate##;

ALTER DATABASE [TDETEST] SET ENCRYPTION ON;
GO

暗号化が有効にされているかどうか、以下のクエリで確認ができます。

select name,is_encrypted from sys.databases
select * from sys.dm_database_encryption_keys 

データベース暗号化を無効にして、暗号化キーを削除する場合は以下のようなクエリを実行します。

ALTER DATABASE TDETEST SET ENCRYPTION OFF;

DROP DATABASE ENCRYPTION KEY

 

TDE を有効にしたデータベースをリストアした場合、暗号化キーはデータベースに含まれていますので、以下の操作では TDE による暗号化は継承されます。

Working with TDE Protected Databases on SQL Database


You do not need to decrypt databases for operations within Azure. The TDE settings on the source database or primary database are transparently inherited on the target. This includes operations involving:

  • Geo-Restore

  • Self-Service Point in Time Restore

  • Restore a Deleted Database

  • Active Geo_Replication

  • Creating a Database Copy

ただし、bacpac を使用したインポート / エクスポートでは暗号化の状態は継承されません。

Moving a TDE Protected Database on using .Bacpac Files


When exporting a TDE protected database using the Export Database function in the Azure SQL Database Portal or the SQL Server Import and Export Wizard, the content of the database is not encrypted. The content is stored in .bacpac files which are not encrypted. Be sure to protect the .bacpac files appropriately and enable TDE once import of the new database is completed.

bacpac のデータは Native 形式でエクスポートされた BCP データやテキストのスキーマの構成となっていますので、これらのデータは暗号化した状態にすることができません。

以下は GUI の形式のデータをテーブルに INSERT し、データベースを暗号化したものをポータルから bacpac でエクスポートしたものになりますが、この状態では暗号化は行われていません。

image

そのため bacpac でデータのインポートをした場合は、データベースの暗号化を明示的に設定する必要があります。

 

SQL Database の TDE は、キーの管理についてはプラットフォーム側に任せることで、かなりシンプルに暗号化の設定ができるようになっていますね。

Written by masayuki.ozawa

5月 2nd, 2015 at 6:07 pm

Posted in SQL Database

Tagged with

One Response to 'SQL Database の TDE サポート (プレビュー) について'

Subscribe to comments with RSS or TrackBack to 'SQL Database の TDE サポート (プレビュー) について'.

  1. […] 透過的データ暗号化 […]

Leave a Reply

*