1

私のシナリオ:

さまざまなデータベースにクエリを実行するサービスを開発しようとしています。

上記のステートメントをクリアするには:

  1. 私はサービスという言葉を最も広い意味で使用しています。つまり、データベース所有者に何らかの価値を提供するソフトウェア コンポーネントです。

  2. これらのデータベースは別の会社に属しているため、私の管理下にはありません。Oracle、MS (SQL Server)、MySql、PostgreSQL など、複数のベンダーがサポートされる予定です。また、OLE DB および ODBC 接続もサポートされます。

問題: データベース資格情報と全体的なトラフィックのセキュリティは大きな懸念事項ですが、構成作業は最小限に抑える必要があります。理想的には、サービスの実装ですべてのセキュリティの問題にプログラムで対処し、データベース所有者が有効な接続文字列を提供する以外に構成作業を必要としないようにする必要があります。

通常、データベースの SSL サポートはサーバー証明書を介して行われますが、これはクライアント (データベース所有者) にとって面倒なので避けたいと考えています。私はこれを無駄にする方法を調べてきました。これは、openssl、SSPI、クライアント SSL 証明書、または任意の形式のトンネリングで行われることを願っています。または、それが不可能なだけかもしれません。いくつかのアドバイスは大歓迎です。

4

2 に答える 2

0

データベースでトラフィックを保護しようとする前であっても、データベース所有者にとって非常に煩雑になることなく、このサービスがどのように機能するかを理解するのに少し苦労しています.

特に Oracle を取り上げます (ただし、他のデータベースにも同様の問題があると思います)。サービスがOracleデータベースにアクセスするには、データベースの所有者がファイアウォールに穴を開けて、サーバーが特定のポートでデータベースにアクセスできるようにする必要があるため、IPアドレスを知る必要があります。サーバーのすべての通信を 1 つのポートで行うサービスを構成する必要がある可能性が高くなります (デフォルトでは、Oracle リスナーは、データベースとの実際の対話のためにクライアントを別のポートに頻繁にリダイレクトします)。 )。セキュリティを意識している場合は、データベースをインターネットに直接公開するのではなく、別のマシンに Oracle Connection Manager をインストールして、サーバーとデータベース間の接続をプロキシする必要があります。それか'

次に、データベースとの通信を暗号化する場合は、データベース所有者のネットワークへの VPN 接続を確立する必要があります (これにより、ファイアウォールの問題の一部が解消される可能性があります)。または、Oracle Advanced Security などを使用して暗号化する必要があります。サーバー間の通信を暗号化します。多数の異なる顧客ネットワークへの VPN 接続を作成するには、膨大な構成作業が必要になる可能性があり、顧客ごとに 1 つのサーバーを維持することが必要になる可能性があります。これは、顧客ごとに異なる VPN ソフトウェア要件があり、相互に互換性がない可能性があるためです。Advanced Security オプションは、エンタープライズ エディションの Oracle ライセンスに加えて、顧客が外に出て購入する必要がある追加料金のライセンスです (しかも安くはありません)。君は' これらの他のすべてのフープを飛び越えた後、適切な SSL 証明書を取得することについて心配するようになるだけです。SSL 証明書の交換は、プロセス全体の中で最も簡単な部分のように思えます。

これは、Oracle をサポートするためのものです。他のデータベースのサポートには、同様の一連の手順が含まれますが、正確なプロセスはわずかに異なる傾向があります。

解決しようとしているビジネス上の問題によっては、顧客がネットワーク内の自分のサーバーにインストールしてデータベースに接続し、 HTTPS POST 呼び出しなどを介して中央サーバーにデータを送信するインターフェイス、またはデータベースに送信できる HTTPS 要求と HTTP 経由で返される結果をリッスンするインターフェイス。

于 2011-04-20T20:38:50.767 に答える
0

SSL は、クライアントのデータベースを安全に保つために非常に重要です。しかし、それだけではありません。各データベース アカウントがロックされていることを確認する必要があります。各クライアントは、自分のデータベースにのみアクセスできる必要があります。さらに、すべてのデータベースには厄介な他の権限があります。たとえば、MySQL にはFILE_PRIV、アカウントがファイルの読み取り/書き込みを許可するものがあります。MS-SQL にはxp_cmdshell 、ユーザーが sql から cmd.exe にアクセスできるようにする機能があります (なぜこれを行うのでしょうか!?)。PostgreSQL では、任意の言語でストアド プロシージャを作成でき、そこからあらゆる種類の厄介な関数を呼び出すことができます。

それから、他の問題があります。不正なクエリは、王国への鍵を攻撃者に与えるバッファ オーバーフローを引き起こす可能性があります。すべてのデータベースが最新であることを確認してから、誰も 0-day をドロップしないことを祈る必要があります。

于 2011-02-15T16:28:23.253 に答える