2016-11-14 1 views
1

私は自分のプロジェクトのデータベースを探していて、これまでにはうまくいなかった新しいデータベースを試してみたいと思います。私が試したいお気に入りの1つは、Postgresですが、必ずしもそうではありません。ユーザーにDB行レベルの権限を設定することはできますか?

可能であれば、私のシステムで認証され、許可されているユーザーの行レベルのアクセス許可を設定することをお勧めします。

と言っています。johnというユーザーがいます。普通のuserです。通常のユーザーであるJohnは自分自身の行のみを作成/更新できますが、他の行は作成せず、データベース内の一部のビューに対して読み取りアクセス権を持ちます。

私はこれらのアクセス許可をアプリケーションレベルで動作させることができますが、データベースで使用できる場合は試してみたいと思います。

この機能をそのまま使用する共通のデータベースはありますか?

答えて

1

はい、実際にはPostgreSQL 9.5(以前のバージョンもある程度)で可能であり、よくサポートされています。

https://www.postgresql.org/docs/9.5/static/ddl-rowsecurity.html

これは、行のセキュリティと呼ばれています。

心に留めておくためのカップルの事:

  1. 時々、実際のP​​ostgreSQLユーザ

に依存しているあなたは、アクセス制御

  • ためcurrent_user変数を使用することができます
  • 柔軟ですアプリケーション開発では、Webアプリケーション上のすべてのタイプの認証済みユーザーに対して個別のデータベースユーザーを持つことは現実的ではありません。これを処理する他の方法があります。

    私のアプリケーションの中には、Webリクエストによって接続が選択されたときにpostgresql変数(set command)を設定するものがあります。これらの変数は、誰が認証されたかを追跡します。次に、ビューを使用してこれらの変数に基づいてアクセスを制御します。この練習の詳細については、コメントしてください。

  • 関連する問題