web-dev-qa-db-ja.com

SQL Server:データベースバックアップを提供する場合、動的データマスキングは安全ですか?

いくつかの列を除いて、パートナー(開発者)と共有する準備ができているデータを含むSQL Server 2016 SP1があります。例:

email varchar(64) MASKED WITH (FUNCTION = 'email()') NULL

パートナーに、特定のユーザーとしてデータベースのテスト用コピーにログインするための資格情報を、マスク解除の許可なしに与えます。私はこれがかなり安全であることを理解しています。現在、パートナーとデータベースのバックアップを共有することを検討しています。これにより、パートナーは独自のサーバーと環境で再ロードできます。

パートナーが新しいユーザーを作成したり、既存のログインに接続したりできないようにするために、おそらくユーザーを封じ込める必要があります(これについては不明です)。

CREATE USER user_name WITH PASSWORD = 'strong_password';

データベースのバックアップを共有し、マスクされた列が安全であると信頼できる方法はありますか、それとも物理的にデータを削除する必要がありますか?

8
carlo.borreo

パートナーが新しいユーザーを作成したり、既存のログインに接続したりできないように、おそらくユーザーを封じ込める必要があります(これについては不明です)。

バックアップ、包含データベースなどを共有している場合、彼らはデータに対して好きなことを何でもできます。システム管理者(サーバーにアクセスできると確信しています)はすべてのデータを見ることができます。

データベースバックアップを共有し、マスクされた列が安全であると信頼できる方法はありますか、それともデータを物理的に削除する必要がありますか?

データを削除してから、トランザクションログを複数回循環し、バックアップを取り、ダミーデータを挿入してVLFを再利用する(ログをマイニングできないようにする)か、データベースのスキーマのみのコピーを作成して、データが必要です。統計から情報をマイニングすることもできます。送信するコピーを作成していて、それを安全にしたい場合は、スクリプトを作成しません。

別のオプションは、バックアップをステージング領域に復元し、何らかの形式の暗号化(列、AEなど)を使用して機密性の高い列のデータを暗号化することです。データベースを送信する前に、必要なキーを削除してください。このように、データを復号化するためのキーはありませんが、それはまだそこにあります。上記の他のオプションを実行したくない場合は、これで十分です。

11
Sean Gallardy

いいえ、ごめんなさい。パートナーにはSQL Serverのsysadminログインがあり、sysadminはSQL Serverインスタンス内のすべてのもの(データベースを含む)ですべてを実行できます。

機密データを消去するルーチンを作成することをお勧めします。つまり、バックアップを実行します。それを別のデータベース名に復元し、クリーンアップします。そして今、新しいバックアップを作成します。

13
Tibor Karaszi