web-dev-qa-db-ja.com

ユーザーとアクセスを管理するための方法論?

これは頭​​を動かすのに苦労していることです。もっと複雑になっているかもしれません。

私がやろうとしているのは、さまざまなアプリケーションを通じて、さまざまなレベルのアクセス権を持つデータベースにユーザーを格納する方法を開発することです。私はこれが以前に行われたことを知っていますが、彼らがそれをどのようにしたかを見つける場所がわかりません。

これが私が達成する必要があることの例です:

UserA - Access to App1, App3, App4 & can add new users to App3, but not 4 or 1. 
UserB - Access to App2 only with ReadOnly access.
UserC - Access to App1 & App4 and is able to access Admin settings of both apps. 

以前は、ユーザーグループを使用していました。ただし、さまざまなアプリケーションの特定の部分への個々のユーザーのアクセスをもう少し制御する必要がある段階に達しています。これは、ユーザーに役割を与え、各役割に最後の役割を継承させることができるのと同じぐらい、単純で乾燥したものであることを願っています。

今、これは私が達成する必要があることです。しかし、私はこれを行う方法を知りません。うまく機能するものを簡単に設計することは簡単にできましたが、これが行われたこと、そしてこれが研究されたことを知っており、この問題は私自身よりもはるかに優れた心によって解決されたことがわかります。

これはWebアプリケーション用で、SQL Server 2008を使用しています。パスワード(LDAP)を保存する必要はなく、保存する必要のある情報は実際には非常に制限されています。基本的に、ユーザー名とアクセス権のみ。

6
developer1234

これは私が管理しているアプリケーションの設定です:

  • Active Directoryには、各グループのユーザーを使用してアプリケーションにアクセスできるグループがあります
  • きめ細かなアクセス許可はグループにリンクされたテーブルに保持されるため、IT担当者はユーザーをActive Directoryグループに追加するだけです
  • active Directoryユーザーをアプリケーションユーザーのテーブルに同期するバグの多いサービス

あなたは必要です

  • ユーザーテーブル:名前、userId(数値)、有効(数値)、およびユーザーがサインオンするすべてのもの。 (通常、イニシャルのようなテキスト文字列)
  • 役割テーブル:数値IDとテキスト識別子を持つActive Directoryグループ
  • アクションテーブル:権限をタイプ別にグループ化:アプリケーションへのアクセス、管理へのアクセス、権限を付与できます。数値識別子と説明文字列を使用して、それぞれのテーブルを作成します。最上位の権限を維持するアプリケーションには、マスターアプリケーションへのアクセス、許可の付与、読み取り、更新、リンクされたサブアプリケーションへのアクセスが含まれます
  • したがって、どのグループにトップレベルの権限があるかを確認するクエリは、次のようになります。

    SELECT cr.NAME "AD_Group"、CR.ID GROUP_ROLE_ID、DECODE(a.NAME、 'APPROVE'、 'Approve Organizations'、 'C​​ONTACTS'、 'C​​ontact information'、 'GRANT'、 'Grant permissions'、a.NAME) 「ステージ/権限」、gp.role_id、gp.action_id、FROMアクションa、general_permission gp、ロールcr WHERE a.ID = gp.action_id AND gp.role_id = cr.ID

ユーザーがログオンすると、LDAPに、どのグループに所属しているかを照会します。次に、グループにどのような権限があるかをデータベースに問い合わせます。自分にやさしく、権限を追加します。

6
kevinsky