2010-11-27 9 views
5

削除や編集をしないようにするために必要なミッションクリティカルなテーブルがあります。可能なアクションはそこから読み取ることだけで、dbaはさらに行を追加できます。それでおしまい。superadmin/dbaでテーブルの削除/更新を防止しますか?

セキュリティを強化するために、dbaがレコードを削除/変更できないようにしたいので、基本的に誰もレコードを削除したり変更したりすることはできません。これらのテーブルは、無期限に保存する必要のあるデータや、重要なルックアップテーブルなどの特定のタイプのユーザーのアクティビティを追跡するために重要です。そのため、システムのロックされた値とユーザーの値が混在しています。

アイデアは、誰かがそのデータベースを強制終了するために必要なデータを破壊したい場合です。これを行う方法はありますか?

答えて

5

スーパーユーザーは、常にデータベースを管理していません。あなたは権限を更新して削除することを取り消すことができますが、スーパーユーザーはこれらの権限を自分自身に再度与えることができます。

+0

管理者権限のある不正な人がいる場合は何もできません。政府のシステムに関する情報をどのように管理していますか? – Markus

+2

トラスト。すべてのシステムは、特にスーパーユーザーによってハッキングされる可能性があるため、そうする権限がなければなりません。そして、誰もがスーパーユーザーのアクセスを与えるわけではありません、必要はありません。バックアップを忘れないでください。非常に安全な場所に保管しないとハッキングする可能性があります。人と仕事をするときのセキュリティは非常に困難です。 http://wiki.postgresql.org/wiki/SEPostgreSQL –

0

MySQLの場合、次の方法をとることができます。

アプリケーションアカウントを作成したら、スーパーユーザーアカウントを削除します(実際には、「WITH GRANT OPTION」のアカウント)。システム管理者アカウントには、システムの停止と起動の権限のみが必要ですが、機密テーブルからの読み取りは許可されません。

次に、MEMORYエンジンを使用するようにテーブルを変更します。つまり、アプリケーション管理者(DBAではなく)は、データベースを再起動するたびにコンテンツを復元する必要があります。また、再起動時にデータが蒸発するため、DBAは「スキップ・グラント」オプションを使用してデータベースを再起動することはできません。 (ただし、システムのルートユーザーは常にシステムメモリをダンプしてそのデータを見つけることができます)。

より良いアプローチは、アプリケーション管理者だけが知っているキーでアプリケーションのデータを暗号化することです。

+0

Postgresには* MEMORYエンジンがありません。 –

+0

これで同じ問題が発生しましたが、別の場所にいます。とにかくスーパーユーザーを削除することはできません。スーパーユーザーのアクセス許可が必要です。 –

+0

@a_horse_with_no_name:ごめんなさい、私はPostgresタグに気づいていませんでした。私はそれがMySQL特有であると言う答えを更新しました。 – Martin

2

スーパーユーザーが何かをするのを防ぐ方法はありません。あなたが行うことができる唯一のことは、のANYユーザーがからACCIDENTALLYのレコードを削除または更新するのを防ぐことです。これは、更新時および削除時にルールを作成することで実現できます。

CREATE [ OR REPLACE ] RULE name AS ON event 
    TO table [ WHERE condition ] 
    DO [ ALSO | INSTEAD ] { NOTHING | command | (command ; command ...) } 

は、参考のために、このlinkを参照してください。

関連する問題