0

私のチームは、Java をフロントエンドとし、PL/SQL をバックエンドとするアーキテクチャを持つ内部 (既知のユーザー) アプリケーションを開発します。そのため、現在、ユーザー/権限を管理するためのより良いソリューションを検討しており、2 つのオプションがあります。

  1. 各ユーザーには、パーミッションが付与された独自のデータベース アカウントがあります。現在、レガシー システムはこのアプローチを使用していますが、データベース オブジェクトの粒度に基づいてアクセス許可を管理するため、私は好きではありません。したがって、ユーザーごとにデータベース接続を行うのは悪い選択だと思います。ここでもっと短所を見ることができますか?

  2. データベースにいくつかのテーブルを作成してユーザーとその権限/プロファイルを保存し、PL/SQL プロシージャを作成してログインを行い、トークンを生成し、他のすべての PL/SQL にパラメーターを含めてこのトークンを検証し、承認します (または承認しません)。実行。

ですから、私に尋ねてください: Web アプリケーションでアクセス許可を管理しないのはなぜですか? 回答: これらの PL/SQL は既に作成されており、すべてのレガシー システムで使用されています。この Web アプリケーションは、それに応じて動作する必要があります (つまり、ユーザーのアクセス許可は PL/SQL とその細分性に基づいて管理する必要があります)。

この場合、どのように進めますか?

4

1 に答える 1

1

データベースの組み込みメカニズムを使用することは、独自のものを展開するよりも常に優先されると思います。そして、それは他の何よりもユーザーのログインに当てはまります。

専用ユーザー アカウントの最大の利点は、特定のセッションを指定ユーザーにリンクできることです。ええ、そうです。しかし重要なのは、一般的なアカウントを持つ Web アプリケーションでは、ユーザー アクティビティを監査したり、何らかのプロセスでパフォーマンスの問題を追跡したりすることは、はるかに難しいということです。

あなたの主な反論に対処するために、ユーザー レベルでデータベース権限を管理する必要はありません。だからこそ、私たちには役割があります。通常のユーザーの場合、役割は十分な権限を提供します。

そう:

  1. アプリケーションが提供するさまざまなビジネス ジョブに一致する一連のロールを定義します。
  2. これらのロールにシステムおよびオブジェクトのアクセス許可を付与します。ロールは追加できることを覚えておいてください (つまり、ロールに対する権限を別のロールに付与できます)。
  3. ユーザーにロールを付与します。

詳細をご覧ください

于 2011-09-16T06:55:18.297 に答える