5

SELECTユーザーがPostGISデータベースで任意のクエリを実行できるようにするSQLサンドボックスを作成したいと思います。基本的に、ユーザーがで遊ぶためのアクセスを許可したいと思いますpsql

書き込みアクセスが許可されている場合、これは明らかにセキュリティ上の問題です。データのクエリが許可されるようなシステムを作成するにはどうすればよいですか。ただし、ユーザーの合理的な可能性はありません。

  1. データベース内のデータを危険にさらす
  2. サーバーへのより広範なアクセスの取得
  3. そのようなクエリでシステムを壊すと、SELECT * from long_table, long_table, long_table, long_table, long_table, long_table, long_table実行に一生かかります

できるだけ具体的に答えてください。

4

5 に答える 5

3

問題#1と#2は、他の人が指摘したように、アクセス許可の明示的なGRANTとREVOKEによって処理されます。

#3については、

ALTER ROLE <rolename> SET statement_timeout = '60000'

いつも私のためにうまくいっています。これにより、1 分 (60000 ミリ秒) を超えて実行されるすべてのクエリが終了します。これは、phpPgAdmin でユーザーが作成したいくつかのクエリで問題が発生した後に発見されました...

于 2010-08-05T14:40:19.493 に答える
2

さて、あなたは本当にロールを作成する必要がありそれからあなたが許可したいものへの明示的な読み取り専用アクセスを許可する必要があります。あなたが許可しないものは何でも、彼らはできません(彼らがスーパーユーザーでない限り)。

読み取り専用アクセスを許可していて、スーパーユーザーでない場合は、基盤となるシステムにアクセスできないはずです。これは、postgresを非特権ユーザーとしてインストールするべきではないということではありません。単に、リストしたことを実行する必要がないということです。

わかりました。投稿を編集して、クレイジーなクエリの発行を含めました。現在、postgresにユーザーあたりのクエリリソースを制限する方法があるとは思いません。

于 2010-08-05T06:34:16.880 に答える
1

postgresを非特権ユーザーとしてインストールし、そのように実行することができます。このようにして、既存のシステム権限を利用して、自分のデータベースへのアクセスを分離するなど、ユーザーがデータベースで実行できることを制限します。このページの下部にある手順を参照してください。

http://www.postgresql.org/docs/current/interactive/tutorial-start.html

これの一部を自動化する場合は、実行する「setuppostgres」コマンドをユーザーに提供するとします。

于 2010-08-05T06:52:09.137 に答える
1

#3 については、クエリ アクティビティを監視し、postgre のシステム ビューを使用して、いくつかの基準に基づいて CRAZY と見なされるクエリを強制終了するコードを記述できますか?

于 2010-08-05T13:41:50.530 に答える
0

#3 は、ユーザーが独自の SQL を実行できる場合、防ぐことはできません。事前定義された SQL を実行する (小さな) アプリケーションが必要です。ここでは VIEW でさえ役に立ちません。誰もがいくつかのビューに参加して、システムを無効にすることができます。

于 2010-08-05T06:45:41.397 に答える