「野生」でインストールされた場合でもスキーマをプライベートに保つのに適切なDBMS
-
19-08-2019 - |
質問
データベースサーバーに接続するアプリケーションサーバーがあります。ユーザーにインストーラーを提供し、中程度の快適さで、データベーススキーマが安全であることを信頼したいと思います。
インストールしたコンピューターを制御しないことで受け入れる必要があるリスクがあることを理解しています-適切なツールと知識を備えた決意のある人は、メモリを直接見て情報を引き出すことができます。
最初は、16進エディタで簡単に表示されることなく、インストーラーに資格情報を追加することに焦点を当てると考えていました。
ただし、調査を始めたときに、データベースをサイレントインストールし、ユーザーに資格情報を提供しなくても、PostGreSQLの場合、テキストベースの構成ファイル(pg_hba.confを簡単に変更できる) )、サーバーを再起動して、資格情報なしでデータベースへのフルアクセスを有効にします。
このシナリオは他のDBMSで保護されていますか?このシナリオで、ほとんどの商用製品はどのようにスキーマを保護しますか?ほとんどの製品は組み込みデータベースを使用しますか?
編集:一部の製品は、ユーザーが実際に直接操作することのないデータベースに依存していると思われます(おそらく間違っています)。もちろん、ユーザーが必要としないような方法で設計しているため、おそらく組み込みのデータベースを使用しているので、私は決してそれらを見ません。
解決
ほとんどの商用製品はスキーマを保護しません。 2つのキャンプのいずれかに分類されます。
どちらも、製品の主要コンポーネント(給与計算システムなど)にエンタープライズクラスのデータベースを使用しています。この場合、スキーマ/データを非表示にする試みはありません。これらのほとんどの場合、顧客はとにかくデータベースを制御する必要があります-データベースのバックアップ方法の構成、クラスター環境の作成など。
もう1つのケースは、<!> quot; database <!> quot;デスクトップアプリケーション用の小さな設定またはストレージファイルにすぎません(例:FireFoxの履歴データベースとブックマークデータベース)。その場合、組み込みデータベース(FireFoxと同じSQLiteなど)を使用してストリーミング暗号化レイヤー(SEEと呼ばれるこの公式バージョンがあります)を追加するか、組み込みデータベースを使用して暗号化レイヤーを忘れてください。ユーザーが最初にファイルを読むには、独自のデータベースツールをインストールする必要があります。
他のヒント
私が覚えている限り、スキーマを <!> quot; protect <!> quot; する商用製品はありません。スキーマを何から保護しますか?
次の点を考慮してください:
-
結局のところ、RDBMSで何かを保護できるのはデータベースサーバー管理者だけです。そして、この人からスキーマを保護したいですか?
-
私が貸衣装であり、スキーマ内に自分のデータがあった場合、それを直接見ることができ、消費できるようにしたいと思っています。
-
リレーショナルデザインを本当に保護する必要がありますか?それは本当にそんなに面白いですか?隠す価値のあるものを発明しましたか?私は本当にそうは思いません。そして、もしあなたがいるならば、私は前もって謝罪します。
編集:追加のコメント:
使用する製品のほとんどのデータベース内部については気にしません。それが私が彼らのほとんどが彼らを保護するための行動を起こさないと思うもう一つの理由です。それらのほとんどはそれほど興味深いものではありません。
一方で、ユーザーはデータベースの内部を知る必要も、気にする必要もないと強く信じています。しかし、同じレベルで、開発者として、それらを保護しようとする価値はないと思います。はい、ユーザーからそれらを非表示にします。ほとんどの場合、直接アクセスから保護します。スキーマを保護するのは間違っていると思うからではありません。とても難しいことだと思うからであり、開発者として時間を費やす価値はありません。
しかし、最後に、セキュリティ関連のトピックと同様に、唯一の正しい答えは、セキュリティ対策を実装する費用に関係するリスクについてです。
現在のデータベースエンジンは、組み込みまたはサーバースタイルで、データベースのスキーマを簡単に隠すように設計されていないため、ほとんどの人にとって、それを行う開発コストはリスクに比べてはるかに大きくなります。
ただし、ケースは異なる場合があります。
どのような問題を解決しようとしていますか? DBA *が標準データベースに対して望むことを行うことを止めるものは何もありません。また、他の人が指摘しているように、バックアップやデータベースのアップグレードなどのサイト固有のニーズに干渉することは積極的に敵対的です。データベースのコンテンツは多くても暗号化できますが、それでもアプリケーションを実際に実行するための復号化キーを提供する必要があり、意欲的で敵意のあるDBAはおそらくそれを破壊できます。
軍隊とintelligence報機関には間違いなくスキーマさえも高度に分類されたデータベースがありますが、それらが技術的な手段で保護されているのか、銃を持った大規模な男性で保護されているのかはわかりません
(*)pg_hba.confなどのファイルを変更できるDBAまたはシステム管理者。
ほとんどの市販製品はどうですか これでスキーマを保護します シナリオ?
ほとんどの商用製品はスキーマを保護するために何もしないと思います。
このDBMSが実行されているマシンにそのような人が物理的にアクセスできる場合、組み込みDBMSがそのストレージ(この非組み込みハードウェアコンテキストのファイル)をいじるのを止める方法は? 隠蔽によるセキュリティは危険な命題です。
このアイデアには、DRMと同じ問題があります。決心した人によるアクセスを防ぐことはできず、顧客に一般的な痛みと苦痛を与えるだけです。しないでください。
SQLiteはデータベース形式全体を1つのファイルにラップし、その場で暗号化および復号化することができます。もちろん、欠点はユーザーがデータベースを今すぐ使用するためのキーを必要とすることであり、起こりうる唯一の方法は、おそらくコンパイル時にハードコーディングすることでそれを与える場合です(隠蔽によるセキュリティ)または電話ホームスキーム(これが悪い考えである理由のホスト全体)。さらに、有用なバックアップシステムの試みを妨害したため、起動時にひどいパフォーマンスを得るため、彼らはあなたを嫌います。
さらに、実際にスキーマを気にする人はいません。あなたにそれを破るのは嫌いですが、スキーマ設計は難しい問題ではなく、確かに正当な競争上の優位性は決してありません(知識表現やデータウェアハウスのようないくつかの特定の領域を除いて)。スキーマは通常、そもそも保護する価値はありません。
あなたにとって本当に重要な場合は、代わりにホスト型アプリケーションを実行してください。