
私が勤務する小さな会社の経営陣は SaaS に非常に興味を持ち、自社製品を SaaS 展開に推し進めています。この製品の機能の一部は、ユーザーがビジネス インテリジェンス ツールを使用して、アプリケーションの基盤となるデータベースに対してレポートを作成できることを前提としているため、私はこのことに懸念を抱いています。
SaaS モデルでその機能をどのように提供するつもりなのかと尋ねると、呆然とした表情で答えられ、単にデータベース サーバーをインターネット上に公開し、ユーザーが企業ネットワーク内で実行されているかのようにデータベースをクエリできるようにする、という返事が返ってきます。
これは私をひどく怖がらせますが、私がただ妄想しているだけなのか、それとも心配するほどの大きな理由があるのかはわかりません。
そこで質問です。Oracle データベース サーバーのセキュリティを適切に強化して、インターネット上に公開されることを心配しなくて済むようにすることは可能でしょうか。可能であれば、これを行う方法を学ぶためにどのようなリソースを調査すればよいでしょうか。データベースには、クライアントが世界に公開したくない独自の情報が保存されますが、この機能を VPN の背後に配置するという提案は完全に拒否されました。
Oracle データベースの強化に関する私の検索には、ほぼすべて「ファイアウォールに穴を開けないでください」という内容の記述が含まれていたため、ここでの正しい答えは「できるだけ早く履歴書を更新してください」である可能性がありますが、どのようなアドバイスでもいただければ幸いです。
答え1
データベースを公開することは、実際には巨人world+dog に公開されることが多い他のサービスと比較すると、これは問題ではありません... ただし、これは権限のエスカレーションなど、多くの潜在的な脆弱性がある複雑なシステムです。データベースを公開クエリに公開しないようにし、SSL を必須にして実行するなどしてください。可能だとは思いますが、確かに、警戒心を抱き、公開用のデータベースを別途インストールしておく必要があります。会社がライセンス費用を支払う気がないのであれば、さっさと逃げてください。
顧客/サポート側から見ると、顧客の ISP が特定の種類のポートまたはトラフィックをブロックしている場合、データベースに直接接続することが問題になる可能性があります。
SaaS モデルでは、一般的にプログラマーに期待するのは、アプリケーションからクエリできる API を作成することです。この種の API は通常、https 経由で動作し、HTTP 応答でアプリケーションにデータを返します。追加のボーナス: Web が機能する場所ならどこからでも動作し、memcached またはその他のキャッシュ テクノロジを使用して結果セットをキャッシュして db サーバーの負荷を軽減するのは非常に簡単です。また、http 認証は十分にサポートされ、テストされています。
答え2
DMZ に 2 番目のデータベース サーバーを設定し、そのデータベースにダンプをインポートして、そのデータベースを公開できるようにします。
答え3
皆さんも同意していただけると思いますが、定義上、アクセスとセキュリティはトレードオフの関係にあります。そして、機密データにアクセスできるようにするという任務が課せられています。
簡単に答えると、ファイアウォールのトリック、堅牢なネットワーク アーキテクチャ、更新されたパッチ セット、アクセス監査、および大量のバックアップによって、多くのリスクを軽減できます。
パスワード管理も実現が難しいものとして思い浮かびます。多くの場合、アプリケーション アカウントには期限のないパスワードが設定されており、パスワードを知っている元従業員がデータにアクセスできないように物理/ネットワーク アクセス制御が実施されています。データベース サーバーがインターネット全体に公開されている場合、これは実行が困難なことのように思われます。
また、おそらく「侵害されたら、次に何をすべきか」という戦略を定義して、関係者全員の期待を平等に設定し、運が尽きたときの行動計画を立てることも必要になるでしょう。
答え4
SaaSは商品です。
データベース サーバーをインターネットに公開するのはあまり良くありません。
なぜ公開する必要があるのでしょうか? RPC のためであり、静的 RPC ポートを使用したくないからでしょうか?
しかし、優れたアプリケーション ファイアウォールがいくつかあり、DB のエンドマッパー ポートをロックダウンしてからファイアウォールを設定すれば、ACL、IP 制限などを使用して優れた機能を実現できます。
また、イベント ログや脆弱性スキャンなどを監査する必要があります。