Transparent Data Encryption を実装する

完了

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

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

Azure SQL Database と Azure Synapse の場合、TDE 保護機能は論理 SQL サーバー レベルで設定され、そのサーバーに関連付けられているすべてのデータベースによって継承されます。 Azure SQL Managed Instance (プレビュー段階の BYOK 機能) の場合、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 DMV から選択クエリを実行し、encryption_state_desc 列の状態を確認します。

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

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

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

また、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 には、DEK の暗号化解除と暗号化のために、ユーザーが所有するキー コンテナーへのアクセス許可が付与されている必要があります。 論理 SQL サーバーからキー コンテナーへのアクセス許可が取り消されると、データベースはアクセス不可となり、すべてのデータが暗号化されます。

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

Transparent Data Encryption 構成フォームのスクリーンショット。

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 証明書が自動的に生成されます。

データベース レベルで Transparent Data Encryption を有効または無効にする方法を示すスクリーンショット。

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

Bring Your Own Key をサポートする Transparent Data Encryption を使う方法を示すスクリーンショット。

また、Azure SQL Database のデータベース レベルで TDE のカスタマー マネージド キーを使用することもできます。