SQL Server TDEを使​​用してリモートバックアップを書き込むときに、ネットワークトラフィックは暗号化されますか?


9

彼らは「愚かな質問」などはないと言っているので、ここに行く:

SQL Serverの透過的データ暗号化(TDE)が保存データを暗号化し、誰かがストレージに侵入してそれらのファイルを盗んだ場合にデータベースファイル(.mdf)とバックアップファイル(.bak)が暗号化されることを理解しています。また、ディスクから読み取ったときにデータが復号化され、メモリ内で(暗号化されて)暗号化されないことも理解しています。したがって、リモートクエリ(select * from SensitiveData)を実行しているユーザーによって要求されたデータは、ネットワーク上を移動するときに暗号化されないため、傍受されやすくなります。

したがって、上記のすべてが正しいと仮定すると、ここで私の愚かな質問があります:SQL ServerインスタンスがコンピューターAにあり、TDEデータベースのバックアップがリモートコンピューターBのストレージに書き出されている場合、バックアップ操作データは転送元として暗号化されますか?コンピューターAはコンピューターBのディスクに書き込まれますか?(暗号化操作は最初にコンピューターAで行われると想定しているため)必要があると思いますが、Microsoftのドキュメントやブログでこれの確認を見つけることができません。同様に、復元操作中に–コンピュータBのディスクから転送されているデータを傍受して、コンピュータAのデータベースを復元する人はいますか–暗号化されたデータが暗号化されているのを見つけましたか?


2
それは本当に良い質問です
シャンキー2017年

回答:


7

はい。TDEデータはディスク上で暗号化されており、バックアップ操作によって復号化されることはないため、ネットワーク上を移動する間、バックアップは暗号化されます。

ポールランダルのバックアップ神話

神話30-09)バックアップはバッファプールを介してデータを読み取る

いいえ。バックアップサブシステムは、データベースファイルへの独自のチャネルを開いて、すべてをSQL Serverのメモリに読み込んでバックアップデバイスに戻す必要があるというパフォーマンスへの影響を回避します(また、プロセスでバッファプールを効果的にフラッシュします)。ページのチェックサムチェックを要求すると、それはメモリの小さな部分を使用します。

ページがバッファプールにロードされた場合(SQLがデータベーステーブルとインデックスデータをキャッシュするためにSQLが使用する「通常の」メモリ空間)、ページを復号化する必要があります。しかし、バックアップはそれを行いません。バックアップ先に生の暗号化された「エクステント」(連続する8ページのチャンク)をダンプするだけです。

Paul Randalから、彼の上記のコメントがまだTDEに関連しているという確認を得ることができました。

まったく同じように機能します。バッファープールは暗号化を行い、ページをディスクに書き込む前にページチェックサムを追加します。バックアップがバッファープールを読み取ることはありません。つまり、TDEデータベースのバックアップには暗号化がまだ残っています。ページのチェックサムは検証されますが、バッファープールコードではなく、バックアップコードによって検証されます。

つまり、データベースでCHECKSUMを有効にした場合暗号化が行われた後で、それらが(通常のSQL書き込み操作中に)追加されます。つまり、バックアッププロセスでは、データを復号化せずに、生の(暗号化された)エクステントの読み取り、チェックサムの検証、およびバックアップの書き込みを行うことができます。

これは、ほぼ確実に(前にSQL 2016)、TDEとデータベースのバックアップの圧縮を有効にすると、何もしなかったという理由で暗号化されたデータは非常に圧縮可能ではないので

これは、TDEで暗号化されたデータベースのバックアップが取られたときに、データベースページがバックアップされても復号化されないためです。それらは通常の状態と同じ暗号化された状態でバックアップされ、圧縮されます。その性質上、暗号化されたデータは非常にユニークであるため、データ圧縮は暗号化されたデータに対してあまり効果がありません。

復元操作の場合、同じ原理が適用されます。暗号化されたバックアップはネットワーク全体で暗号化されたままであり、まだ暗号化された状態で復元サーバーのディスクに書き込まれます。復元が完了した後、データベースがメモリにロードされたときにのみ暗号化が解除されます。


3

...バックアップ操作データがコンピューターAからコンピューターBのディスクに書き込まれるときに暗号化されますか?

はい、バッファプールに入るときに復号化され、出るときに暗号化されます。この状況では、ディスクに書き込むため、最初に暗号化されてから書き込まれます。書き込みはネットワークを介して行われるため、データ自体は暗号化されますが、ネットワークトラフィックの他の部分は暗号化されません。

...復元操作中...暗号化されたデータが暗号化されていることに気付くでしょうか?

はい、上記と同じですが逆の順序で適用されるためです。データはディスク上で暗号化され、暗号化された状態で読み取られて転送されています。次に、インスタンスに到達し、バッファプールに読み込まれ、途中で暗号化が解除されます。


1
これは正しいと思いますが、あなたの言う理由で正しいかどうかはわかりません。BACKUPはRAWデータベースのEXTENTS(ページではなく)をディスクに送信するため、それらがメモリにロードされるときに復号化ステップをバイパスすると考えていました。私は間違っているかもしれませんが、ドキュメントを今探しています。
BradC

1
それを見つけた、Paul Randalの神話30-09を参照してください。「バックアップサブシステムは、データベースファイルへの独自のチャネルを開いて、すべてをSQL Serverのメモリに読み込んでバックアップデバイスに戻すというパフォーマンスへの影響を回避します。」TDEについては特に触れていませんが、バックアッププロセスが独自のチャネルである場合は、ただちに再暗号化するだけで復号化するのは無駄に思えます。チェックサムを検証したり、有効になっている場合は、復号化せずに圧縮を適用したりすることもできます。
BradC

@BradCバックアップ自体がこのように機能するとは言っていませんでしたが、暗号化/復号化プロセスが保存データでどのように機能するかを説明しました。あいまいな場合は変更しますが、暗号化/復号化が行われるときと場所でバックアップがどのように機能するかは、これではありません。
Sean Gallardy

ただし、バックアッププロセスがバッファプールを使用しない場合、別の理由で結論(バックアップパケットが暗号化されている)が正しい場合でも、推論は正しくありません。
BradC 2017年

@BradCいいえ、理由はそれがすでにディスクに書き込まれているためにすでに暗号化されているということです...バックアップが復号化され、BPを通過して再暗号化されると私が言っていることをどのようにしているかはわかりません。すでに暗号化されているため、別のディスクにコピーしたり、別のディスクからコピーしたりしても復号化されないので、かなりわかりやすいと思いました。
Sean Gallardy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.