web-dev-qa-db-ja.com

外部ハードディスクドライブ上のSQL Serverデータベース

いくつかのセキュリティ問題のため、上司からUSBスティックや外付けHDDなどの外部/リムーバブルストレージにすべての機密データを保存するように依頼されました。これには、特に実行中のSQL Server 2008のMDF/NDF/LDFファイルが含まれます。

私はこの3日間、解決策を見つけることができずに本を読んでいます。何か解決策はありますか?誰かがそのようなことをしたことがありますか?

5
Achilles

さて、今私は私の質問への答えを知っています!

http://support.Microsoft.com/kb/304261 によれば、SAN/NASストレージを使用して、TraceONフラグを使用してデータベースのファイルを保存できます。何かのようなもの:

DBCC TraceOn(1807);
GO

このコマンドは、1807 TranceOnにフラグを立てて、データベースファイルへのパスとして「\サーバー名\パスからデータベースファイル.mdf」のようなUNCを使用できるようにします。次に、リムーバブルUSB HDDにフォルダーを作成し、「共有とセキュリティ」を使用して、そのフォルダーに対するフルコントロールを「ネットワークサービス」またはSQLがWindowsと対話するために使用するユーザーにフルコントロールする必要があります。全員を削除し、管理者も追加することを忘れないでください。

これで完了です。データベースを作成して楽しんでください!

DBCC TraceOn (1807);
Go

Use master;
GO

CREATE DATABASE [test001] 
    ON  PRIMARY (
        NAME = N'test001', 
        FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001.mdf' , 
        SIZE = 2048KB , 
        FILEGROWTH = 1024KB
        )
    LOG ON ( 
        NAME = N'test001_log', 
        FILENAME = N'\\PC-Name-Where-Share-Is\TempDB\test001_log.ldf' , 
        SIZE = 1024KB , 
        FILEGROWTH = 10%
    )
GO
8
Achilles

シンプルなデータベースを外部ドライブに移動するのは簡単です。

  1. exec sp_detach_db '<db_name>'でデータベースをデタッチします
  2. 外部ドライブの新しい場所にファイルをコピーします
  3. exec sp_attach_db '<db_name>', '<full_path_to_new_location_of_mdf>', '<full_path_to_ldf>'を使用してデータベースを再接続します

(これはGUIツールでも行うことができます。通常、アタッチとデタッチは、関連する右クリックメニューの「すべてのタスク」の見出しの下にあります。)私の経験は、USBエンクロージャーの内部ドライブを使用したSQL7、2000、2005のみです。 、しかし私はそれが2008年に変更されるものではないと思います(そしてそれはフラッシュスティックのような他のUSB大容量ストレージデバイスで動作するはずです)ドライブはローカルにマウントする必要があります-SQL Serverではデータベースに接続できませんネットワークストレージ。

ドライブを取り外す前に、データベースが切断されているか、SQL Serverがシャットダウンされていることを確認してください(もちろん、マシンの電源が完全にオフになっています)。マシンの電源を切るか、SQLサーバーをシャットダウンすることにより、リムーバブルディスクを解放する場合、SQLサーバーが次に起動する前にドライブを接続する必要があります。

他の人が指摘したように、ほとんどの場合、パフォーマンスが低下します。 USB2コントローラーの制限により、ほとんどのUSBドライブは約25Mb/secで最高に達しますエンクロージャー内のドライブがはるかに能力がある場合でも。そうは言っても、内部ドライブ(他のDBアクセスなど)で多くのことが発生している場合、データベースを別のスピンドルに移動すると、遅いインターフェイスで接続されていても、応答性が向上する可能性があります(DBアクセスが他のアクティブなIOと同じスピンドルで時間を競っていないため、余分なヘッドの動きによってレイテンシが発生します。これは、USBエンクロージャでSATA/PATAスピニングディスクを使用していることを前提としています。バグのあるフラッシュベースのUSBスティックを使用している場合、パフォーマンスはmuchさらに低くなり、特に書き込みの場合は、ソリッドステートストレージのレイテンシが低いにもかかわらず、ある程度は役立ちます。 bog標準のスティックは、10MByte/secよりもはるかに速く読み取ることはできず、4Mbyte/sec未満の書き込み速度は珍しくありません。

セキュリティポイント:リムーバブルメディアにデータを保存する方が安全なのは、作業領域が完全に安全である場合(キーとコードなしでは誰も出入りできず、誰が入室したかを精査する)、そして不在の場合のみです。すべての外付けドライブが取り外され、適切な金庫に保管されます。そうでなければ、リムーバブルドライブは実際にはかなり安全性が低くなります。

上記はすべて、開発環境について話していることを前提としています。ライブサービスに近いものについて話している場合、これは「特に推奨されない」から「強く推奨されない」へと進みます。そして、開発のためにとにかく機密データを使用するべきではありません。テストデータを製造するか、匿名化された実際のデータ(機密データが個人情報である場合は、名前、住所、識別コードなどのすべての識別情報が十分にランダム化されたもの)に不合格である必要があります。

より新しいハードウェアの更新

上記が記述されて以来、USB3ははるかにユビキタスになり、パフォーマンスの側面を多少変えています。適切なUSB3エンクロージャ内の適切な2.5インチまたはmSATA SSDは、実際には非常に優れたパフォーマンスを発揮します(もちろん、内部ドライブだけでなく、CPUへの影響もあります)。その他の考慮事項は同じです。

7
David Spillett

「セキュリティの問題」は、データを物理的に盗むほど難しくないということですか。リムーバブルドライブが改善データのセキュリティをどのように使用するのか想像できないので、かなり苦労しています。

4
womble

USB接続されたデバイスのパフォーマンスは非常に低いため、かなり耐えられないと思います。暗号化されたドライブでさえ、暗号化を使用するほうがよいでしょう

2
John Gardeniers

eSATAはあなたの友達です-USB、Firewire、または10 Gbps以外を使用しないでくださいNASソリューション、FC SANはちょうどいいでしょうが、正確ではありません取り外し可能性の代名詞-eSATA接続のディスクアレイを選びます。さまざまな点があり、それほど高価ではありません。

1
Chopper3

SB 2.0はひどく遅いですが、これは問題ではない可能性があります。特に、データベースの使用量が特に書き込みが多くなく、RAM- 、SQL Serverはデータベース全体をRAMに収めることができます。この時点で、SQL Serverがほとんどまたはすべてのデータベースページをメモリにバッファリングすると、ディスク速度はそれほど問題になりません。

リムーバブルデバイスからより多くのパフォーマンスが必要な場合は、FirewireまたはeSATAを試してください。ドライブが対応している場合、FW800は80MB /秒近くを提供します。 FW400でさえ、現実の世界ではUSB2の約2倍の速度です。 eSATAはさらに高速で、RAIDなしでそのインターフェースを飽和させることはほとんどありません。

私はフラッシュドライブから離れます。書き込み速度が遅く、より高価なSSDのようなウェアレベリングコントローラーを常に備えているわけではないため、何度も書き込むことができません。

リムーバブル3.5インチドライブエンクロージャはオプションですか?ほとんどのサーバーで一般的であるように、リムーバブルスレッドにマウントされた通常の内蔵ハードドライブを使用できればいいでしょう。物理的に取り外してロックすることは、サーバーを安全な場所に置くだけでなく、これが最善のソリューションです。

1
John Rose

これは、まったく意味をなさない要件の1つであり、正しい心の誰もそれを試みないため、そのための推奨事項を見つけることはできません。あなたの要件にとても悲観的で完全に反抗するのは嫌いですが、それはそうです。

それでも、上司の意向に合う場合は [〜#〜] qnap [〜#〜] のようなiSCSIシステムを調べることをお勧めします。

0
Chris

それが機能しない理由はありません。 SQL Serverの実行中にドライブの引き出しを開始しない限り(安全に削除できるようにするには、データベースを手動で切断する必要があります)。

パフォーマンスは依存し、使用頻度の低いデータベースはほとんど影響を受けません。頻繁に使用されるデータベースには複数の高速スピンドルが必要であり、USBでもSASでも、単一のスピンドルではパフォーマンスが非常に悪くなります。

しかし、リムーバブルでよりポータブルなメディアをどのようにしてより安全にすることができるでしょうか?上司に有益なアドバイスを提供できるようにするには、基本的な要件を理解する必要があります(上司が有益なアドバイスに関心があるかどうかは別の問題です)。

0
Richard

USBは使用しませんが、HotSwapケージでは通常のドライブを使用します。
単一のUSBドライブをそのまま使用するので、そのホットスワップケージで単一のドライブを使用するだけで、USBドライブと同じセキュリティを(障害点から)得ることができます。 HotSwapケージを使用して削除することもできる2番目のドライブにファイルのバックアップを作成します。これにより、優れたパフォーマンスと上司が要求する取り外し可能なセキュリティが得られるものになります。また、リムーバブルストレージとしてWindowsに表示されません。優れたコントローラーを使用している場合は、前述のように、システムの実行中にコントローラーを削除することで回避できる場合もありますが、ファイルをDBから切り離す必要があります。バッチスクリプトの一部としてそれを行うことができます。

通常、これらのキーをドライブケージに入れておくと、キーが付いているため、実行中にセキュリティが強化され、誰もそれを持ち歩くことができなくなります。

別のコンピューターからアクセスするには、なんらかの理由で引き出して別のコンピューター(ラップトップなど)からアクセスする必要がある場合、ドライブをそこにドロップするだけでドライブトースターまたはケーブルを入手できます。他のコンピュータでUSB読み取り可能になります。

0
SpaceManSpiff

@ david-spillet sp_attachdbとsp_detach_dbはSQL 2008以降廃止される予定です。そのため、このコマンドは今後使用できません

0
NItya

リムーバブルUSBドライブにデータを保存することで、夜間のドライブをロックして、デスクの下のコンピューターでデータベースを実行するよりも安全性が低下します。

データがUSBドライブに保存されている場合、誰かが通り過ぎて、ドライブのプラグを抜いてポケットに入れれば、それらはなくなってしまいます。データがサーバーの内蔵ドライブに保存されている場合、データを取得するためにコンピューター全体を使用する必要があります。

SQL Server上のデータが本当に重要な場合は、小規模オフィス(または、ACが良好である限りストレージクローゼット)を選び、これをサーバールームとしてマークします。 SQL Serverとサーバープロセスを実行している他のマシンをこの部屋に置き、ドアをロックします。清掃員が清掃するものは何もないことを知っていることを確認してください。その部屋の鍵を取り戻します。

その部屋にアクセスできる必要があるのは、その部屋の鍵を持っている必要がある人だけです。サーバーを管理する人が1人以上です。それらの人々のマネージャーもおそらくキーを望んでいるでしょうが、彼は実際にはキーを必要としません。 ITスタッフに何かが発生した場合に備えて、人事マネージャーのオフィスのロックされた引き出しの密閉された封筒に予備のキーが必要です。

人々がネットワークを介してデータにアクセスするのを防ぐためのネットワーク保護については、通常のベストプラクティス(最小限のアクセス許可、ファイアウォールなど)を介して行う必要があります。

USBドライブでのSQL Serverのパフォーマンスについては、USBが非常に遅いため、サムドライブや外付けハードドライブと同様、パフォーマンスは恐ろしいものになります。

つまり、これを行うべきではありません。

0
mrdenny

USB HDDなどのリムーバブルメディアでSQL Serverデータベースを使用する場合、データベースのパフォーマンスはUSBバンドスイッチによって制限されます。データベースの使用が定期的に1〜2ユーザーに制限されている場合-そのようなソリューションは何らかの形で使用できますが、(または)継続的なアクセスを持つより多くのユーザーの場合-非常に遅くなるか、使用できなくなると思います...

SQL Serverデータベースファイル(リムーバブルHDDではなくRAID)でメディアを暗号化するためにTruecrypt(無料)/ Bestcrypt(商用)ソフトウェアを使用しています。はい、SQL Serverの起動手順は複雑になりますが(毎回手動で[re] startまたはsp___attach_db)、データストレージを適切に保護します(SQL Serverからアクセスできるのはデータ自体ではなく、別の話です)。

0
Sergey