SQL Database、SQL Managed Instance および Azure Synapse Analytics の透過的なデータ暗号化

適用対象: Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics

Transparent Data Encryption (TDE) は、保存データを暗号化することによって、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics を悪意のあるオフライン アクティビティの脅威から保護するために役立ちます。 データベース、関連付けられているバックアップ、保管されているトランザクション ログ ファイルの暗号化と暗号化解除をリアルタイムで実行することにより、アプリケーションに変更を加えずに暗号化を行うことができます。 新しくデプロイされるすべての Azure SQL Database では、TDE は既定で有効になっています。Azure SQL Database の古いデータベースでは手動で有効にする必要があります。 Azure SQL Managed Instance では、TDE は、新しく作成されたデータベースでインスタンス レベルで有効化されます。 Azure Synapse Analytics には、TDE を手動で有効にする必要があります。

Note

この記事は、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics (専用 SQL プール (以前の SQL DW)) に適用されます。 Synapse ワークスペース内の専用 SQL プールの Transparent Data Encryption に関するドキュメントについては、Azure Synapse Analytics の暗号化に関する記事を参照してください。

テーブル名、オブジェクト名、インデックス名など、カスタマー コンテンツと見なされる一部の項目は、Microsoft によるサポートとトラブルシューティングのためにログ ファイルで送信される場合があります。

TDE では、ページ レベルでデータのリアルタイム I/O 暗号化と暗号化解除が実行されます。 各ページは、メモリに読み込まれるときに暗号化解除され、ディスクに書き込まれる前に暗号化されます。 TDE では、データベース暗号化キー (DEK) という対称キーを使用してデータベース全体のストレージが暗号化されます。 データベースの起動時に、DEK の暗号化は解除され、SQL Server データベース エンジン プロセスでデータベース ファイルの暗号化解除と再暗号化を行うために使用されます。 DEK は TDE 保護機能によって保護されます。 TDE 保護機能は、サービスによって管理される証明書 (サービスによって管理される透過的なデータ暗号化) または Azure Key Vault に格納される非対称キー (顧客によって管理される透過的なデータ暗号化) のどちらかです。

Azure SQL Database と Azure Synapse の場合、TDE 保護機能はサーバー レベルで設定され、そのサーバーに関連付けられているすべてのデータベースによって継承されます。 Azure SQL Managed Instance の場合、TDE 保護機能はインスタンス レベルで設定され、そのインスタンス上のすべての暗号化されたデータベースによって継承されます。 サーバーという言葉は、別途明記されていない限り、このドキュメントではサーバーとインスタンスの両方を指します。

重要

新しく作成されたすべての SQL データベースは、サービスによって管理された Transparent Data Encryption を使用して既定で暗号化されます。 データベース ソースが暗号化されると、復元geo レプリケーションデータベース コピー を使用して作成されたターゲット データベースが既定で暗号化されます。 ただし、データベース ソースが暗号化されていない場合、復元geo レプリケーションデータベース コピー を使用して作成されたターゲット データベースは、既定では暗号化されません。 2017 年 5 月より前に作成された既存の SQL データベースと、2019 年 2 月より前に作成された既存の SQL Managed Instance データベースは、既定では暗号化されません。 復元によって作成された SQL Managed Instance データベースでは、ソースから暗号化の状態が継承されます。 TDE で暗号化された既存のデータベースを復元するには、必要な TDE 証明書を最初に SQL Managed Instance にインポートする必要があります。 データベースの暗号化の状態を確認するには、 sys.dm_database_encryption_keys 実行し、encryption_state_desc 列の状態をチェックします。

Note

TDE を使用して、SQL Database および SQL Managed Instance のmaster データベースなどのシステム データベースを暗号化することはできません。 master データベースには、ユーザー データベースで TDE 操作を実行するために必要なオブジェクトが含まれています。 機密データをシステム データベースに保存しないようにしてください。 例外は tempdb です。これは、常に TDE で暗号化され、そこに保管されたデータを保護します。

サービスによって管理された Transparent Data Encryption

Azure では、TDE の既定の設定は、組み込みのサーバー証明書によって保護される DEK です。 組み込みのサーバー証明書はサーバーごとに一意であり、使用される暗号化アルゴリズムは AES 256 です。 データベースが geo レプリケーションのリレーションシップに含まれている場合、プライマリ データベースと geo セカンダリ データベースの両方が、プライマリ データベースの親サーバー キーによって保護されます。 2 つのデータベースが同じサーバーに接続されている場合は、同じ組み込み証明書も共有されます。 Microsoft では社内のセキュリティ ポリシーに準拠してこれらの証明書のローテーションが自動的に行われており、ルート キーは Microsoft 内のシークレット ストアによって保護されています。 お客様は、Microsoft Trust Center で入手可能な独立したサード パーティの監査レポートで、SQL Database および SQL Managed Instance が内部セキュリティ ポリシーに準拠していることを確認できます。

また、geo レプリケーションと復元のために、必要に応じてキーの移動と管理をシームレスに行います。

ユーザーが管理する Transparent Data Encryption - Bring Your Own Key

ユーザーによって管理される TDE は、TDE に対する Bring Your Own Key (BYOK) サポートとも呼ばれます。 このシナリオでは、DEK を暗号化する TDE 保護機能はユーザーによって管理される非対象キーであり、それはユーザーが所有して管理している Azure Key Vault (Azure のクラウドベースの外部キー管理システム) 内に格納され、そのキー コンテナーから出ることはありません。 TDE 保護機能はキー コンテナーによって生成するか、キー コンテナーに転送する (オンプレミスのハードウェア セキュリティ モジュール (HSM) デバイスから転送する) ことができます。 SQL Database、SQL Managed Instance、および Azure Synapse には、DEK の暗号化解除と暗号化のために、ユーザーが所有するキー コンテナーへのアクセス許可が付与されている必要があります。 サーバーからキー コンテナーへのアクセス許可が取り消されると、データベースはアクセス不可となり、すべてのデータが暗号化されます。

TDE と Azure Key Vault の統合により、ユーザーは Azure Key Vault 機能を使用して、キーの交換、キー コンテナーのアクセス許可、キーのバックアップ、すべての TDE 保護機能の監査/レポートの有効化などのキー管理タスクを制御できます。 Key Vault ではキーの一元管理が提供され、厳しく監視された HSM を使用してキー管理とデータ管理の職務を分離できるようにすることでセキュリティ ポリシーが順守されるようにサポートします。 Azure SQL Database と Azure Synapse の BYOK の詳細については、Azure Key Vault の統合による透過的なデータ暗号化に関する記事を参照してください。

Azure Key Vault の統合で TDE の使用を開始するには、Key Vault の自分のキーを使用して透過的なデータ暗号化を有効にする方法のガイドを参照してください。

Transparent Data Encryption で保護されたデータベースを移動する

Azure 内での操作のためにデータベースを暗号化解除する必要はありません。 ソース データベースまたはプライマリ データベースの TDE の設定は、ターゲットに透過的に継承されます。 含まれている操作は次のとおりです。

  • geo リストア
  • セルフサービスのポイントインタイム リストア
  • 削除されたデータベースの復元
  • アクティブな地理的レプリケーション
  • データベース コピーの作成
  • Azure SQL Managed Instance にバックアップ ファイルを復元する

重要

サービス マネージド TDE によって暗号化されたデータベースのコピーのみの手動バックアップを取得することは、Azure SQL Managed Instance ではサポートされていません。暗号化に使用される証明書にアクセスできないためです。 ポイントインタイム リストア機能を使用して、この種類のデータベースを別の SQL Managed Instance に移動するか、カスタマー マネージド キーに切り替えてください。

TDE で保護されたデータベースをエクスポートする場合、エクスポートされるデータベースのコンテンツは暗号化されません。 このエクスポートされたコンテンツは、暗号化されていない BACPAC ファイルに保存されます。 新しいデータベースのインポートが完了したら、BACPAC ファイルが適切に保護されていることを確認し、TDE を有効にします。

たとえば、BACPAC ファイルを SQL Server インスタンスからエクスポートした場合、新しいデータベースのインポートされるコンテンツは自動的には暗号化されません。 同様に、BACPAC ファイルを SQL Server インスタンスにインポートした場合も、新しいデータベースは自動的には暗号化されません。

唯一の例外は、SQL Database との間でデータベースをエクスポートする場合です。 新しいデータベースでは TDE が有効になりますが、BACPAC ファイル自体はまだ暗号化されていません。

Transparent Data Encryption の管理

Azure portal で TDE を管理します。

Azure portal で TDE を構成するには、Azure の所有者、共同作成者、または SQL セキュリティ マネージャーとして接続する必要があります。

データベース レベルで TDE を有効または無効にします。 Azure SQL Managed Instance の場合、Transact-SQL (T-SQL) を使用してデータベースの TDE のオン/オフを切り替えます。 Azure SQL Database と Azure Synapse では、Azure 管理者または共同作成者アカウントを使用してサインインした後、Azure portal でデータベースの TDE を管理できます。 ユーザー データベース以下の TDE 設定を見つけます。 既定では、サーバー レベルの暗号化キーが使用されます。 データベースを含むサーバー用の TDE 証明書が自動的に生成されます。

データベース用の Azure portal の [データ暗号化] メニューのスクリーンショット。

TDE マスター キー (TDE 保護機能とも呼ばれます) は、サーバーまたはインスタンスのレベルで設定します。 BYOK サポートによる TDE を使用し、Azure Key Vault のキーを使用してデータベースを保護するには、お使いのサーバーまたはマネージド インスタンスで TDE 設定を開きます。

サーバー用の Azure portal のデータベースの [透過的なデータ暗号化] メニューのスクリーンショット。

また、Azure SQL Database のデータベース レベルで TDE のカスタマー マネージド キーを使用することもできます。 詳細については、「カスタマー マネージド キーを使用したデータベース レベルでの Transparent Data Encryption (TDE)」をご覧ください。