2012-03-04 8 views
1

私のシステムは、プロジェクトのユーザーという2つのビジネスオブジェクトタイプで構成されています。ユーザー権限によるユーザー権限を保存する場所と方法

、S /彼ができる:

| Action   | Role    | 
|-----------------|------------------| 
| view projects | Clients   | 
| edit projects | Devs    | 
| manage projects | Managers   | 
| manage users | Administrators | 

問題があり、クライアントは、いくつかの特定のプロジェクトを見ることができます。プロジェクトはパブリックに設定することができます(誰もが見ることができます)。または特定の特定のクライアントに表示されるように設定できます。

開発者は、管理者が設定した自分自身のプロジェクトや他のプロジェクトを編集することができます。管理者は、管理者が特定のプロジェクトの管理者に対してその機能を特に拒否しない限り、ユーザー/プロジェクトを作成および管理できるはずです。 管理者は、すべてのユーザーとすべてのプロジェクトを含む、システム上のすべてのものを管理する完全なアクセス権を持っています。


これは私が達成しようとしているものです。 「どうしたら私を心配しているの?

通常、役割の場合、ユーザーの役割の種類を指定する「役割」列がユーザー表にあります。開発者であるクライアントは同時にいないので、この列はビットマスクである必要はありません。

次の手順は、ユーザーが自分の役割に従ってアクセスできるものを指定するルールシステムを持つことです。これを既存のテーブル(これはちょっと汚い配列フィールドなし)に入れることは不可能なので、別のテーブルが必要になると思います。

これは次のようになります。

| user_id | access | object_type | object_id | 
|---------|---------|-------------|-----------| 
| 45  | allowed | user  | 42  | user 45 can manage user 42 
| 42  | denied | project  | 30  | user 42 cannot do anything with 
               project 30 

表は、ユーザーの役割を使用する必要があります。たとえば、ユーザ45がクライアントの場合、ユーザ42には何もできません(ルールが存在していても)。一方


、私は私はこの1つ上のあまり柔軟性を狙ってるけど、私はこの種の機能を実現する方法はありません受け入れることを拒否。

ので、実際の質問:

  • これは良いアイデアですか?
  • 優れたシステムはありますか?
  • 他の提案はありますか?
+0

参考:http://en.wikipedia.org/wiki/Access_control_list –

答えて

1

これらのプロジェクトを構成する要素は何ですか?データベース、ファイル、フォルダ、または何?

これらのプロジェクトはデータベースプロジェクトですか?

データベース簡単に言えば

CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 


GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'; 
GRANT ALL PRIVILEGES ON project1.* TO 'user1'@'%'; 
GRANT ALL PRIVILEGES ON project2.* TO 'user2'@'%'; 

オプションWITH GRANT OPTION;


これらのプロジェクトは、ファイルとフォルダが含まれている場合、あなたは、ファイルシステムのアクセス権を使用する必要があります。 使用しているオペレーティングシステムとファイルシステムは何ですか? Linuxファイルシステム。

chgrp (change group) 
chown (change owner) 
+0

まあ、それは興味深い考えです。使用しているソフトウェアで既存のACLを使用するプロジェクトは、設定のリストに過ぎません。ユーザー設定+プロジェクトタイプ+ビルドターゲット+ログイン認証情報(FTP/SSHなどを介して接続するなど)。 – Christian

+0

私は完全に組み込み資格情報を使用します。 Mysqlはセキュリティシステムを徹底的にテストしていますので、必要はありません。大規模な頭痛や眠れない夜間にセキュリティ監査を通過することを望むなら、組み込みのACLを使用してください。組み込みのACLに関する質問がある場合、私はそれらのいくつかに答えることができます。 – cybernard

関連する問題